Studocu

Find Studocu study documents, courses and institutions, and manage study projects and quizzes.

Sollte ich dies verwenden

Qualität und Sicherheit

B
Qualität der Beschreibung
98%
Vollständigkeit des Schemas
89%
Qualität der Benennung
68%
Risiko der Vergiftung
80%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Befunde (23)

  • HIGHTool poisoning patterns detected
  • LOWTool 'write-memory' description lacks action verbin write-memory
  • LOWTool 'search-documents' doesn't follow camelCase/snake_casein search-documents
  • LOWTool 'search-institutions' doesn't follow camelCase/snake_casein search-institutions
  • LOWTool 'search-courses' doesn't follow camelCase/snake_casein search-courses
  • LOWTool 'search-web' doesn't follow camelCase/snake_casein search-web
  • LOWTool 'get-course-syllabus' doesn't follow camelCase/snake_casein get-course-syllabus
  • LOWTool 'agent-os-session' doesn't follow camelCase/snake_casein agent-os-session
  • LOWTool 'read-web-url' doesn't follow camelCase/snake_casein read-web-url
  • LOWTool 'read-artifact' doesn't follow camelCase/snake_casein read-artifact

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~14,785Tokens (Tool-Definitionen)
~7.2 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (11.55% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "studocu": {
      "url": "https://agent-os-mcp.alpha.studocu.com/mcp"
    }
  }
}

Remote-Endpunkte

https://agent-os-mcp.alpha.studocu.com/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (20)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢search-documents(query, institution, course, course_id, limit)

Use this when the user wants to find, search, or browse study documents, lecture notes, summaries, or course materials on Studocu. Pass topic/keywords as `query` only — never put course name, course id, or institution name in `query`. `institution` is a display name only (this tool has no institution_id). Prefer numeric `course_id` from search-courses when you have it: it pins the course and overrules `course`. If both `course_id` and `institution` are sent, `course_id` wins; result institution is that course's university, not the name you passed. Otherwise pass `course` as name or code, never as a numeric id. `course` is optional extra if you already have `course_id`. Omit unknown filters. Returns matching documents with titles, course and institution info, ratings, and a link to view each on Studocu. For open-web sources outside Studocu, use search-web instead.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "description": "Topic/keywords only (e.g. \"supply and demand\", \"microeconomics midterm 2025\"). Never put course name, course id, or institution name here — use `institution`, `course`, and `course_id` instead."
    },
    "institution": {
      "description": "Institution display name only, e.g. \"University of Amsterdam\". Not an id — this tool has no `institution_id`. Infer it from the user message or conversation context when available; omit entirely if unknown. If `course_id` is also set, `course_id` wins; result institution is that course's university, not this name.",
      "type": "string"
    },
    "course": {
      "description": "Course name or code only, e.g. \"Economics\" or \"ECON101\". Use when you do not have `course_id`. Never put a numeric id here. Optional extra if you also have `course_id`. Omit entirely if unknown.",
      "type": "string"
    },
    "course_id": {
      "description": "Numeric Studocu course ID from search-courses `course_id`. Prefer this: it pins the course and overrules `course` name/code. Omit if you only have a name/code.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647
    },
    "limit": {
      "default": 10,
      "description": "Number of results to return (1-50, default: 10).",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "required": [
    "query"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "documents": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "course": {
            "type": "string"
          },
          "institution": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "ratingPositive": {
            "type": "number"
          },
          "ratingNegative": {
            "type": "number"
          },
          "publishedAt": {
            "type": "string"
          },
          "academicYears": {
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "description": {
            "type": "string"
          },
          "numberOfPages": {
            "type": "number"
          },
          "language": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "url"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "documents"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢search-institutions(query, limit, type)

Search Studocu institutions by name when establishing or correcting education context (onboarding / context setup). Do not require this before every document search. Structured results include id, name, type, region_code, and country for follow-up tools. When talking to the user, present name/type/country/region only — do not show internal IDs. Auto-pick a clear top match; if the shortlist is ambiguous, ask the user to choose by name. Resolved IDs are conversation-scoped until a persistence capability owns them.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "limit": {
      "default": 3,
      "type": "integer",
      "minimum": 1,
      "maximum": 10
    },
    "type": {
      "type": "string",
      "enum": [
        "UNIVERSITY",
        "HIGH_SCHOOL"
      ]
    }
  },
  "required": [
    "query"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "institutions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "UNIVERSITY",
              "HIGH_SCHOOL"
            ]
          },
          "region_code": {
            "type": "string"
          },
          "country": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "type",
          "region_code",
          "country"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "institutions"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢search-courses(query, institution_id, limit)

Search Studocu courses when establishing or correcting course context. Prefer institution_id from search-institutions to scope results. Omit institution_id only when the institution is unknown: results then include catalog institution_id, and institution_name when Algolia has it. Do not require this before every document search. Structured results include course_id, name, code (nullable), institution_id, and optional institution_name. When talking to the user, present name, course code, and institution name only — do not show internal IDs. Auto-pick a clear top match; if the shortlist is ambiguous, ask the user to choose by name/code. Resolved IDs are conversation-scoped until a persistence capability owns them.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "institution_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647
    },
    "limit": {
      "default": 3,
      "type": "integer",
      "minimum": 1,
      "maximum": 10
    }
  },
  "required": [
    "query"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "courses": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "course_id": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "name": {
            "type": "string"
          },
          "code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "institution_id": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "institution_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "course_id",
          "name",
          "code",
          "institution_id"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "courses"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢search-web(query, site)

Answer open-web questions with a grounded response and citation URLs (news, reference sites, documentation). Use this for non-Studocu sources. For Studocu study documents, lecture notes, summaries, or course materials, use search-documents instead. Competitor study-material domains are excluded from results.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 7500,
      "description": "Open-web question or search prompt (external sources only). For Studocu study documents, lecture notes, or course materials use search-documents instead."
    },
    "site": {
      "description": "Optional domain filter, e.g. \"rijksoverheid.nl\". Restricts search to that site when supported.",
      "type": "string",
      "minLength": 1,
      "maxLength": 1000
    }
  },
  "required": [
    "query"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "description": "Grounded answer text, including inline citation links when present."
    },
    "citations": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "domain": {
            "type": "string"
          }
        },
        "required": [
          "title",
          "url",
          "domain"
        ],
        "additionalProperties": false
      },
      "description": "Sources used for the answer, with title, URL, and domain."
    }
  },
  "required": [
    "text",
    "citations"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get-course-syllabus(course_id)

Return a generated course outline as markdown when this tool has one. This is the best grounding for high-quality study guidance. Requires course_id.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "course_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Studocu course id whose published syllabus should be loaded."
    }
  },
  "required": [
    "course_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "course_id": {
      "type": "string",
      "minLength": 1,
      "description": "Course id whose published syllabus was loaded."
    },
    "content": {
      "type": "string",
      "description": "Published syllabus text for this course."
    }
  },
  "required": [
    "course_id",
    "content"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢agent-os-session

Use this proof tool to verify that the Agent OS MCP server received a valid delegated Studocu session.

Eingabe-Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "authenticated": {
      "type": "boolean"
    },
    "subject": {
      "type": "string"
    },
    "clientId": {
      "type": "string"
    },
    "scopes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "authenticated",
    "clientId",
    "scopes"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢read-web-url(url, query)

Read a specific public URL and return grounded page content for agent evidence. Use this when you already have the exact URL. For Studocu study documents use search-documents; for open-web discovery use search-web. Competitor study-material hosts are rejected.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000,
      "format": "uri",
      "description": "Public http or https URL to read for agent evidence. For Studocu study documents use search-documents; for open-web discovery use search-web."
    },
    "query": {
      "description": "Optional focus question or extraction instruction for the page content.",
      "type": "string",
      "minLength": 1,
      "maxLength": 7500
    }
  },
  "required": [
    "url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "description": "Grounded text extracted from the URL for agent use."
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "The requested URL that was read."
    }
  },
  "required": [
    "text",
    "url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢read-artifact(artifact_id, cursor)

Read a Studocu project source or creation by its studocu://project/{project_id}/{kind}/{uuid} URI. Returns normalized metadata with explicitly mapped inline content.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "artifact_id": {
      "type": "string",
      "minLength": 1,
      "description": "Artifact URI in the form studocu://project/{project_id}/{kind}/{uuid}."
    },
    "cursor": {
      "description": "Opaque continuation cursor returned by a previous read.",
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "artifact_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "artifactId": {
      "type": "string"
    },
    "projectId": {
      "type": "string"
    },
    "details": {
      "type": "object",
      "properties": {
        "kind": {
          "type": "string",
          "enum": [
            "source",
            "creation"
          ]
        },
        "id": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
          "description": "NOTE: These shared primitives are copied from the AI API spec and owned\nlocally by Agent OS to keep this contract decoupled."
        },
        "title": {
          "type": "string"
        },
        "status": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "pending",
                "processing",
                "ready",
                "completed",
                "failed"
              ]
            },
            {
              "type": "string",
              "enum": [
                "creating",
                "created",
                "failed"
              ]
            }
          ]
        },
        "type": {
          "type": "string"
        },
        "folder": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "content": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991,
                  "description": "Use this ID to fetch the Quiz from the Rest API."
                },
                "title": {
                  "type": "string"
                },
                "count": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9007199254740991
                },
                "questions": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "string"
                          }
                        ]
                      },
                      "title": {
                        "type": "string"
                      },
                      "body": {
                        "type": "string"
                      },
                      "text": {
                        "type": "string"
                      },
                      "type": {
                        "type": "string"
                      },
                      "difficulty": {
                        "type": "string"
                      },
                      "question": {
                        "type": "string"
                      },
                      "explanation": {
                        "type": "string"
                      },
                      "explanationMd": {
                        "type": "string"
                      },
                      "correctAnswer": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "string"
                          }
                        ]
                      },
                      "correctAnswerIds": {
                        "type": "array",
                        "items": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": -9007199254740991,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "options": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": -9007199254740991,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "text": {
                              "type": "string"
                            },
                            "correct": {
                              "type": "boolean"
                            },
                            "isCorrect": {
                              "type": "boolean"
                            }
                          },
                          "required": [
                            "id",
                            "text"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "answers": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": -9007199254740991,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "answer": {
                              "type": "string"
                            },
                            "isCorrect": {
                              "type": "boolean"
                            }
                          },
                          "required": [
                            "id",
                            "answer",
                            "isCorrect"
                          ],
                          "additionalProperties": false
                        }
                      }
                    },
                    "additionalProperties": false
                  }
                }
              },
              "required": [
                "id",
                "title",
                "count",
                "questions"
              ],
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Use this ID to fetch the Mock Exam from the API."
                },
                "hasPdf": {
                  "anyOf": [
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "data": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Use this ID to fetch the Mock Exam from the API."
                    },
                    "schemaVersion": {
                      "type": "string"
                    },
                    "title": {
                      "type": "string"
                    },
                    "frontMatter": {
                      "type": "object",
                      "properties": {
                        "instructionsMarkdown": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    },
                    "content": {
                      "type": "array",
                      "items": {
                        "anyOf": [
                          {
                            "allOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "section"
                                    ]
                                  },
                                  "id": {
                                    "type": "string"
                                  },
                                  "title": {
                                    "type": "string"
                                  },
                                  "questionType": {
                                    "type": "string"
                                  },
                                  "instructions": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "id",
                                  "questionType"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "const": "section"
                                  }
                                },
                                "required": [
                                  "kind"
                                ],
                                "additionalProperties": false
                              }
                            ]
                          },
                          {
                            "allOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "stimulus"
                                    ]
                                  },
                                  "id": {
                                    "type": "string"
                                  },
                                  "title": {
                                    "type": "string"
                                  },
                                  "stimulusMarkdown": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "id",
                                  "stimulusMarkdown"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "const": "stimulus"
                                  }
                                },
                                "required": [
                                  "kind"
                                ],
                                "additionalProperties": false
                              }
                            ]
                          },
                          {
                            "allOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "question"
                                    ]
                                  },
                                  "id": {
                                    "type": "string"
                                  },
                                  "sectionId": {
                                    "type": "string"
                                  },
                                  "type": {
                                    "type": "string"
                                  },
                                  "marks": {
                                    "type": "number"
                                  },
                                  "questionMarkdown": {
                                    "type": "string"
                                  },
                                  "stimulusIdRefs": {
                                    "anyOf": [
                                      {
                                        "type": "array",
                                        "items": {
                                          "type": "string"
                                        }
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "options": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "id": {
                                          "anyOf": [
                                            {
                                              "type": "integer",
                                              "minimum": -9007199254740991,
                                              "maximum": 9007199254740991
                                            },
                                            {
                                              "type": "string"
                                            }
                                          ]
                                        },
                                        "text": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "id",
                                        "text"
                                      ],
                                      "additionalProperties": false
                                    }
                                  },
                                  "templateMarkdown": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "blanks": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "id": {
                                          "type": "string"
                                        },
                                        "label": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "id"
                                      ],
                                      "additionalProperties": false
                                    }
                                  },
                                  "grading": {
                                    "type": "object",
                                    "properties": {
                                      "correctAnswerIds": {
                                        "type": "array",
                                        "items": {
                                          "type": "string"
                                        }
                                      },
                                      "correctAnswer": {
                                        "type": "string"
                                      },
                                      "modelAnswer": {
                                        "type": "string"
                                      },
                                      "keyPoints": {
                                        "type": "array",
                                        "items": {
                                          "type": "string"
                                        }
                                      }
                                    },
                                    "required": [
                                      "modelAnswer"
                                    ],
                                    "additionalProperties": false
                                  },
                                  "topics": {
                                    "anyOf": [
                                      {
                                        "type": "array",
                                        "items": {
                                          "type": "string"
                                        }
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  }
                                },
                                "required": [
                                  "kind",
                                  "id",
                                  "sectionId",
                                  "type",
                                  "marks",
                                  "questionMarkdown"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "const": "question"
                                  }
                                },
                                "required": [
                                  "kind"
                                ],
                                "additionalProperties": false
                              }
                            ]
                          }
                        ]
                      }
                    }
                  },
                  "required": [
                    "id",
                    "schemaVersion",
                    "title",
                    "content"
                  ],
                  "additionalProperties": false
                }
              },
              "required": [
                "id",
                "hasPdf",
                "data"
              ],
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Use this ID to fetch the lesson metadata from the API."
                },
                "data": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Use this ID to fetch the lesson metadata from the API."
                    },
                    "title": {
                      "type": "string"
                    },
                    "description": {
                      "type": "string"
                    },
                    "outline": {
                      "type": "object",
                      "properties": {
                        "learning_goal": {
                          "type": "string"
                        },
                        "title": {
                          "type": "string"
                        },
                        "exercises": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "exercise_id": {
                                "type": "string"
                              },
                              "topic_id": {
                                "type": "string"
                              },
                              "title": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "exercise_id",
                              "title"
                            ],
                            "additionalProperties": false
                          }
                        }
                      },
                      "required": [
                        "learning_goal",
                        "title",
                        "exercises"
                      ],
                      "additionalProperties": false
                    },
                    "exercises": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "position": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991
                          },
                          "title": {
                            "type": "string"
                          },
                          "concept_explanation": {
                            "type": "object",
                            "properties": {
                              "paragraph1": {
                                "type": "string"
                              },
                              "paragraph2": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "paragraph1",
                              "paragraph2"
                            ],
                            "additionalProperties": false
                          },
                          "mcq": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "question": {
                                  "type": "string"
                                },
                                "options": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "anyOf": [
                                          {
                                            "type": "integer",
                                            "minimum": -9007199254740991,
                                            "maximum": 9007199254740991
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "text": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "text"
                                    ],
                                    "additionalProperties": false
                                  }
                                }
                              },
                              "required": [
                                "question",
                                "options"
                              ],
                              "additionalProperties": false
                            }
                          },
                          "open_ended": {
                            "type": "object",
                            "properties": {
                              "question": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "question"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "id",
                          "position",
                          "title",
                          "concept_explanation",
                          "mcq",
                          "open_ended"
                        ],
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "id",
                    "title",
                    "description",
                    "outline",
                    "exercises"
                  ],
                  "additionalProperties": false
                }
              },
              "required": [
                "id",
                "data"
              ],
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Use this ID to fetch the flashcard set from the API."
                },
                "data": {
                  "type": "object",
                  "properties": {
                    "title": {
                      "type": "string",
                      "minLength": 1
                    },
                    "description": {
                      "type": "string"
                    },
                    "flashcards": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "front": {
                            "type": "string",
                            "minLength": 1
                          },
                          "back": {
                            "type": "string",
                            "minLength": 1
                          }
                        },
                        "required": [
                          "front",
                          "back"
                        ],
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "title",
                    "description",
                    "flashcards"
                  ],
                  "additionalProperties": false
                }
              },
              "required": [
                "id",
                "data"
              ],
              "additionalProperties": false
            },
            {
              "type": "string"
            }
          ]
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
        },
        "updatedAt": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
            },
            {
              "type": "null"
            }
          ]
        },
        "category": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "file/audio",
                "file/image",
                "file/pdf",
                "file/markdown",
                "studocu/document"
              ]
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "kind",
        "id",
        "title",
        "status",
        "type",
        "folder",
        "content",
        "createdAt",
        "updatedAt"
      ],
      "additionalProperties": false
    },
    "continuations": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "enum": [
              "details.content.questions"
            ]
          },
          "returned": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "total": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "hasMore": {
            "type": "boolean"
          },
          "nextCursor": {
            "type": "string",
            "minLength": 1
          }
        },
        "required": [
          "path",
          "returned",
          "total",
          "hasMore"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "artifactId",
    "projectId",
    "details"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢read-detached-document(document_id)

Read a Studocu document directly, without requiring or creating a project source. Use read-artifact for documents attached to a project.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "document_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Studocu document ID to read without creating a project source."
    }
  },
  "required": [
    "document_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "content": {
      "type": "string",
      "description": "The raw full text content of the Studocu document."
    }
  },
  "required": [
    "content"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get-context(project_id, course_id, recent_only, active_only)

Return the unified Agent OS context manifest for the authenticated user: profile, followed courses, project metadata, and recent activity. Every project includes has_course_mastery and started_course_mastery (course supports Infinite Practice / learner has started it). Course mastery is visible only on projects, not followed_courses. Practised-topic detail (topic_masteries) is included only when a course is in scope (project_id, a sole remaining project, or remaining projects that share one course_id); the field is omitted when detail was not loaded. Empty topic_masteries means that course was loaded and the learner has no practised topics. Use get-course-mastery(course_id) for the practised-topic list when context omitted detail. Agent OS is read-only: chatting or calling this tool does not change mastery. Source of truth is Infinite Practice attempts (identity + course + topic); web IP writes, ACE/mobile/Agent OS only read.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "project_id": {
      "description": "Narrow context to a single project by id.",
      "type": "string",
      "minLength": 1
    },
    "course_id": {
      "description": "Narrow context to a single followed course and its projects.",
      "anyOf": [
        {
          "type": "string",
          "minLength": 1
        },
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        }
      ]
    },
    "recent_only": {
      "description": "Limit the manifest to recently active context.",
      "type": "boolean"
    },
    "active_only": {
      "description": "Limit the manifest to active context.",
      "type": "boolean"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "context_schema_version": {
      "type": "number",
      "const": 1
    },
    "generated_at": {
      "type": "string"
    },
    "requested_filters": {
      "type": "object",
      "properties": {
        "project_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "course_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "recent_only": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "active_only": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "project_id",
        "course_id"
      ],
      "additionalProperties": false
    },
    "data": {
      "type": "object",
      "properties": {
        "profile": {
          "type": "object",
          "properties": {
            "first_name": {
              "type": "string"
            },
            "last_name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "locale": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "study_year": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "null"
                }
              ]
            },
            "level": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "gender": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "stage": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "null"
                }
              ]
            },
            "institution": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string"
                    },
                    "name": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "id",
                    "type",
                    "name"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "first_name",
            "last_name",
            "locale",
            "study_year",
            "level",
            "gender",
            "stage",
            "institution"
          ],
          "additionalProperties": false
        },
        "followed_courses": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "course_id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "institution_id": {
                "type": "string"
              }
            },
            "required": [
              "course_id",
              "name"
            ],
            "additionalProperties": false
          }
        },
        "memory": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string"
              },
              "value": {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              },
              "updated_at": {
                "type": "string"
              }
            },
            "required": [
              "kind",
              "value"
            ],
            "additionalProperties": false
          }
        },
        "projects": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "project_id": {
                "type": "string"
              },
              "metadata": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1
                  },
                  "is_mobile": {
                    "type": "boolean"
                  },
                  "emoji": {
                    "type": "string",
                    "minLength": 1
                  },
                  "course_id": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "institution_id": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "course_name": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "thread_id": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "pending_sources_count": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "pending_creations_count": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "required": [
                  "title",
                  "is_mobile",
                  "emoji",
                  "course_id",
                  "institution_id"
                ],
                "additionalProperties": false
              },
              "memory": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string"
                    },
                    "value": {
                      "type": "object",
                      "propertyNames": {
                        "type": "string"
                      },
                      "additionalProperties": {}
                    },
                    "updated_at": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "kind",
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "has_course_mastery": {
                "type": "boolean"
              },
              "started_course_mastery": {
                "type": "boolean"
              },
              "topic_masteries": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "topic_id": {
                      "type": "string",
                      "minLength": 1
                    },
                    "topic_name": {
                      "type": "string",
                      "minLength": 1
                    },
                    "mastery": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 100
                    },
                    "questions_answered": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 9007199254740991
                    }
                  },
                  "required": [
                    "topic_id",
                    "mastery",
                    "questions_answered"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "required": [
              "project_id",
              "metadata",
              "memory",
              "has_course_mastery",
              "started_course_mastery"
            ],
            "additionalProperties": false
          }
        }
      },
      "required": [
        "profile",
        "followed_courses",
        "memory",
        "projects"
      ],
      "additionalProperties": false
    },
    "aggregates": {
      "type": "object",
      "properties": {
        "recent_activity": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string"
              },
              "id": {
                "type": "string"
              },
              "seen_at": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "title": {
                "type": "string"
              }
            },
            "required": [
              "type",
              "id",
              "seen_at"
            ],
            "additionalProperties": false
          }
        }
      },
      "additionalProperties": false
    },
    "prompt_views": {
      "type": "object",
      "properties": {
        "by_project": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "type": "object",
            "properties": {
              "section": {
                "type": "string"
              },
              "body": {
                "type": "string"
              }
            },
            "required": [
              "section",
              "body"
            ],
            "additionalProperties": false
          }
        },
        "user_wide_summary": {
          "type": "object",
          "properties": {
            "section": {
              "type": "string"
            },
            "body": {
              "type": "string"
            }
          },
          "required": [
            "section",
            "body"
          ],
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    }
  },
  "required": [
    "context_schema_version",
    "generated_at",
    "requested_filters",
    "data"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get-project-state(ids)

Return sources and creations (project state) for one or more projects by id. Creation rows may include external_id (quizId or mockExamId) so a request-creation creating response can be matched once Alpha identity appears. Use after get-context (which lists projects without their sources/creations) to load those projects' artifacts. Only projects you can access are returned.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "ids": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      },
      "description": "The project ids to load sources and creations (project state) for. Only projects you can access are returned."
    }
  },
  "required": [
    "ids"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "projects": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "project_id": {
            "type": "string"
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "artifact_id": {
                  "type": "string"
                },
                "kind": {
                  "type": "string",
                  "const": "source"
                },
                "type": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "capabilities": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "summary": {
                  "type": "string"
                },
                "status": {
                  "type": "string"
                },
                "agent_input_type": {
                  "type": "string"
                },
                "lineage_id": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "created_at": {
                  "type": "string"
                },
                "updated_at": {
                  "type": "string"
                }
              },
              "required": [
                "artifact_id",
                "kind",
                "type",
                "title",
                "capabilities"
              ],
              "additionalProperties": false
            }
          },
          "creations": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "artifact_id": {
                  "type": "string"
                },
                "kind": {
                  "type": "string",
                  "const": "creation"
                },
                "type": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "capabilities": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "summary": {
                  "type": "string"
                },
                "status": {
                  "type": "string"
                },
                "agent_input_type": {
                  "type": "string"
                },
                "lineage_id": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "created_at": {
                  "type": "string"
                },
                "updated_at": {
                  "type": "string"
                },
                "external_id": {
                  "description": "Kind-specific downstream id (quizId or mockExamId) for matching a pending request-creation.",
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                }
              },
              "required": [
                "artifact_id",
                "kind",
                "type",
                "title",
                "capabilities"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "project_id",
          "sources",
          "creations"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "projects"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get-course-mastery(course_id)

Return practised-topic Infinite Practice mastery for a course (topic_id, topic_name when available, display 0–100, questions_answered). Use after get-context flags (has_course_mastery / started_course_mastery) or whenever context omitted topic_masteries. Agent OS is read-only: chatting, creating artifacts, or calling this tool does not change mastery. Source of truth is Infinite Practice attempts (user_topic_mastery: identity + course + topic); display matches the web IP UI. Progress is learner- and course-scoped, not chat- or client-scoped — web IP writes it; ACE/mobile/Agent OS only read the same rows. Empty topic_masteries means no IP attempts yet, not a separate client score. Requires course_id.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "course_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Course id to load practised-topic Infinite Practice mastery for."
    }
  },
  "required": [
    "course_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "course_id": {
      "type": "string",
      "minLength": 1,
      "description": "Course id whose mastery was loaded, matching followed_courses.course_id."
    },
    "topic_masteries": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "topic_id": {
            "type": "string",
            "minLength": 1
          },
          "topic_name": {
            "type": "string",
            "minLength": 1
          },
          "mastery": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100
          },
          "questions_answered": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "topic_id",
          "mastery",
          "questions_answered"
        ],
        "additionalProperties": false
      },
      "description": "Practised topics only. Empty means this course was loaded and the learner has no IP attempts yet."
    }
  },
  "required": [
    "course_id",
    "topic_masteries"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟡write-artifact(project_id, artifact)

Create a Studocu artifact from typed content. Provide project_id and an artifact envelope; the artifact type defines the required content shape.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "UUID of the Studocu project that will own the artifact."
    },
    "artifact": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "kind": {
              "type": "string",
              "const": "creation",
              "description": "Artifact kind. Only creation is writable in this MVP."
            },
            "description": {
              "description": "Optional description stored on the creation record.",
              "type": "string",
              "minLength": 1
            },
            "title": {
              "type": "string",
              "minLength": 20,
              "maxLength": 255,
              "description": "Human-readable quiz title (Core Labs API requires 20-255 characters)."
            },
            "type": {
              "type": "string",
              "const": "quiz"
            },
            "content": {
              "type": "object",
              "properties": {
                "questions": {
                  "minItems": 1,
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "question": {
                        "type": "string",
                        "minLength": 1,
                        "description": "Question prompt shown to the learner."
                      },
                      "answers": {
                        "minItems": 2,
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "answer": {
                              "type": "string",
                              "minLength": 1,
                              "description": "Answer option text."
                            },
                            "is_correct": {
                              "type": "boolean",
                              "description": "True for the correct option or options."
                            }
                          },
                          "required": [
                            "answer",
                            "is_correct"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "explanation": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 255,
                        "description": "Required explanation for the correct answer (Core quiz API requires it, max 255 characters)."
                      },
                      "difficulty": {
                        "type": "string",
                        "enum": [
                          "EASY",
                          "MEDIUM",
                          "HARD"
                        ]
                      }
                    },
                    "required": [
                      "question",
                      "answers",
                      "explanation"
                    ],
                    "additionalProperties": false
                  }
                },
                "course_id": {
                  "type": "integer",
                  "exclusiveMinimum": 0,
                  "maximum": 9007199254740991
                }
              },
              "required": [
                "questions"
              ],
              "additionalProperties": false,
              "description": "Quiz content."
            }
          },
          "required": [
            "kind",
            "title",
            "type",
            "content"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "kind": {
              "type": "string",
              "const": "creation",
              "description": "Artifact kind. Only creation is writable in this MVP."
            },
            "description": {
              "description": "Optional description stored on the creation record.",
              "type": "string",
              "minLength": 1
            },
            "title": {
              "type": "string",
              "minLength": 1,
              "description": "Human-readable title for the created artifact."
            },
            "type": {
              "type": "string",
              "const": "lesson"
            },
            "content": {
              "type": "object",
              "properties": {
                "lesson_json": {
                  "type": "object",
                  "properties": {
                    "title": {
                      "type": "string",
                      "minLength": 1
                    },
                    "description": {
                      "type": "string"
                    },
                    "outline": {
                      "type": "object",
                      "properties": {
                        "learning_goal": {
                          "type": "string",
                          "minLength": 1
                        },
                        "title": {
                          "type": "string",
                          "minLength": 1
                        },
                        "exercises": {
                          "minItems": 1,
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "exercise_id": {
                                "type": "string",
                                "minLength": 1
                              },
                              "topic_id": {
                                "type": "string",
                                "minLength": 1
                              },
                              "title": {
                                "type": "string",
                                "minLength": 1
                              }
                            },
                            "required": [
                              "exercise_id",
                              "topic_id",
                              "title"
                            ],
                            "additionalProperties": false
                          }
                        }
                      },
                      "required": [
                        "learning_goal",
                        "title",
                        "exercises"
                      ],
                      "additionalProperties": false
                    },
                    "exercises": {
                      "minItems": 1,
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "minLength": 1
                          },
                          "position": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 9007199254740991
                          },
                          "title": {
                            "type": "string",
                            "minLength": 1
                          },
                          "concept_explanation": {
                            "type": "object",
                            "properties": {
                              "paragraph1": {
                                "type": "string",
                                "minLength": 1
                              },
                              "paragraph2": {
                                "type": "string",
                                "minLength": 1
                              }
                            },
                            "required": [
                              "paragraph1",
                              "paragraph2"
                            ],
                            "additionalProperties": false
                          },
                          "mcq": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "question": {
                                  "type": "string",
                                  "minLength": 1
                                },
                                "options": {
                                  "minItems": 2,
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string",
                                        "enum": [
                                          "A",
                                          "B",
                                          "C",
                                          "D"
                                        ],
                                        "description": "Frontend-supported answer option id."
                                      },
                                      "text": {
                                        "type": "string",
                                        "minLength": 1,
                                        "description": "Option text."
                                      },
                                      "rationale": {
                                        "type": "string",
                                        "minLength": 1,
                                        "description": "Rationale shown for this option."
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "text",
                                      "rationale"
                                    ],
                                    "additionalProperties": false
                                  }
                                },
                                "correct_option_id": {
                                  "type": "string",
                                  "enum": [
                                    "A",
                                    "B",
                                    "C",
                                    "D"
                                  ]
                                },
                                "rationale": {
                                  "type": "string",
                                  "minLength": 1
                                }
                              },
                              "required": [
                                "question",
                                "options",
                                "correct_option_id",
                                "rationale"
                              ],
                              "additionalProperties": false
                            }
                          },
                          "open_ended": {
                            "type": "object",
                            "properties": {
                              "question": {
                                "type": "string",
                                "minLength": 1
                              },
                              "expected_points": {
                                "minItems": 1,
                                "type": "array",
                                "items": {
                                  "type": "string",
                                  "minLength": 1
                                }
                              },
                              "model_answer": {
                                "type": "string",
                                "minLength": 1
                              },
                              "rubric": {
                                "type": "string",
                                "minLength": 1
                              }
                            },
                            "required": [
                              "question",
                              "expected_points",
                              "model_answer",
                              "rubric"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "id",
                          "position",
                          "title",
                          "concept_explanation",
                          "mcq",
                          "open_ended"
                        ],
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "title",
                    "outline",
                    "exercises"
                  ],
                  "additionalProperties": false
                }
              },
              "required": [
                "lesson_json"
              ],
              "additionalProperties": false,
              "description": "Lesson content."
            }
          },
          "required": [
            "kind",
            "title",
            "type",
            "content"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "kind": {
              "type": "string",
              "const": "creation",
              "description": "Artifact kind. Only creation is writable in this MVP."
            },
            "description": {
              "description": "Optional description stored on the creation record.",
              "type": "string",
              "minLength": 1
            },
            "title": {
              "type": "string",
              "minLength": 1,
              "description": "Human-readable title for the created artifact."
            },
            "type": {
              "type": "string",
              "const": "mockExam"
            },
            "content": {
              "type": "object",
              "properties": {
                "exam_json": {
                  "type": "object",
                  "properties": {
                    "schema_version": {
                      "type": "string",
                      "const": "0.8"
                    },
                    "title": {
                      "type": "string",
                      "minLength": 1
                    },
                    "front_matter": {
                      "type": "object",
                      "properties": {
                        "instructions_markdown": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    },
                    "content": {
                      "minItems": 1,
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "object",
                            "properties": {
                              "kind": {
                                "type": "string",
                                "const": "section"
                              },
                              "id": {
                                "type": "string",
                                "minLength": 1
                              },
                              "title": {
                                "type": "string",
                                "minLength": 1
                              },
                              "question_type": {
                                "type": "string",
                                "enum": [
                                  "mcq",
                                  "multi_select",
                                  "true_false",
                                  "fill_in_blank",
                                  "text_answer_short",
                                  "text_answer_long"
                                ],
                                "description": "Frontend-supported KnowledgeTest question type. Use mcq, not multiple_choice."
                              },
                              "instructions": {
                                "type": "string",
                                "minLength": 1
                              }
                            },
                            "required": [
                              "kind",
                              "id",
                              "question_type"
                            ],
                            "additionalProperties": false
                          },
                          {
                            "type": "object",
                            "properties": {
                              "kind": {
                                "type": "string",
                                "const": "stimulus"
                              },
                              "id": {
                                "type": "string",
                                "minLength": 1
                              },
                              "title": {
                                "type": "string",
                                "minLength": 1
                              },
                              "stimulus_markdown": {
                                "type": "string",
                                "minLength": 1
                              }
                            },
                            "required": [
                              "kind",
                              "id",
                              "stimulus_markdown"
                            ],
                            "additionalProperties": false
                          },
                          {
                            "oneOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "const": "question"
                                  },
                                  "id": {
                                    "type": "string",
                                    "minLength": 1
                                  },
                                  "section_id": {
                                    "type": "string",
                                    "minLength": 1
                                  },
                                  "type": {
                                    "type": "string",
                                    "enum": [
                                      "mcq",
                                      "multi_select",
                                      "true_false"
                                    ]
                                  },
                                  "marks": {
                                    "type": "number",
                                    "minimum": 0
                                  },
                                  "question_markdown": {
                                    "type": "string",
                                    "minLength": 1
                                  },
                                  "stimulus_id_refs": {
                                    "anyOf": [
                                      {
                                        "type": "array",
                                        "items": {
                                          "type": "string",
                                          "minLength": 1
                                        }
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "options": {
                                    "minItems": 2,
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "id": {
                                          "type": "string",
                                          "minLength": 1,
                                          "description": "Stable option id."
                                        },
                                        "text": {
                                          "type": "string",
                                          "minLength": 1,
                                          "description": "Option text."
                                        }
                                      },
                                      "required": [
                                        "id",
                                        "text"
                                      ],
                                      "additionalProperties": false
                                    }
                                  },
                                  "grading": {
                                    "type": "object",
                                    "properties": {
                                      "correct_answer_ids": {
                                        "type": "array",
                                        "items": {
                                          "type": "string",
                                          "minLength": 1
                                        }
                                      },
                                      "correct_answer": {
                                        "type": "string"
                                      },
                                      "model_answer": {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      "key_points": {
                                        "type": "array",
                                        "items": {
                                          "type": "string",
                                          "minLength": 1
                                        }
                                      }
                                    },
                                    "required": [
                                      "model_answer"
                                    ],
                                    "additionalProperties": false
                                  },
                                  "topics": {
                                    "anyOf": [
                                      {
                                        "type": "array",
                                        "items": {
                                          "type": "string",
                                          "minLength": 1
                                        }
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  }
                                },
                                "required": [
                                  "kind",
                                  "id",
                                  "section_id",
                                  "type",
                                  "marks",
                                  "question_markdown",
                                  "options"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "const": "question"
                                  },
                                  "id": {
                                    "type": "string",
                                    "minLength": 1
                                  },
                                  "section_id": {
                                    "type": "string",
                                    "minLength": 1
                                  },
                                  "type": {
                                    "type": "string",
                                    "const": "fill_in_blank"
                                  },
                                  "marks": {
                                    "type": "number",
                                    "minimum": 0
                                  },
                                  "question_markdown": {
                                    "type": "string",
                                    "minLength": 1
                                  },
                                  "stimulus_id_refs": {
                                    "anyOf": [
                                      {
                                        "type": "array",
                                        "items": {
                                          "type": "string",
                                          "minLength": 1
                                        }
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "template_markdown": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "blanks": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "id": {
                                          "type": "string",
                                          "minLength": 1
                                        },
                                        "label": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "id"
                                      ],
                                      "additionalProperties": false
                                    }
                                  },
                                  "grading": {
                                    "type": "object",
                                    "properties": {
                                      "correct_answer_ids": {
                                        "type": "array",
                                        "items": {
                                          "type": "string",
                                          "minLength": 1
                                        }
                                      },
                                      "correct_answer": {
                                        "type": "string"
                                      },
                                      "model_answer": {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      "key_points": {
                                        "type": "array",
                                        "items": {
                                          "type": "string",
                                          "minLength": 1
                                        }
                                      }
                                    },
                                    "required": [
                                      "model_answer"
                                    ],
                                    "additionalProperties": false
                                  },
                                  "topics": {
                                    "anyOf": [
                                      {
                                        "type": "array",
                                        "items": {
                                          "type": "string",
                                          "minLength": 1
                                        }
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  }
                                },
                                "required": [
                                  "kind",
                                  "id",
                                  "section_id",
                                  "type",
                                  "marks",
                                  "question_markdown"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "const": "question"
                                  },
                                  "id": {
                                    "type": "string",
                                    "minLength": 1
                                  },
                                  "section_id": {
                                    "type": "string",
                                    "minLength": 1
                                  },
                                  "type": {
                                    "type": "string",
                                    "enum": [
                                      "text_answer_short",
                                      "text_answer_long"
                                    ]
                                  },
                                  "marks": {
                                    "type": "number",
                                    "minimum": 0
                                  },
                                  "question_markdown": {
                                    "type": "string",
                                    "minLength": 1
                                  },
                                  "stimulus_id_refs": {
                                    "anyOf": [
                                      {
                                        "type": "array",
                                        "items": {
                                          "type": "string",
                                          "minLength": 1
                                        }
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "grading": {
                                    "type": "object",
                                    "properties": {
                                      "correct_answer_ids": {
                                        "type": "array",
                                        "items": {
                                          "type": "string",
                                          "minLength": 1
                                        }
                                      },
                                      "correct_answer": {
                                        "type": "string"
                                      },
                                      "model_answer": {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      "key_points": {
                                        "type": "array",
                                        "items": {
                                          "type": "string",
                                          "minLength": 1
                                        }
                                      }
                                    },
                                    "required": [
                                      "model_answer"
                                    ],
                                    "additionalProperties": false
                                  },
                                  "topics": {
                                    "anyOf": [
                                      {
                                        "type": "array",
                                        "items": {
                                          "type": "string",
                                          "minLength": 1
                                        }
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  }
                                },
                                "required": [
                                  "kind",
                                  "id",
                                  "section_id",
                                  "type",
                                  "marks",
                                  "question_markdown"
                                ],
                                "additionalProperties": false
                              }
                            ]
                          }
                        ]
                      }
                    }
                  },
                  "required": [
                    "schema_version",
                    "title",
                    "content"
                  ],
                  "additionalProperties": false
                }
              },
              "required": [
                "exam_json"
              ],
              "additionalProperties": false,
              "description": "Mock exam content."
            }
          },
          "required": [
            "kind",
            "title",
            "type",
            "content"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "kind": {
              "type": "string",
              "const": "creation",
              "description": "Artifact kind. Only creation is writable in this MVP."
            },
            "title": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255,
              "description": "Human-readable note title (Alpha creation store max 255 characters)."
            },
            "type": {
              "type": "string",
              "const": "note"
            },
            "content": {
              "type": "object",
              "properties": {
                "html": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Complete HTML document for the note body (max 1 MiB UTF-8)."
                }
              },
              "required": [
                "html"
              ],
              "additionalProperties": false,
              "description": "Note content."
            }
          },
          "required": [
            "kind",
            "title",
            "type",
            "content"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "kind": {
              "type": "string",
              "const": "creation",
              "description": "Artifact kind. Only creation is writable in this MVP."
            },
            "description": {
              "description": "Optional description stored on the creation record.",
              "type": "string",
              "minLength": 1
            },
            "title": {
              "type": "string",
              "minLength": 1,
              "description": "Human-readable title for the created artifact."
            },
            "type": {
              "type": "string",
              "const": "flashcard"
            },
            "content": {
              "type": "object",
              "properties": {
                "flashcards_json": {
                  "type": "object",
                  "properties": {
                    "title": {
                      "type": "string",
                      "minLength": 1
                    },
                    "description": {
                      "type": "string"
                    },
                    "flashcards": {
                      "minItems": 1,
                      "maxItems": 200,
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "front": {
                            "type": "string",
                            "minLength": 1
                          },
                          "back": {
                            "type": "string",
                            "minLength": 1
                          }
                        },
                        "required": [
                          "front",
                          "back"
                        ],
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "title",
                    "description",
                    "flashcards"
                  ],
                  "additionalProperties": false
                }
              },
              "required": [
                "flashcards_json"
              ],
              "additionalProperties": false,
              "description": "Flashcard set content."
            }
          },
          "required": [
            "kind",
            "title",
            "type",
            "content"
          ],
          "additionalProperties": false
        }
      ],
      "description": "The artifact to create. Pick type; each type defines its own content shape."
    }
  },
  "required": [
    "project_id",
    "artifact"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "artifactId": {
      "type": "string",
      "description": "Canonical Studocu artifact URI for the created creation."
    },
    "kind": {
      "type": "string",
      "const": "creation",
      "description": "Artifact kind returned by the write operation."
    },
    "projectId": {
      "type": "string",
      "description": "UUID of the Studocu project that owns the created artifact."
    },
    "type": {
      "type": "string",
      "enum": [
        "quiz",
        "mockExam",
        "lesson",
        "note",
        "flashcard"
      ],
      "description": "Creation type that was written."
    },
    "title": {
      "type": "string",
      "description": "Human-readable title of the created artifact."
    },
    "status": {
      "type": "string",
      "const": "created",
      "description": "Stable write status for successful creation writes."
    }
  },
  "required": [
    "artifactId",
    "kind",
    "projectId",
    "type",
    "title",
    "status"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟡add-document-sources(project_id, document_ids)

Attach up to 10 Studocu documents from search-documents to a project. Returns the sources that were successfully added; compare with document_ids if some were omitted.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "UUID of the Studocu project that will receive the document sources."
    },
    "document_ids": {
      "minItems": 1,
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      },
      "description": "One to ten unique Studocu document IDs returned by search-documents."
    }
  },
  "required": [
    "project_id",
    "document_ids"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "sources": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "source_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "document_id": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991
          },
          "title": {
            "type": "string",
            "minLength": 1
          },
          "status": {
            "type": "string",
            "const": "completed"
          }
        },
        "required": [
          "source_id",
          "document_id",
          "title",
          "status"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "project_id",
    "sources"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟡create-project(title, emoji, course_id)

Create a Studocu project and optionally configure its emoji and course. A numeric course_id is validated before project creation.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "pattern": "\\S"
    },
    "emoji": {
      "type": "string",
      "minLength": 1
    },
    "course_id": {
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "NOTE: These shared primitives are copied from the AI API spec and owned\nlocally by Agent OS to keep this contract decoupled."
    },
    "title": {
      "type": "string",
      "minLength": 1,
      "description": "Agent-displayable project title. Null Alpha names become \"Untitled project\"."
    },
    "is_mobile": {
      "type": "boolean"
    },
    "emoji": {
      "type": "string",
      "minLength": 1
    },
    "course_id": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": 1,
          "maximum": 9007199254740991
        },
        {
          "type": "null"
        }
      ]
    },
    "institution_id": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": 1,
          "maximum": 9007199254740991
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "project_id",
    "title",
    "is_mobile",
    "emoji",
    "course_id",
    "institution_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🔴update-project(project_id, title, emoji, course_id)

Update a Studocu project title, emoji, or course. Use course_id null to clear the course and institution.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "NOTE: These shared primitives are copied from the AI API spec and owned\nlocally by Agent OS to keep this contract decoupled."
    },
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "pattern": "\\S"
    },
    "emoji": {
      "type": "string",
      "minLength": 1
    },
    "course_id": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": 1,
          "maximum": 9007199254740991
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "project_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false,
  "minProperties": 2,
  "anyOf": [
    {
      "required": [
        "title"
      ]
    },
    {
      "required": [
        "emoji"
      ]
    },
    {
      "required": [
        "course_id"
      ]
    }
  ]
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "NOTE: These shared primitives are copied from the AI API spec and owned\nlocally by Agent OS to keep this contract decoupled."
    },
    "title": {
      "type": "string",
      "minLength": 1,
      "description": "Agent-displayable project title. Null Alpha names become \"Untitled project\"."
    },
    "is_mobile": {
      "type": "boolean"
    },
    "emoji": {
      "type": "string",
      "minLength": 1
    },
    "course_id": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": 1,
          "maximum": 9007199254740991
        },
        {
          "type": "null"
        }
      ]
    },
    "institution_id": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": 1,
          "maximum": 9007199254740991
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "project_id",
    "title",
    "is_mobile",
    "emoji",
    "course_id",
    "institution_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢request-creation(project_id, type, artifact_ids, instruction, idempotency_key)

Generate a Studocu quiz or mockExam from 1-10 project source artifacts. Waits up to ~3 minutes; returns artifact_id and external_id when created, status creating with external_id when persist is not yet visible, or outcome_unknown on client timeout or in-flight duplicate (check get-project-state before retrying). Optional idempotency_key is forwarded as Idempotency-Key; identical retries without a key still dedupe.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "UUID of the Studocu project that will own the new creation."
    },
    "type": {
      "type": "string",
      "enum": [
        "quiz",
        "mockExam"
      ],
      "description": "The kind of creation to generate: quiz or mockExam."
    },
    "artifact_ids": {
      "minItems": 1,
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      },
      "description": "One to ten unique source artifact IDs (studocu://project/{project_id}/source/{uuid}) to generate from."
    },
    "instruction": {
      "description": "Optional free-text hint for the generating agent (e.g. \"focus on chapter 3\").",
      "type": "string",
      "minLength": 1,
      "maxLength": 6000
    },
    "idempotency_key": {
      "description": "Optional retry key. Agent OS always sends Idempotency-Key to Alpha (this value, or a fingerprint of project/type/sources/instruction). Reuse with a different body is rejected.",
      "type": "string",
      "minLength": 1,
      "maxLength": 256
    }
  },
  "required": [
    "project_id",
    "type",
    "artifact_ids"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "artifact_id": {
      "description": "Agent OS artifact ID of the new creation. Present when status is created.",
      "type": "string",
      "minLength": 1
    },
    "type": {
      "type": "string",
      "enum": [
        "quiz",
        "mockExam"
      ]
    },
    "status": {
      "type": "string",
      "enum": [
        "created",
        "creating",
        "outcome_unknown"
      ],
      "description": "created: persisted and linked (artifact_id and external_id). creating: generation finished but Alpha identity is not yet visible (external_id matches get-project-state creation rows). outcome_unknown: client timeout or an in-flight duplicate (check get-project-state; do not mint a new key). Terminal failures use MCP isError, not a status value."
    },
    "external_id": {
      "description": "Kind-specific downstream id (quizId or mockExamId). Present on created and creating; match the same field on get-project-state creation rows. Omitted on timeout.",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "number"
        }
      ]
    }
  },
  "required": [
    "type",
    "status"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢read-memory(scope, project_id, kind)

Read durable agent memory for the authenticated user. Returns one document per (scope, kind); use project_id for project-scoped memory. Identity comes from Core via the session bearer, not from input.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "scope": {
      "description": "Memory scope to read: global, project, or both. Defaults to global unless project_id is set.",
      "type": "string",
      "enum": [
        "global",
        "project",
        "both"
      ]
    },
    "project_id": {
      "description": "Project UUID for project-scoped memory; null or omitted reads global (user-level) memory. Required when scope is project or both.",
      "anyOf": [
        {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        {
          "type": "null"
        }
      ]
    },
    "kind": {
      "description": "Narrow the result to a single memory kind.",
      "type": "string",
      "minLength": 1
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "memories": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "description": "Memory kind for this document."
          },
          "projectId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Owning project UUID, or null for global memory."
          },
          "value": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {},
            "description": "Freeform memory document."
          },
          "updatedAt": {
            "type": "string",
            "description": "Last time this memory document changed."
          }
        },
        "required": [
          "kind",
          "projectId",
          "value",
          "updatedAt"
        ],
        "additionalProperties": false
      },
      "description": "Durable memory documents for the authenticated user."
    }
  },
  "required": [
    "memories"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🔴write-memory(project_id, kind, value)

Upsert one durable memory document per (scope, kind) for the authenticated user. Provide project_id for project-local memory, or null/omit for global. Identity comes from Core via the session bearer, not from input.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "project_id": {
      "description": "Project UUID for project-local memory; null or omitted stores global (user-level) memory.",
      "anyOf": [
        {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        {
          "type": "null"
        }
      ]
    },
    "kind": {
      "type": "string",
      "minLength": 1,
      "description": "Memory kind, e.g. study_preference or project_learning_context."
    },
    "value": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "Freeform memory document. MVP convention is { content: string }."
    }
  },
  "required": [
    "kind",
    "value"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "userId": {
      "type": "string",
      "description": "Owner of the memory document."
    },
    "projectId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Owning project UUID, or null for global memory."
    },
    "kind": {
      "type": "string",
      "description": "Memory kind that was written."
    },
    "value": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "Stored memory document."
    },
    "createdAt": {
      "type": "string",
      "description": "Creation timestamp of the row."
    },
    "updatedAt": {
      "type": "string",
      "description": "Last write timestamp of the row."
    }
  },
  "required": [
    "userId",
    "projectId",
    "kind",
    "value",
    "createdAt",
    "updatedAt"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🔴delete-memory(project_id, kind)

Delete one durable memory document identified by (scope, kind) for the authenticated user. Provide project_id for project-local memory, or null/omit for global. Identity comes from Core via the session bearer, not from input.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "project_id": {
      "description": "Project UUID for project-local memory; null or omitted deletes global (user-level) memory.",
      "anyOf": [
        {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        {
          "type": "null"
        }
      ]
    },
    "kind": {
      "type": "string",
      "minLength": 1,
      "description": "Memory kind to delete, e.g. study_preference or project_learning_context."
    }
  },
  "required": [
    "kind"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "userId": {
      "type": "string",
      "description": "Owner of the deleted memory document."
    },
    "projectId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Owning project UUID, or null for global memory."
    },
    "kind": {
      "type": "string",
      "description": "Memory kind that was deleted."
    },
    "deleted": {
      "type": "boolean",
      "const": true,
      "description": "Always true when the delete succeeds."
    }
  },
  "required": [
    "userId",
    "projectId",
    "kind",
    "deleted"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet20 Tools