nope-mcp — Open Educational Resources search
Search German open educational resources (OER) via AMB/schema.org metadata, open licenses only.
- 0.4.0
- Version
- remote
- Transport
- 18
- Tools
Security review
Review passedReviewed 1d ago.
- tools: 18 tools scanned
- metadata: scanned
No findings.
Tools (18)
search_resources
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.
search_content
Topic search across ALL content types on the relay in one ranked call: educational resources (kind 30142), long-form articles/blogs (30023), wikis (30818), projects (30143), measures (30144), and NKBIP-01 publications (30040 indices + 30041 sections — scientific articles, books). Results are interleaved and ranked by semantic passage match, and each carries the matched passage ("snippet") when available — use it to answer the user, not just list links. Educational resources are returned only when openly licensed (CC0, Public Domain, CC BY, CC BY-SA); the other content types carry no license and are all included. This is the tool for DISCOVERY intent — the user wants materials to browse ("finde/suche/empfiehl Materialien zu X"): present the items. For QUESTION intent — the user wants an answer built from the content ("wie/warum/was hilft bei X?") — prefer search_passages, which returns quotable fulltext passages with citations; this tool then supplements the answer with browsable links.
get_resource
Retrieve a single piece of content by naddr (preferred — pass a search_content result's naddr), d-tag identifier, or event ID. naddrs of ANY content type from search_content work (resources, articles, wikis, projects, measures, publications); non-resource kinds return the same shape as their search results. Bare identifier/eventId lookups (no naddr) always resolve the full educational-resource metadata (kind 30142), including creator/publisher and educational properties. Lookups are not license-filtered: a learning resource carries openLicense (true for CC0, Public Domain, CC BY, CC BY-SA — the open licenses that search results are currently limited to). When presenting the resource, render a markdown link the user can open: prefer its sourcePage (the original source page); fall back to url (the edufeed viewer) only when sourcePage is absent.
browse_subjects
List available subjects/topics in the educational resource collection. Returns subjects with their labels and resource counts.
browse_resource_types
List available learning resource types (Video, Course, Worksheet, etc.) with resource counts.
browse_educational_levels
List available educational levels (Primary, Secondary, Higher Education, etc.) with resource counts.
relay_stats
Get information about all selectable AMB relays (default and extra), including supported NIPs, relay name, and description.
list_relays
List the configured AMB relays. defaultRelays are searched on every query; extraRelays hold different corpora (e.g. the OERSI aggregation) and are only searched when a search/get tool call passes them in its relays parameter.
relay_list_get
Get a user's NIP-65 relay list (kind 10002). Returns read and write relays for the specified pubkey. If no pubkey provided, uses the connected signer's pubkey.
skos_get_vocabulary
Fetch and parse a SKOS vocabulary from its URI. Returns the concept scheme with all concepts organized hierarchically.
skos_get_concept
Get details of a single SKOS concept by its URI, including broader, narrower, and related concepts.
skos_search
Search for concepts in a SKOS vocabulary. By default searches prefLabel, altLabel, hiddenLabel, and definition.
list_known_authors
List known educational resource authors loaded from configured follow sets (NIP-51 kind 30000). Returns author names, pubkeys, and NIP-05 identifiers. Use the returned pubkeys with search_resources(authors: [...]) to filter resources by author.
resolve_author
Resolve an org or person NAME to candidate pubkeys using the relay's kind-0 author-profile index (NIP-50 search). Use this to answer name-driven content questions like "recent articles and resources of Jörg Lohrer": call resolve_author(name), pick the best candidate, then pass its pubkey to search_content({ authors: [pubkey], ... }) (and/or search_calendar_events) to fetch that author's content. Returns several candidates ranked by relevance so you can disambiguate. This indexes authors who have published content here — distinct from list_known_authors, which lists hand-curated follow sets. NOTE: this resolves only kind-0 author profiles. It does NOT resolve a community's identifying pubkey — a community is defined by a kind-10222 event and frequently has no kind-0 at all. To list content shared into a community you need that community pubkey (a Nostr identifier, e.g. from the community's spec/naddr), which you pass to the `community` param of search_content / search_calendar_events. r
resolve_publisher
Resolve an actor name (organization or person) to the EXACT spelling used in the AMB metadata, so it can be passed to the publisherName/creatorName filters of search_resources. Those filters are exact full-string matches (case-insensitive), so a guessed spelling like "Lehreladen" silently misses the stored "LEHRE LADEN". This tool free-text searches the name and returns the similar publisher/creator names found in the corpus, with the field they appear in and a resource count. Distinct from resolve_author, which resolves Nostr signing accounts (kind-0 profiles) to pubkeys — metadata publishers usually have no Nostr account at all.
search_calendar_events
Search for NIP-52 calendar events (date-based and time-based). Supports temporal filters (start/end time ranges), geohash location filtering, and hashtag filtering. Returns events from the configured calendar relay. When presenting an event to the user, render it as a markdown link: prefer the event `url` (the edufeed-app viewer at <base>/<naddr>, which shows fuller details) over `sourcePage` (the original external event page). Never construct an naddr or viewer URL yourself — use the `naddr`/`url` fields as returned.
list_calendar_authors
List known calendar event authors loaded from configured follow sets (NIP-51 kind 30000). Returns author names, pubkeys, and NIP-05 identifiers. Use the returned pubkeys with search_calendar_events(authors: [...]) to filter events by author.
search_passages
THE DEFAULT TOOL FOR QUESTION-SHAPED QUERIES ("wie/warum/was hilft bei X?", "how do I…?"): retrieves the best-matching fulltext passages from the corpus and returns them with citations (source resource, page, heading, source URL) — answer the user FROM the passages and cite each source. (For discovery intent — "finde/empfiehl Materialien" — use search_content instead, or afterwards to offer browsable links.) Keep `question` topic-only. Ranking is hybrid keyword+vector, so phrase the question as a topical statement that names the subject and the target group ("Friedenserziehung in der Grundschule: Einstieg in das Thema Frieden mit Kindern"), not as the user's literal sentence ("Wie kann ich …?"). Results are capped at two passages per document; a passage with only a snippet and no text has no fulltext yet — say so instead of guessing. Educational-resource passages come only from openly licensed resources (CC0, Public Domain, CC BY, CC BY-SA); other content types are not license-filtered