Skip to main content
Glama

Document Search

search-documents
Read-onlyIdempotent

Find Studocu documents such as lecture notes and summaries. Pass topic keywords as query. Prefer numeric course_id from search-courses; it overrides course and institution. Results with match_type: semantic are closest matches, not exact keyword hits, and may be only loosely related.

Input Schema

NameRequiredDescriptionDefault
limitNoHow many Studocu documents to return. Integer from 1 to 50. Default 10.
queryYesTopic keywords only. Example: "supply and demand" or "microeconomics midterm 2025". Do not put a course name, course id, or school name here. Use institution, course, and course_id for those.
courseNoCourse name or code. Example: "Economics" or "ECON101". Use this when you do not have course_id. Do not put a numeric id here. Optional extra when you already have course_id. Omit if unknown.
course_idNoNumeric course id from search-courses (the course_id field). Example: 1581710. Prefer this: it pins the course and overrides the course name or code. Omit if you only have a name or code.
institutionNoSchool name only. Example: "University of Amsterdam". Not an id. This tool has no institution_id. Use the name from the user or from search-institutions. Omit if unknown. If course_id is also set, course_id wins and the result school is that course's school, not this name.
use_no_course_as_fallbackNoOnly used with course_id. When true and that course has no matching Studocu documents, search again without the course, so results may come from other courses. Check each result's course_id. Default false. Omit for false.

Output Schema

NameRequiredDescriptionDefault
documentsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • changedInput schema / properties / course / description
      Previous value: -"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."New value: +"Course name or code. Example: \"Economics\" or \"ECON101\". Use this when you do not have course_id. Do not put a numeric id here. Optional extra when you already have course_id. Omit if unknown."
    • changedInput schema / properties / course_id / description
      Previous value: -"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."New value: +"Numeric course id from search-courses (the course_id field). Example: 1581710. Prefer this: it pins the course and overrides the course name or code. Omit if you only have a name or code."
    • changedInput schema / properties / institution / description
      Previous value: -"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."New value: +"School name only. Example: \"University of Amsterdam\". Not an id. This tool has no institution_id. Use the name from the user or from search-institutions. Omit if unknown. If course_id is also set, course_id wins and the result school is that course's school, not this name."
    • changedInput schema / properties / limit / description
      Previous value: -"Number of results to return (1-50, default: 10)."New value: +"How many Studocu documents to return. Integer from 1 to 50. Default 10."
    • changedInput schema / properties / query / description
      Previous value: -"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."New value: +"Topic keywords only. Example: \"supply and demand\" or \"microeconomics midterm 2025\". Do not put a course name, course id, or school name here. Use institution, course, and course_id for those."
    • changedInput schema / properties / use_no_course_as_fallback / description
      Previous value: -"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."New value: +"Only used with course_id. When true and that course has no matching Studocu documents, search again without the course, so results may come from other courses. Check each result's course_id. Default false. Omit for false."
  2. Changed1 schema field changed
    • addedOutput schema / properties / documents / items / properties / match_type
      Added value: +{
      +  "const": "semantic",
      +  "type": "string"
      +}
  3. Changed3 schema fields changed
    • addedInput schema / properties / use_no_course_as_fallback
      Added value: +{
      +  "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"
      +}
    • addedOutput schema / properties / documents / items / properties / course_id
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / documents / items / properties / institution_id
      Added value: +{
      +  "type": "number"
      +}
  4. First observed

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds genuine behavioral context beyond that: semantic matches are not exact keyword hits and may be only loosely relevant, and course_id silently overrides other scoping fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the core action, then the query convention, then the scoping precedence rule. Every sentence carries actionable information and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With six parameters, full schema coverage, an output schema, and complete annotations, the description needs only to cover routing and result-interpretation caveats, which it does. The only minor gap is that use_no_course_as_fallback's purpose is left entirely to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter including use_no_course_as_fallback and the query restrictions is already documented in the schema. The description reinforces the course_id override rule but adds no parameter meaning that isn't already present in structured fields, making 3 the appropriate baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Find Studocu documents such as lecture notes and summaries") and names search-courses as the source for course_id, which clarifies the workflow relationship. It doesn't explicitly distinguish itself from read-only siblings like read-detached-document or read-artifact, so differentiation is only partial.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Prefer numeric course_id from search-courses; it overrides course and institution" gives concrete precedence guidance an agent can act on. It also warns that semantic match_type results may be loosely related, which sets expectations about result quality, though there is no explicit statement of when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources