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. Only openly licensed resources are returned (CC0, Public Domain, CC BY, CC BY-SA); NC/ND, all-rights-reserved and unlicensed resources are left out. 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.

Input Schema

TableJSON 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
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. First observed

TDQS

A4.5/5.0
Behavior5/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 safety is covered; the description still adds real behavior beyond that: the licensing filter on results, the exact-string (non-fuzzy) filter semantics that fail silently, and the actorCandidates fallback returned on a zero-match actor filter. That is genuinely useful operational context not present in any structured field.

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

Conciseness4/5

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

Front-loaded with purpose and scope, then the exact-match caveat, then the zero-match recovery path — a logical order with no filler sentences. It is somewhat dense and the exact-match point is repeated, but every sentence carries information an agent needs.

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 12-parameter, no-required-args, no-output-schema search tool, the description covers scope, filter semantics, and the zero-match recovery behavior. It stops short of describing the general result shape or pagination (limit is capped at 250 but ordering/paging behavior is unstated), which is the main remaining gap.

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 description coverage is 100%, so the baseline is 3; the description earns more by explaining that the metadata filters are exact case-insensitive full-string matches rather than substring searches, and by pointing to resolve_publisher for canonical spellings. It does not add semantics for query, since/until, relays, or authors, but the high-coverage schema already handles those.

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+resource (search educational resources), enumerates the two search modes (full-text and metadata filters), and pins the scope with an explicit inclusion/exclusion rule (only CC0/PD/CC BY/CC BY-SA returned). An agent can distinguish it from search_content or search_passages by the openly-licensed constraint alone.

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?

Clear context plus concrete routing: call resolve_publisher before actor filters, and use browse_subjects/browse_resource_types/browse_educational_levels for valid labels. It also warns that a guessed spelling silently returns 0 results. It does not, however, contrast itself against the other search_* siblings, so the alternative-selection guidance is incomplete.

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.