{"serverId":"mcp-registry/app.fojin/fojin-mcp","tools":[{"name":"get_parallels","fixed":{"name":"get_parallels","description":"Cross-canon parallel passages aligned to a fascicle.\n\n    fojin's alignment moat: given a Chinese fascicle, returns the aligned\n    Pali/Tibetan/Sanskrit parallels so you can compare how a passage is\n    rendered across traditions.\n\n    A fascicle returns parallels for the *whole* juan — often hundreds. To\n    narrow them to one passage, match the passage against `source_chunks[].text`\n    and keep the parallels whose `aligns_source_chunk` equals that chunk_index.\n\n    `urn` is filled for parall","inputSchema":{"type":"object","title":"get_parallelsArguments","required":["text_id","juan_num"],"properties":{"text_id":{"type":"integer","title":"Text Id"},"juan_num":{"type":"integer","title":"Juan Num"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":212,"tokensAfter":212},{"name":"lookup_dictionary","fixed":{"name":"lookup_dictionary","description":"Look up a Buddhist term across fojin's dictionaries (748K+ entries).","inputSchema":{"type":"object","title":"lookup_dictionaryArguments","required":["term"],"properties":{"term":{"type":"string","title":"Term"},"limit":{"type":"integer","title":"Limit","default":10}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":87,"tokensAfter":87},{"name":"lookup_entity","fixed":{"name":"lookup_entity","description":"Search fojin's knowledge graph for entities — people, places, works,\n    doctrinal terms — matching `query`.","inputSchema":{"type":"object","title":"lookup_entityArguments","required":["query"],"properties":{"limit":{"type":"integer","title":"Limit","default":10},"query":{"type":"string","title":"Query"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":97,"tokensAfter":97},{"name":"read_passage","fixed":{"name":"read_passage","description":"Read the full content of one fascicle (卷) of a text, with its `urn`.\n\n    Use the `text_id`/`juan_num` from a search_corpus hit. Returns the actual\n    canonical text — quote from this, not from memory.\n    ","inputSchema":{"type":"object","title":"read_passageArguments","required":["text_id","juan_num"],"properties":{"text_id":{"type":"integer","title":"Text Id"},"juan_num":{"type":"integer","title":"Juan Num"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":128,"tokensAfter":128},{"name":"resolve_urn","fixed":{"name":"resolve_urn","description":"Resolve a fojin URN (e.g. fojin:cbeta/T0001.1) to a reader URL and confirm\n    it exists in the corpus. Use to verify or dereference a citation.","inputSchema":{"type":"object","title":"resolve_urnArguments","required":["urn"],"properties":{"urn":{"type":"string","title":"Urn"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":89,"tokensAfter":89},{"name":"search_corpus","fixed":{"name":"search_corpus","description":"Semantic search across fojin's Buddhist corpus (10K+ texts, 30+ langs).\n\n    Returns the most relevant passages, each with a `urn`, title, snippet and\n    similarity score. `lang` optionally filters by language code\n    (lzh=Classical Chinese, pi=Pali, sa=Sanskrit, bo=Tibetan, en=English).\n    ","inputSchema":{"type":"object","title":"search_corpusArguments","required":["query"],"properties":{"lang":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lang","default":null},"limit":{"type":"integer","title":"Limit","default":10},"query":{"type":"string","title":"Query"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":174,"tokensAfter":174}],"toolsChanged":6,"tokensSaved":0,"todo":[{"tool":"commentaries","params":["limit","quote"]},{"tool":"get_parallels","params":["text_id","juan_num"]},{"tool":"lookup_dictionary","params":["term","limit"]},{"tool":"lookup_entity","params":["limit","query"]},{"tool":"read_passage","params":["text_id","juan_num"]},{"tool":"resolve_urn","params":["urn"]},{"tool":"search_corpus","params":["lang","limit","query"]},{"tool":"verify_quote","params":["cite","juan","quote"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}