# Studocu

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

- name: com.studocu/studocu
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 86/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.studocu%2Fstudocu
- tools: https://api.protogrid.dev/v1/servers/com.studocu%2Fstudocu/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "studocu": {
      "type": "http",
      "url": "https://agent-os-mcp.alpha.studocu.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% +updated-8d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 86/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 20 of 20 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 7,741 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 75 (weight 15)

- warn `stability.changes`: 21 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 20, about 7,741 tokens to load them all
- tool set hash: 002da5488b5470c12500a8262456eaa5
- tools last changed: 2026-10-19T15:45:19.837Z
- badge: [![protogrid quality](https://protogrid.dev/badge/com.studocu/studocu.svg)](https://protogrid.dev/servers/com.studocu/studocu)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-19 `get-course-syllabus` changed (description)
  - before: 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.
  - after: 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.
- 2026-10-15 `delete-memory` changed (annotations)
- 2026-10-15 `write-memory` changed (annotations)
- 2026-10-15 `read-memory` changed (annotations)
- 2026-10-15 `request-creation` changed (annotations)
- 2026-10-15 `update-project` changed (annotations)
- 2026-10-15 `create-project` changed (annotations)
- 2026-10-15 `add-document-sources` changed (annotations)
- 2026-10-15 `write-artifact` changed (annotations)
- 2026-10-15 `get-course-mastery` changed (annotations)

Full history: https://api.protogrid.dev/v1/servers/com.studocu%2Fstudocu/changes

## Remotes

- https://agent-os-mcp.alpha.studocu.com/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (20)

- `add-document-sources`: 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.
- `agent-os-session`: Use this proof tool to verify that the Agent OS MCP server received a valid delegated Studocu session.
- `create-project`: Create a Studocu project and optionally configure its emoji and course. A numeric course_id is validated before project creation.
- `delete-memory`: 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.
- `get-context`: 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.
- `get-course-mastery`: 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.
- `get-course-syllabus`: 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.
- `get-project-state`: 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.
- `read-artifact`: Read a Studocu project source or creation by its studocu://project/{project_id}/{kind}/{uuid} URI. Returns normalized metadata with explicitly mapped inline content.
- `read-detached-document`: Read a Studocu document directly, without requiring or creating a project source. Use read-artifact for documents attached to a project.
- `read-memory`: 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.
- `read-web-url`: 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.
- `request-creation`: 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.
- `search-courses`: 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.
- `search-documents`: 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.
- `search-institutions`: 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.
- `search-web`: 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.
- `update-project`: Update a Studocu project title, emoji, or course. Use course_id null to clear the course and institution.
- `write-artifact`: Create a Studocu artifact from typed content. Provide project_id and an artifact envelope; the artifact type defines the required content shape.
- `write-memory`: 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.
