Studocu

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

使うべきか

品質と安全性

B
説明の品質
98%
スキーマの完全性
89%
命名の品質
68%
ポイズニングのリスク
80%
権限の一致
100%
プロトコルへの準拠
100%

検出事項(23)

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

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~14,785トークン数(ツール定義)
~7.2 KB一般的なレスポンスサイズ
注意への影響は大きい(128k コンテキストの 11.55%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `claude_desktop_config.json` ファイルに追加してください:

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

リモートエンドポイント

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

できること

ツール一覧

ツール(20)

🟢 読み取り専用🟡 書き込み🔴 削除⚪ 不明
🟢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.

入力スキーマ

{
  "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#"
}

出力スキーマ

{
  "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.

入力スキーマ

{
  "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#"
}

出力スキーマ

{
  "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.

入力スキーマ

{
  "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#"
}

出力スキーマ

{
  "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.

入力スキーマ

{
  "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#"
}

出力スキーマ

{
  "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.

入力スキーマ

{
  "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#"
}

出力スキーマ

{
  "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.

入力スキーマ

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/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.

入力スキーマ

{
  "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#"
}

出力スキーマ

{
  "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.

入力スキーマ

{
  "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#"
}

出力スキーマ

{
  "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.

入力スキーマ

{
  "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#"
}

出力スキーマ

{
  "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.

入力スキーマ

{
  "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#"
}

出力スキーマ

{
  "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.

入力スキーマ

{
  "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#"
}

出力スキーマ

{
  "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.

入力スキーマ

{
  "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#"
}

出力スキーマ

{
  "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.

入力スキーマ

{
  "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#"
}

出力スキーマ

{
  "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.

入力スキーマ

{
  "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#"
}

出力スキーマ

{
  "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.

入力スキーマ

{
  "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
}

出力スキーマ

{
  "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.

入力スキーマ

{
  "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"
      ]
    }
  ]
}

出力スキーマ

{
  "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.

入力スキーマ

{
  "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#"
}

出力スキーマ

{
  "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.

入力スキーマ

{
  "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#"
}

出力スキーマ

{
  "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.

入力スキーマ

{
  "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#"
}

出力スキーマ

{
  "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.

入力スキーマ

{
  "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#"
}

出力スキーマ

{
  "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
}

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 20 件