Search Educational Content (resources, articles, wikis, projects, measures, publications)
search_contentTopic 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. Every learning resource is returned by default, whatever its license; each resource 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). Snippets and passages exist only for accessLevel:"full" resources — present a "metadata-only" resource by its title, description, license and link, never quoted beyond its metadata, and always name the license and the creator/publisher. 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. The other content types carry no license and are always 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. Each result carries eventAuthor (the Nostr signer who uploaded the event — often an aggregator) plus, for resources, creator/publisher (who actually made and published the resource); these can differ, so do not treat eventAuthor as the publisher. For full metadata (license, dates, complete entity lists) pass a result's naddr to get_resource. Publication facets ride inside the query string as NIP-50 field filters: append type:academic, doi:10.1234/abcd.5678, keywords:, or partOf:30143:: ("publications of a project") to the query — the relay resolves them server-side. When presenting results to the user, render each as a markdown link so they can open it directly — prefer sourcePage (the original external source page, present on most resources and on projects/measures/publications), then url, then naddr. For upcoming events on the same topic, follow up with search_calendar_events.
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_content"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (1-250, default 20). | |
| query | No | Free-text topic (e.g., "Unaufmerksamkeit im Seminar"). Keep it to the TOPIC only — do not append actor/organization names ("… Lehreladen"): they dilute the semantic ranking and the actor's content drops out of the top results. To constrain by actor, resolve the name first (resolve_author → authors param here; or resolve_publisher → search_resources publisherName). | |
| since | No | Created at or after this Unix timestamp. | |
| types | No | Restrict to a subset of content types. Default: all of them. | |
| until | No | Created at or before this Unix timestamp. | |
| relays | No | Restrict 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. | |
| authors | No | Filter by author pubkeys (hex). | |
| language | No | Label language (default "de"). | de |
| community | No | Return content shared into this community (Communikey). Accepts a hex pubkey or npub. Resolve a community name with find_community (when available) or resolve_author. Combine with query to scope a topic to a community (e.g. "math resources shared with X"). | |
| licenseFilter | No | Restrict educational-resource 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). Other content types are never license-filtered. |