← The evidence ledger
Evidence row 559427
Observed , by probe.mcp/1.
- Kind
- mcp.tools
- About
- endpoint 58c608f6-76aa-4c70-83ca-5b5b28b5097b
- Recorded
- Previous row
- None: the first of its kind about this subject
- Body SHA-256
- ebba921d58df3f77a1b8416eb2a7dbbef9570d7cbce1033d3eefbcf386c24e67
- Leaf
- 0x4f4507112d01fdf2eb013105e87d9b4785fb36f0b55050d8c08783414960be1b
What was observed
{
"count": 18,
"tools": [
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"document_ids": {
"description": "One to ten unique Studocu document IDs returned by search-documents.",
"items": {
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"maxItems": 10,
"minItems": 1,
"type": "array"
},
"project_id": {
"description": "UUID of the Studocu project that will receive the document sources.",
"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": "string"
}
},
"required": [
"project_id",
"document_ids"
],
"type": "object"
},
"name": "add-document-sources"
},
{
"description": "Use this proof tool to verify that the Agent OS MCP server received a valid delegated Studocu session.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"type": "object"
},
"name": "agent-os-session"
},
{
"description": "Create a Studocu project and optionally configure its emoji and course. A numeric course_id is validated before project creation.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"course_id": {
"maximum": 9007199254740991,
"minimum": 1,
"type": "integer"
},
"emoji": {
"minLength": 1,
"type": "string"
},
"title": {
"maxLength": 255,
"minLength": 1,
"pattern": "\\S",
"type": "string"
}
},
"type": "object"
},
"name": "create-project"
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"kind": {
"description": "Memory kind to delete, e.g. study_preference or project_learning_context.",
"minLength": 1,
"type": "string"
},
"project_id": {
"anyOf": [
{
"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": "string"
},
{
"type": "null"
}
],
"description": "Project UUID for project-local memory; null or omitted deletes global (user-level) memory."
}
},
"required": [
"kind"
],
"type": "object"
},
"name": "delete-memory"
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"active_only": {
"description": "Limit the manifest to active context.",
"type": "boolean"
},
"course_id": {
"anyOf": [
{
"minLength": 1,
"type": "string"
},
{
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
}
],
"description": "Narrow context to a single followed course and its projects."
},
"project_id": {
"description": "Narrow context to a single project by id.",
"minLength": 1,
"type": "string"
},
"recent_only": {
"description": "Limit the manifest to recently active context.",
"type": "boolean"
}
},
"type": "object"
},
"name": "get-context"
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"course_id": {
"description": "Course id to load practised-topic Infinite Practice mastery for.",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
}
},
"required": [
"course_id"
],
"type": "object"
},
"name": "get-course-mastery"
},
{
"description": "Return a generated course outline as markdown when this tool has one. This is the best grounding for high-quality study guidance. If it is missing, a syllabus may be generating, so try again in a few minutes. Requires course_id.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"course_id": {
"description": "Studocu course id whose published syllabus should be loaded.",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
}
},
"required": [
"course_id"
],
"type": "object"
},
"name": "get-course-syllabus"
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"ids": {
"description": "The project ids to load sources and creations (project state) for. Only projects you can access are returned.",
"items": {
"minLength": 1,
"type": "string"
},
"maxItems": 20,
"minItems": 1,
"type": "array"
}
},
"required": [
"ids"
],
"type": "object"
},
"name": "get-project-state"
},
{
"description": "Read a Studocu project source or creation by its studocu://project/{project_id}/{kind}/{uuid} URI. Returns normalized metadata with explicitly mapped inline content. file/image sources also include the photo as an image content block when a viewable image, or an original upload under 5 MB, is available.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"artifact_id": {
"description": "Artifact URI in the form studocu://project/{project_id}/{kind}/{uuid}.",
"minLength": 1,
"type": "string"
},
"cursor": {
"description": "Opaque continuation cursor returned by a previous read.",
"minLength": 1,
"type": "string"
}
},
"required": [
"artifact_id"
],
"type": "object"
},
"name": "read-artifact"
},
{
"description": "Read a Studocu document directly, without requiring or creating a project source. Use read-artifact for documents attached to a project.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"document_id": {
"description": "Studocu document ID to read without creating a project source.",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
}
},
"required": [
"document_id"
],
"type": "object"
},
"name": "read-detached-document"
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"kind": {
"description": "Narrow the result to a single memory kind.",
"minLength": 1,
"type": "string"
},
"project_id": {
"anyOf": [
{
"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": "string"
},
{
"type": "null"
}
],
"description": "Project UUID for project-scoped memory; null or omitted reads global (user-level) memory. Required when scope is project or both."
},
"scope": {
"description": "Memory scope to read: global, project, or both. Defaults to global unless project_id is set.",
"enum": [
"global",
"project",
"both"
],
"type": "string"
}
},
"type": "object"
},
"name": "read-memory"
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"artifact_ids": {
"description": "One to ten unique source artifact IDs (studocu://project/{project_id}/source/{uuid}) to generate from.",
"items": {
"minLength": 1,
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"type": "array"
},
"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.",
"maxLength": 256,
"minLength": 1,
"type": "string"
},
"instruction": {
"description": "Optional free-text hint for the generating agent (e.g. \"focus on chapter 3\").",
"maxLength": 6000,
"minLength": 1,
"type": "string"
},
"project_id": {
"description": "UUID of the Studocu project that will own the new creation.",
"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": "string"
},
"type": {
"description": "The kind of creation to generate: quiz or mockExam.",
"enum": [
"quiz",
"mockExam"
],
"type": "string"
}
},
"required": [
"project_id",
"type",
"artifact_ids"
],
"type": "object"
},
"name": "request-creation"
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"institution_id": {
"exclusiveMinimum": 0,
"maximum": 2147483647,
"type": "integer"
},
"limit": {
"default": 3,
"maximum": 10,
"minimum": 1,
"type": "integer"
},
"query": {
"maxLength": 200,
"minLength": 1,
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search-courses"
},
{
"description": "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. Results with `match_type: semantic` are closest matches, not exact keyword hits, and may be only loosely related; check them against the request.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"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.",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"type": "integer"
},
"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"
},
"limit": {
"default": 10,
"description": "Number of results to return (1-50, default: 10).",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"query": {
"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.",
"minLength": 1,
"type": "string"
},
"use_no_course_as_fallback": {
"description": "Only used with `course_id`. When true and that course has no matching documents, search again without the course, so results may come from other courses; check each result's `course_id`. Default false.",
"type": "boolean"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search-documents"
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"default": 3,
"maximum": 10,
"minimum": 1,
"type": "integer"
},
"query": {
"maxLength": 200,
"minLength": 1,
"type": "string"
},
"type": {
"enum": [
"UNIVERSITY",
"HIGH_SCHOOL"
],
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search-institutions"
},
{
"description": "Update a Studocu project title, emoji, or course. Use course_id null to clear the course and institution.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"anyOf": [
{
"required": [
"title"
]
},
{
"required": [
"emoji"
]
},
{
"required": [
"course_id"
]
}
],
"minProperties": 2,
"properties": {
"course_id": {
"anyOf": [
{
"maximum": 9007199254740991,
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
]
},
"emoji": {
"minLength": 1,
"type": "string"
},
"project_id": {
"description": "NOTE: These shared primitives are copied from the AI API spec and owned\nlocally by Agent OS to keep this contract decoupled.",
"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": "string"
},
"title": {
"maxLength": 255,
"minLength": 1,
"pattern": "\\S",
"type": "string"
}
},
"required": [
"project_id"
],
"type": "object"
},
"name": "update-project"
},
{
"description": "Create a Studocu artifact from typed content. Provide project_id and an artifact envelope; the artifact type defines the required content shape.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"artifact": {
"description": "The artifact to create. Pick type; each type defines its own content shape.",
"oneOf": [
{
"additionalProperties": false,
"properties": {
"content": {
"additionalProperties": false,
"description": "Quiz content.",
"properties": {
"course_id": {
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"questions": {
"items": {
"additionalProperties": false,
"properties": {
"answers": {
"items": {
"additionalProperties": false,
"properties": {
"answer": {
"description": "Answer option text.",
"minLength": 1,
"type": "string"
},
"is_correct": {
"description": "True for the correct option or options.",
"type": "boolean"
}
},
"required": [
"answer",
"is_correct"
],
"type": "object"
},
"minItems": 2,
"type": "array"
},
"difficulty": {
"enum": [
"EASY",
"MEDIUM",
"HARD"
],
"type": "string"
},
"explanation": {
"description": "Required explanation for the correct answer (Core quiz API requires it, max 255 characters).",
"maxLength": 255,
"minLength": 1,
"type": "string"
},
"question": {
"description": "Question prompt shown to the learner.",
"minLength": 1,
"type": "string"
}
},
"required": [
"question",
"answers",
"explanation"
],
"type": "object"
},
"minItems": 1,
"type": "array"
}
},
"required": [
"questions"
],
"type": "object"
},
"description": {
"description": "Optional description stored on the creation record.",
"minLength": 1,
"type": "string"
},
"kind": {
"const": "creation",
"description": "Artifact kind. Only creation is writable in this MVP.",
"type": "string"
},
"title": {
"description": "Human-readable quiz title (Core Labs API requires 20-255 characters).",
"maxLength": 255,
"minLength": 20,
"type": "string"
},
"type": {
"const": "quiz",
"type": "string"
}
},
"required": [
"kind",
"title",
"type",
"content"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"content": {
"additionalProperties": false,
"description": "Mock exam content.",
"properties": {
"exam_json": {
"additionalProperties": false,
"properties": {
"content": {
"items": {
"oneOf": [
{
"additionalProperties": false,
"properties": {
"id": {
"minLength": 1,
"type": "string"
},
"instructions": {
"minLength": 1,
"type": "string"
},
"kind": {
"const": "section",
"type": "string"
},
"question_type": {
"description": "Frontend-supported KnowledgeTest question type. Use mcq, not multiple_choice.",
"enum": [
"mcq",
"multi_select",
"true_false",
"fill_in_blank",
"text_answer_short",
"text_answer_long"
],
"type": "string"
},
"title": {
"minLength": 1,
"type": "string"
}
},
"required": [
"kind",
"id",
"question_type"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"id": {
"minLength": 1,
"type": "string"
},
"kind": {
"const": "stimulus",
"type": "string"
},
"stimulus_markdown": {
"minLength": 1,
"type": "string"
},
"title": {
"minLength": 1,
"type": "string"
}
},
"required": [
"kind",
"id",
"stimulus_markdown"
],
"type": "object"
},
{
"oneOf": [
{
"additionalProperties": false,
"properties": {
"grading": {
"additionalProperties": false,
"properties": {
"correct_answer": {
"type": "string"
},
"correct_answer_ids": {
"items": {
"minLength": 1,
"type": "string"
},
"type": "array"
},
"key_points": {
"items": {
"minLength": 1,
"type": "string"
},
"type": "array"
},
"model_answer": {
"minLength": 1,
"type": "string"
}
},
"required": [
"model_answer"
],
"type": "object"
},
"id": {
"minLength": 1,
"type": "string"
},
"kind": {
"const": "question",
"type": "string"
},
"marks": {
"minimum": 0,
"type": "number"
},
"options": {
"items": {
"additionalProperties": false,
"properties": {
"id": {
"description": "Stable option id.",
"minLength": 1,
"type": "string"
},
"text": {
"description": "Option text.",
"minLength": 1,
"type": "string"
}
},
"required": [
"id",
"text"
],
"type": "object"
},
"minItems": 2,
"type": "array"
},
"question_markdown": {
"minLength": 1,
"type": "string"
},
"section_id": {
"minLength": 1,
"type": "string"
},
"stimulus_id_refs": {
"anyOf": [
{
"items": {
"minLength": 1,
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
]
},
"topics": {
"anyOf": [
{
"items": {
"minLength": 1,
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
]
},
"type": {
"enum": [
"mcq",
"multi_select",
"true_false"
],
"type": "string"
}
},
"required": [
"kind",
"id",
"section_id",
"type",
"marks",
"question_markdown",
"options"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"blanks": {
"items": {
"additionalProperties": false,
"properties": {
"id": {
"minLength": 1,
"type": "string"
},
"label": {
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"type": "array"
},
"grading": {
"additionalProperties": false,
"properties": {
"correct_answer": {
"type": "string"
},
"correct_answer_ids": {
"items": {
"minLength": 1,
"type": "string"
},
"type": "array"
},
"key_points": {
"items": {
"minLength": 1,
"type": "string"
},
"type": "array"
},
"model_answer": {
"minLength": 1,
"type": "string"
}
},
"required": [
"model_answer"
],
"type": "object"
},
"id": {
"minLength": 1,
"type": "string"
},
"kind": {
"const": "question",
"type": "string"
},
"marks": {
"minimum": 0,
"type": "number"
},
"question_markdown": {
"minLength": 1,
"type": "string"
},
"section_id": {
"minLength": 1,
"type": "string"
},
"stimulus_id_refs": {
"anyOf": [
{
"items": {
"minLength": 1,
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
]
},
"template_markdown": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"topics": {
"anyOf": [
{
"items": {
"minLength": 1,
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
]
},
"type": {
"const": "fill_in_blank",
"type": "string"
}
},
"required": [
"kind",
"id",
"section_id",
"type",
"marks",
"question_markdown"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"grading": {
"additionalProperties": false,
"properties": {
"correct_answer": {
"type": "string"
},
"correct_answer_ids": {
"items": {
"minLength": 1,
"type": "string"
},
"type": "array"
},
"key_points": {
"items": {
"minLength": 1,
"type": "string"
},
"type": "array"
},
"model_answer": {
"minLength": 1,
"type": "string"
}
},
"required": [
"model_answer"
],
"type": "object"
},
"id": {
"minLength": 1,
"type": "string"
},
"kind": {
"const": "question",
"type": "string"
},
"marks": {
"minimum": 0,
"type": "number"
},
"question_markdown": {
"minLength": 1,
"type": "string"
},
"section_id": {
"minLength": 1,
"type": "string"
},
"stimulus_id_refs": {
"anyOf": [
{
"items": {
"minLength": 1,
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
]
},
"topics": {
"anyOf": [
{
"items": {
"minLength": 1,
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
]
},
"type": {
"enum": [
"text_answer_short",
"text_answer_long"
],
"type": "string"
}
},
"required": [
"kind",
"id",
"section_id",
"type",
"marks",
"question_markdown"
],
"type": "object"
}
]
}
]
},
"minItems": 1,
"type": "array"
},
"front_matter": {
"additionalProperties": false,
"properties": {
"instructions_markdown": {
"type": "string"
}
},
"type": "object"
},
"schema_version": {
"const": "0.8",
"type": "string"
},
"title": {
"minLength": 1,
"type": "string"
}
},
"required": [
"schema_version",
"title",
"content"
],
"type": "object"
}
},
"required": [
"exam_json"
],
"type": "object"
},
"description": {
"description": "Optional description stored on the creation record.",
"minLength": 1,
"type": "string"
},
"kind": {
"const": "creation",
"description": "Artifact kind. Only creation is writable in this MVP.",
"type": "string"
},
"title": {
"description": "Human-readable title for the created artifact.",
"minLength": 1,
"type": "string"
},
"type": {
"const": "mockExam",
"type": "string"
}
},
"required": [
"kind",
"title",
"type",
"content"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"content": {
"additionalProperties": false,
"description": "Note content.",
"properties": {
"html": {
"description": "Complete HTML document for the note body (max 1 MiB UTF-8).",
"minLength": 1,
"type": "string"
}
},
"required": [
"html"
],
"type": "object"
},
"kind": {
"const": "creation",
"description": "Artifact kind. Only creation is writable in this MVP.",
"type": "string"
},
"title": {
"description": "Human-readable note title (Alpha creation store max 255 characters).",
"maxLength": 255,
"minLength": 1,
"type": "string"
},
"type": {
"const": "note",
"type": "string"
}
},
"required": [
"kind",
"title",
"type",
"content"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"content": {
"additionalProperties": false,
"description": "Flashcard set content.",
"properties": {
"flashcards_json": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"flashcards": {
"items": {
"additionalProperties": false,
"properties": {
"back": {
"minLength": 1,
"type": "string"
},
"front": {
"minLength": 1,
"type": "string"
}
},
"required": [
"front",
"back"
],
"type": "object"
},
"maxItems": 200,
"minItems": 1,
"type": "array"
},
"title": {
"minLength": 1,
"type": "string"
}
},
"required": [
"title",
"description",
"flashcards"
],
"type": "object"
}
},
"required": [
"flashcards_json"
],
"type": "object"
},
"description": {
"description": "Optional description stored on the creation record.",
"minLength": 1,
"type": "string"
},
"kind": {
"const": "creation",
"description": "Artifact kind. Only creation is writable in this MVP.",
"type": "string"
},
"title": {
"description": "Human-readable title for the created artifact.",
"minLength": 1,
"type": "string"
},
"type": {
"const": "flashcard",
"type": "string"
}
},
"required": [
"kind",
"title",
"type",
"content"
],
"type": "object"
}
]
},
"project_id": {
"description": "UUID of the Studocu project that will own the artifact.",
"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": "string"
}
},
"required": [
"project_id",
"artifact"
],
"type": "object"
},
"name": "write-artifact"
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"kind": {
"description": "Memory kind, e.g. study_preference or project_learning_context.",
"minLength": 1,
"type": "string"
},
"project_id": {
"anyOf": [
{
"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": "string"
},
{
"type": "null"
}
],
"description": "Project UUID for project-local memory; null or omitted stores global (user-level) memory."
},
"value": {
"additionalProperties": {},
"description": "Freeform memory document. MVP convention is { content: string }.",
"propertyNames": {
"type": "string"
},
"type": "object"
}
},
"required": [
"kind",
"value"
],
"type": "object"
},
"name": "write-memory"
}
]
}What the leaf hashes
{"body":"ebba921d58df3f77a1b8416eb2a7dbbef9570d7cbce1033d3eefbcf386c24e67","id":559427,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793135337027580,"prev":null,"subject":"58c608f6-76aa-4c70-83ca-5b5b28b5097b","subject_kind":"endpoint"}Proof
Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (273461 rows).
- 0x4f452d1fe41cba03b6c656d26487176f729c146986d23aad1856cf897b7f699f
- 0x068695f43845a8af330659ed9d00a975ec8a5af16a06e3b084f72d1a8a9f306a
- 0xf3b3d9d9cb4dce0eca7627da249823ba1ffbbe6e77dc96caf587be555084d516
- 0x6bd76fecd4988e11cb24679ed2a6c082919b6140b9e97655de2fabbf26dedaca
- 0x6bc0cc88cc9c1e7cc333b5ffd8a8cfaa513b5cb287c9fcc4208142a653c3513d
- 0x07a54c0509590d92cf55a11f59e886b1c7b1c92efb127c024e0ed377ed086073
- 0x0051918cd93132455f161e1ad4a55477d7cd8d105e72b131f85fd04abd3862b2
- 0x5b47ffb116f39fa2cbdc6c47b92f143910dd07459e4463459f2919bb89b80970
- 0x2ebe3b509ea7d2cf68cfd8d439dc9d3f2cfdfa4e45c89483e7717682d03b3d4d
- 0xddb3adc9cfacf52ec6ec3ca17c2cd1560f8f01d6ab3996f56581f75d9b6466ee
- 0x7b0f54aa0116cedb8afb80e7150869a7cf2b70adc313e0079a760b5d19d2efbc
- 0x8762ddf9a7f6b156629a8a66fe575b878ee44cd59a7f0a583ec6db0a152d703b
- 0x797da99476c7ebaa971607ae725e5e240b79de9e49d28859b94de107c850aaab
- 0x9ea0c6a53f80a30b6f13671109f98a000cf98e581875129f4be4b57131d06364
- 0xb78ea6a255dd06e2f402a1a733bca392fa6243920bcba95e8b80bdfc6ce5f553
- 0x3ed50f053eca72dfd3a9d45a11935240bfe691e57835c367ddebe2cbc49efe9d
- 0x0e01aa9525097570a6edaf32bfc959de57bf5c24317cf10c0716affea85ca60d
- 0xa20d48798a34aba12eb9c7297722982d910f06c148f5e27ac59307422964a585
- 0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699
- Day root
- 0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795
- Chained
- 0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4
- Published
- On Arc Testnet, block 69414147: 0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4