Skip to main content
Glama

nope-mcp — Open Educational Resources search

Search Educational Resources

search_resources
Read-onlyIdempotent

Search for educational resources (learning materials, courses, videos, etc.) using full-text search and metadata filters. Returns resources matching the query from the AMB relay. Every learning resource is returned by default, whatever its license; each result carries license ({id, label}, or null when unlicensed) and accessLevel ("full" for Creative Commons, Public Domain and free software/documentation licenses, and DINI-AG-KIM license types that resolve to one of these; "metadata-only" otherwise). licenseFilter narrows the results: "open" = CC0, Public Domain, CC BY, CC BY-SA, their DINI-AG-KIM license-type equivalents, and free software/documentation licenses (GPL, LGPL, AGPL, GFDL, MIT, Apache 2.0, BSD); "cc-any" = all of "open" plus every other Creative Commons license, incl. KIM non-commercial/no-derivatives; "any" = also unlicensed and all-rights-reserved resources. When citing a resource, always name its creator and publisher. NOTE: the metadata filters (publisherName, creatorName, subjectLabel, resourceTypeLabel, educationalLevelLabel) are EXACT full-string matches against the stored metadata (case-insensitive) — not fuzzy or substring searches. A guessed spelling silently returns 0 results; use resolve_publisher to find the canonical actor spelling first. On a zero-match actor filter the response includes actorCandidates with similar spellings to retry with.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "search_resources"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNoMaximum number of results (1-250, default: 20)
queryNoFree-text search query (e.g., "mathematik", "machine learning")
sinceNoReturn resources created at or after this Unix timestamp
untilNoReturn resources created at or before this Unix timestamp
relaysNoRestrict the search to specific relays. Only relays returned by list_relays (default or extra) are accepted, by full URL or short name (e.g. "oersi", "sodix"). Default: the default relay set.
authorsNoFilter by author pubkeys (hex format)
languageNoLanguage for label filters (default: "de")de
creatorNameNoFilter by creator/author name — EXACT full-string match (case-insensitive) against the AMB metadata. Unsure of the spelling? Call resolve_publisher first.
subjectLabelNoFilter by subject/topic label — EXACT label match (e.g., "Mathematik", "Physik"); browse_subjects lists valid labels
licenseFilterNoRestrict results by license: "open" (CC0, Public Domain, CC BY, CC BY-SA, their DINI-AG-KIM license-type equivalents, and free software/documentation licenses (GPL, LGPL, AGPL, GFDL, MIT, Apache 2.0, BSD)), "cc-any" (all of "open" plus every other Creative Commons license, incl. KIM non-commercial/no-derivatives) or "any" (every resource, including unlicensed and all-rights-reserved). Default: the server's ceiling (normally any).
publisherNameNoFilter by publisher name — EXACT full-string match (case-insensitive) against the AMB metadata, e.g. "e-teaching.org" or "LEHRE LADEN" (not "Lehreladen"). Unsure of the spelling? Call resolve_publisher first.
resourceTypeLabelNoFilter by resource type label — EXACT label match (e.g., "Video", "Kurs", "Arbeitsblatt"); browse_resource_types lists valid labels
educationalLevelLabelNoFilter by educational level — EXACT label match (e.g., "Sekundarstufe I", "Hochschule"); browse_educational_levels lists valid labels

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / query / maxLength
      Added value: +500
  2. Changed1 schema field changed
    • changedInput schema / properties / licenseFilter / description
      Previous value: -"Restrict results by license: \"open\" (CC0, Public Domain, CC BY, CC BY-SA), \"cc-any\" (all Creative Commons and Public Domain) or \"any\" (every resource, including unlicensed and all-rights-reserved). Default: the server's ceiling (normally any)."New value: +"Restrict results by license: \"open\" (CC0, Public Domain, CC BY, CC BY-SA, their DINI-AG-KIM license-type equivalents, and free software/documentation licenses (GPL, LGPL, AGPL, GFDL, MIT, Apache 2.0, BSD)), \"cc-any\" (all of \"open\" plus every other Creative Commons license, incl. KIM non-commercial/no-derivatives) or \"any\" (every resource, including unlicensed and all-rights-reserved). Default: the server's ceiling (normally any)."
  3. Changed1 schema field changed
    • addedInput schema / properties / licenseFilter
      Added value: +{
      +  "description": "Restrict results by license: \"open\" (CC0, Public Domain, CC BY, CC BY-SA), \"cc-any\" (all Creative Commons and Public Domain) or \"any\" (every resource, including unlicensed and all-rights-reserved). Default: the server's ceiling (normally any).",
      +  "enum": [
      +    "open",
      +    "cc-any",
      +    "any"
      +  ],
      +  "type": "string"
      +}
  4. First observed

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already cover the read-only/idempotent safety profile, and the description adds substantially beyond them: default behavior returns every resource regardless of license, results carry license and accessLevel with the exact mapping rules, and zero-match actor filters return actorCandidates. It also discloses a citation obligation (name creator and publisher), which no structured field conveys.

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

Conciseness3/5

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

Purpose is front-loaded in the first sentence, but the license and accessLevel taxonomy is restated at length in terms nearly identical to the licenseFilter enum description, and the exact-match warning duplicates the wording already in creatorName/publisherName. Roughly a third of the text is schema repetition rather than added meaning.

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?

For a 13-parameter tool with no output schema, the description covers result shape (license, accessLevel, actorCandidates) and the main silent-failure mode of exact-match filters. Remaining gaps such as pagination behavior and since/until semantics are handled by the schema or not critical for correct invocation.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description earns a step above by adding cross-tool workflow semantics the schema cannot express — resolve_publisher for canonical spellings and actorCandidates as a recovery path. Its licenseFilter and exact-match explanations largely restate what the schema already documents.

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

Purpose5/5

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

States a specific verb and resource ("Search for educational resources ... using full-text search and metadata filters") and scopes it to the AMB relay corpus. The resource domain plus the note about license/accessLevel on results makes it distinguishable from content- or passage-oriented siblings without opening a schema.

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?

Gives concrete operational routing: call resolve_publisher before guessing an actor spelling, browse_subjects / browse_resource_types / browse_educational_levels for valid labels, and retry using actorCandidates on a zero-match actor filter. It never states when to prefer this tool over search_content or search_passages, so tool-level alternative guidance is absent.

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.