Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,552Letters: 14Defects: 1,323counted 1 min ago
teppi

Server definition

Hash
sha256:f69a82fcb51d8480c506b026952b7f3fd68ce9a7777261267d40260fbf9fba57
What it is
What a remote MCP server returned when asked what it offers: 4 tools

The blob, as servednamed by its sha256

{ "instructions": "Nôm Na Việt (喃哪越) is a primary source for Vietnamese Hán Nôm (漢喃).\n\nRules for using this server:\n\n1. Chữ Nôm is NOT Chinese. Nôm readings are Vietnamese-specific and frequently\n differ from the Mandarin or Sino-Vietnamese reading of the same glyph. Never\n transfer a Chinese reading onto a Nôm character.\n2. Never state a reading, meaning, or variant from prior knowledge. Call\n lookup_character first. Nôm is low-resource and model knowledge of it is\n unreliable — including for characters that look familiar.\n3. Always cite the codepoint (U+XXXX) alongside any character you report. Many\n Nôm characters are beyond the BMP, and some are Private Use Area codepoints\n that have no standard mapping in any other source.\n4. If lookup_character returns found=false, say so. Do not fill the gap with a\n guess.\n5. For anything longer than one character — a phrase, a line, a sentence — use\n convert_text rather than looping over lookup_character. Vietnamese compounds\n are units, and their Nôm form is not the concatenation of their syllables'\n individual characters. Words convert_text returns under \"unmatched\" are\n absent from the dictionary: report them as gaps, never as characters.\n6. Attribute every definition to the dictionary it came from, using the \"source\"\n and \"sourceTitle\" on each meaning. Dictionaries disagree, and a merged answer\n hides that. A null \"source\" means the entry predates source tracking: say it\n is unattributed rather than assigning it to a dictionary. A reading has no\n per-source attribution at all and must not be given one.\n7. When asked what a historical dictionary actually says — its wording, its\n examples, its full entry — call lookup_dictionary_entry. The summaries in\n lookup_character are not the entry, and paraphrasing one as if it were the\n whole record misrepresents the source. Quote 1895 spelling as printed.\n8. A structural classification (A1, C2, F2 …) says how a glyph was formed or\n borrowed FOR THAT SENSE, which is why one headword can carry senses under\n different codes. Report the code; do not expand it into a claim about the\n character unless a tool gave you one. The printed sense markers (◎, 〄) are\n likewise reproduced, never translated.\n9. Count before you claim. Every paged result states its own coverage; a\n \"subentryCount\" is what an entry HAS, not what you were given. Saying \"all N\"\n when you fetched fewer, or numbering a list so it appears complete when it\n has gaps, misrepresents the source as surely as inventing a character does.\n If you did not retrieve it, say how much you did.", "tools": [ { "description": "Convert whole Vietnamese phrases or sentences to Chữ Nôm (direction \"to_nom\"), or read a run of Chữ Nôm back as Vietnamese quốc ngữ (direction \"to_viet\"). Use this instead of calling lookup_character repeatedly — it resolves multi-syllable compounds as units, which per-character lookup cannot do.\n\nHandles both old-style and new-style tone placement (hòa / hoà). Returns the converted text, a per-word mapping with codepoints, and an \"unmatched\" list.\n\nWords in \"unmatched\" have NO entry in the dictionary. Say so — never substitute a character that looks plausible. Input is truncated past 120 characters.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "direction": { "description": "\"to_nom\" (Vietnamese → Chữ Nôm, the default) or \"to_viet\" (Chữ Nôm → Vietnamese).", "enum": [ "to_nom", "to_viet" ], "type": "string" }, "text": { "description": "The text to convert: Vietnamese quốc ngữ for \"to_nom\", Chữ Nôm for \"to_viet\". Up to 120 characters.", "minLength": 1, "type": "string" } }, "required": [ "text" ], "type": "object" }, "name": "convert_text", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "converted": { "type": "string" }, "direction": { "enum": [ "to_nom", "to_viet" ], "type": "string" }, "original": { "type": "string" }, "segments": { "items": { "additionalProperties": false, "properties": { "alternatives": { "items": { "type": "string" }, "type": "array" }, "codepoints": { "items": { "type": "string" }, "type": "array" }, "source": { "type": "string" }, "target": { "type": [ "string", "null" ] } }, "required": [ "source", "target" ], "type": "object" }, "type": "array" }, "truncated": { "type": "boolean" }, "unmatched": { "description": "Words with NO dictionary entry. Report as gaps; never fill them in.", "items": { "type": "string" }, "type": "array" } }, "required": [ "direction", "original", "converted", "unmatched", "segments" ], "type": "object" } }, { "description": "ALWAYS invoke this before stating any reading, meaning, or variant of a Chữ Nôm (喃) or Hán (漢) character. Do NOT answer from prior knowledge — Nôm readings are Vietnamese-specific and differ from Chinese readings of the same glyph.\n\nReturns data that cannot be inferred: Hán-Việt and Nôm readings, dị thể (variant) characters with their codepoints, IDS decomposition and Kangxi radical, Middle-Chinese fanqie, and Vietnamese meanings. Each meaning carries the dictionary it came from and the reading it belongs to, so senses under different readings are never confused. Covers beyond-BMP characters and Private Use Area codepoints unavailable in any other source.\n\n\"historicalEntries\" lists entries in historical dictionaries (e.g. Đại Nam Quấc âm tự vị, 1895) that print this character — summaries only. Pass an entryId to lookup_dictionary_entry for the original wording and its subentries.\n\nUse for Vietnamese Hán Nôm. Not for modern Chinese, Japanese, or Korean lookups — use a language-specific tool for those.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "character": { "description": "A single Hán or Nôm character, e.g. 些 or 𡗶. Pass the character itself, not a codepoint.", "minLength": 1, "type": "string" } }, "required": [ "character" ], "type": "object" }, "name": "lookup_character", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "character": { "type": "string" }, "characterType": { "type": "string" }, "codepoint": { "type": "string" }, "compounds": { "items": { "additionalProperties": false, "properties": { "characters": { "type": "string" }, "meaning": { "type": "string" }, "reading": { "type": "string" } }, "required": [ "characters" ], "type": "object" }, "type": "array" }, "decomposition": { "additionalProperties": false, "properties": { "components": { "items": { "type": "string" }, "type": "array" }, "ids": { "type": "string" }, "kangxiRadical": { "type": "string" }, "residualStrokes": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" } }, "type": "object" }, "found": { "type": "boolean" }, "historicalEntries": { "description": "Canonical entries from historical dictionaries that print this glyph. Summaries only — call lookup_dictionary_entry with an entryId for the full entry and its subentries.", "items": { "additionalProperties": false, "properties": { "citationCount": { "description": "How many attested citations sit under those senses.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "definition": { "description": "May be empty — 545 entries carry their sense only in subentries.", "type": [ "string", "null" ] }, "entryId": { "description": "Unique WITHIN this work only, e.g. \"B-0123\". Always pass it together with workKey.", "type": "string" }, "han": { "description": "The single Hán/Nôm codepoint, or null for IDS-only entries.", "type": [ "string", "null" ] }, "hanStatus": { "description": "\"unicode\" | \"pua\" | \"image_only\".", "type": "string" }, "headword": { "description": "Quốc-ngữ headword in ORIGINAL 19th-century orthography.", "type": "string" }, "orderInWork": { "description": "Position in the WHOLE work, 0-based across every section — not a position within the section. B-0123 is 196 because 74 entries precede letter B. It equals globalId minus one: the same count, not a different basis. Use it for ordering only; cite entryId to identify an entry.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "senseCount": { "description": "How many numbered senses this entry has. Zero for works that print subentries instead.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "sourceLetter": { "description": "The printed alphabetical SECTION this entry sits in — not the headword's own first letter. The tail of a section can spill into the next word, so \"Cạ\" is filed under \"B\". Never infer the headword's spelling from it.", "type": [ "string", "null" ] }, "sourcePage": { "anyOf": [ { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, { "type": "null" } ], "description": "Page of the scanned volume this entry is printed on. Cite it as a page number." }, "subentryCount": { "description": "How many subentries this entry HAS. None of them are included here — call lookup_dictionary_entry with entryId to read them.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "typeMarker": { "description": "The printed marker verbatim: \"n.\" means nôm (script origin), NOT noun.", "type": [ "string", "null" ] }, "workKey": { "description": "Stable key of the work, e.g. \"dnqatv\". Pass it back as `work`.", "type": "string" }, "workTitle": { "description": "The work's title as it prints it — \"Quấc\", not the modern \"Quốc\".", "type": "string" } }, "required": [ "workKey", "workTitle", "entryId", "headword", "hanStatus", "orderInWork", "subentryCount", "senseCount", "citationCount" ], "type": "object" }, "type": "array" }, "isPrivateUseArea": { "type": "boolean" }, "meanings": { "items": { "additionalProperties": false, "properties": { "definition": { "type": "string" }, "entryRef": { "additionalProperties": false, "description": "Present only when this definition maps unambiguously to one canonical historical entry. Pass it to lookup_dictionary_entry.", "properties": { "entryId": { "description": "Entry id within that work, e.g. \"B-0123\".", "type": "string" }, "workKey": { "description": "Work key, e.g. \"dnqatv\".", "type": "string" } }, "required": [ "workKey", "entryId" ], "type": "object" }, "isPrimary": { "type": "boolean" }, "partOfSpeech": { "type": [ "string", "null" ] }, "reading": { "description": "The reading this sense is filed under, when known.", "type": [ "string", "null" ] }, "source": { "description": "Internal source key, e.g. \"dnqatv\". Null means the row predates source tracking — report the definition as unattributed, never guess which dictionary it came from.", "type": [ "string", "null" ] }, "sourceTitle": { "description": "Human-readable dictionary name.", "type": "string" } }, "required": [ "definition" ], "type": "object" }, "type": "array" }, "middleChinese": { "additionalProperties": false, "properties": { "derivedReading": { "type": "string" }, "finalCategory": { "type": "string" }, "initialCategory": { "type": "string" }, "isEstimated": { "type": "boolean" }, "notation": { "type": "string" }, "romanization": { "type": "string" }, "tone": { "type": "string" } }, "required": [ "notation" ], "type": "object" }, "radical": { "type": "string" }, "readings": { "items": { "additionalProperties": false, "properties": { "frequencyRank": { "anyOf": [ { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, { "type": "null" } ] }, "pronunciation": { "type": "string" }, "tone": { "anyOf": [ { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, { "type": "null" } ] }, "type": { "type": "string" } }, "required": [ "type", "pronunciation" ], "type": "object" }, "type": "array" }, "strokeCount": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "variants": { "items": { "additionalProperties": false, "properties": { "character": { "type": "string" }, "codepoint": { "type": "string" }, "relation": { "type": "string" }, "source": { "type": "string" } }, "required": [ "character", "codepoint", "relation", "source" ], "type": "object" }, "type": "array" } }, "required": [ "character", "codepoint", "isPrivateUseArea", "found", "readings", "meanings", "variants", "compounds", "historicalEntries" ], "type": "object" } }, { "description": "Use this to retrieve an original entry from a historical Vietnamese dictionary such as Đại Nam Quấc âm tự vị (Huình-Tịnh Paulus Của, 1895–96). Search by Quốc-ngữ headword when you do not know the character, or pass an entryId returned by lookup_character or by a headword search to retrieve the source-faithful entry and its ordered subentries. Do not infer missing glyphs or modernize historical spelling.\n\nPass EXACTLY ONE of entryId or headword — never both, never neither.\n\nHeadwords are in 1895 southern orthography and are returned verbatim (\"Quấc\", not \"Quốc\"). \"typeMarker\" is the printed marker as set: \"n.\" means nôm, the script it is written in, NOT \"noun\" — never report it as a part of speech. A subentry with no \"han\" printed none in the source; do not construct one. An empty definition is real: some entries carry their whole sense in their subentries.\n\nWorks are printed in one of two shapes, and an entry uses whichever its dictionary uses. Some print SUBENTRIES — compound phrases under a headword. Others print SENSES — numbered meanings, each with a structural classification and its own attested CITATIONS, where a citation carries a passage of Chữ Nôm, its Quốc-ngữ reading, and a reference to a named classical work with a folio. Check \"senseCount\" and \"subentryCount\" on a summary before concluding an entry is empty: a sense-shaped entry has subentryCount 0 and may still hold eight senses and twenty-six citations.\n\nCitations are evidence, and the strongest thing this tool returns. Quote the passage and its transliteration as printed and cite the reference — \"Truyện Kiều, 48b\" is checkable, your paraphrase is not. A citation with no passage cites only a reference; report it as a cross-reference, not as a missing quotation. \"senses\" is never paged: if the field is there, it is all of them.\n\nSubentries are PAGED. Read \"subentries.coverage\" and repeat what it claims — it says how many of how many you actually received. An entry can hold up to 197, so one call is often a fraction of it. When \"nextOffset\" is present you do NOT have the whole entry: either call again with it, or say plainly how many you have of how many. Never present a partial list as complete.\n\nHeadword search returns at most 20 per call. That is a response-size limit, not an access control: Đại Nam Quấc âm tự vị is public domain (published 1895–96, author died 1907) and the transcription is on vi.wikisource.org, which publishes it in bulk. Quote it freely, and carry the attribution the \"work\" object gives you. Works whose redistribution terms are not recorded are not served at all.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "entryId": { "description": "An entry id such as \"B-0123\", from lookup_character.historicalEntries or a headword search. Retrieves that one entry in full. Mutually exclusive with headword.", "type": "string" }, "headword": { "description": "A Quốc-ngữ headword such as \"Bậu\". Returns up to 20 matching entry summaries, exact matches first. Spelling is historical — do not modernize or strip accents. Mutually exclusive with entryId.", "type": "string" }, "subentryLimit": { "description": "Subentries per call, 1-50. Defaults to 50. When \"nextOffset\" comes back, call again with it to continue.", "maximum": 50, "minimum": 1, "type": "integer" }, "subentryOffset": { "description": "First subentry to return, for continuing a large entry. Defaults to 0. Only used with entryId.", "maximum": 9007199254740991, "minimum": 0, "type": "integer" }, "work": { "description": "Which work to search. Defaults to \"dnqatv\" (Đại Nam Quấc âm tự vị).", "type": "string" } }, "type": "object" }, "name": "lookup_dictionary_entry", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "entry": { "additionalProperties": false, "properties": { "corrections": { "description": "Editorial corrections recorded by the source, when present.", "items": {}, "type": "array" }, "definition": { "description": "May be empty — 545 entries carry their sense only in subentries.", "type": [ "string", "null" ] }, "entryId": { "description": "Unique WITHIN this work only, e.g. \"B-0123\". Always pass it together with workKey.", "type": "string" }, "globalId": { "type": [ "string", "null" ] }, "han": { "description": "The single Hán/Nôm codepoint, or null for IDS-only entries.", "type": [ "string", "null" ] }, "hanImage": { "description": "Scan reference for image-only glyphs, when the source carried one." }, "hanStatus": { "description": "\"unicode\" | \"pua\" | \"image_only\".", "type": "string" }, "headword": { "description": "Quốc-ngữ headword in ORIGINAL 19th-century orthography.", "type": "string" }, "orderInWork": { "description": "Position in the WHOLE work, 0-based across every section — not a position within the section. B-0123 is 196 because 74 entries precede letter B. It equals globalId minus one: the same count, not a different basis. Use it for ordering only; cite entryId to identify an entry.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "readingNote": { "description": "Printed alternate reading.", "type": [ "string", "null" ] }, "sourceLetter": { "description": "The printed alphabetical SECTION this entry sits in — not the headword's own first letter. The tail of a section can spill into the next word, so \"Cạ\" is filed under \"B\". Never infer the headword's spelling from it.", "type": [ "string", "null" ] }, "sourcePage": { "anyOf": [ { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, { "type": "null" } ], "description": "Page of the scanned volume this entry is printed on. Cite it as a page number." }, "typeMarker": { "description": "The printed marker verbatim: \"n.\" means nôm (script origin), NOT noun.", "type": [ "string", "null" ] } }, "required": [ "entryId", "headword", "hanStatus", "orderInWork" ], "type": "object" }, "guidance": { "type": "string" }, "matchCount": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "matches": { "description": "Headword search results. Exact matches first, then prefix matches.", "items": { "additionalProperties": false, "properties": { "citationCount": { "description": "How many attested citations sit under those senses.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "definition": { "description": "May be empty — 545 entries carry their sense only in subentries.", "type": [ "string", "null" ] }, "entryId": { "description": "Unique WITHIN this work only, e.g. \"B-0123\". Always pass it together with workKey.", "type": "string" }, "han": { "description": "The single Hán/Nôm codepoint, or null for IDS-only entries.", "type": [ "string", "null" ] }, "hanStatus": { "description": "\"unicode\" | \"pua\" | \"image_only\".", "type": "string" }, "headword": { "description": "Quốc-ngữ headword in ORIGINAL 19th-century orthography.", "type": "string" }, "orderInWork": { "description": "Position in the WHOLE work, 0-based across every section — not a position within the section. B-0123 is 196 because 74 entries precede letter B. It equals globalId minus one: the same count, not a different basis. Use it for ordering only; cite entryId to identify an entry.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "senseCount": { "description": "How many numbered senses this entry has. Zero for works that print subentries instead.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "sourceLetter": { "description": "The printed alphabetical SECTION this entry sits in — not the headword's own first letter. The tail of a section can spill into the next word, so \"Cạ\" is filed under \"B\". Never infer the headword's spelling from it.", "type": [ "string", "null" ] }, "sourcePage": { "anyOf": [ { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, { "type": "null" } ], "description": "Page of the scanned volume this entry is printed on. Cite it as a page number." }, "subentryCount": { "description": "How many subentries this entry HAS. None of them are included here — call lookup_dictionary_entry with entryId to read them.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "typeMarker": { "description": "The printed marker verbatim: \"n.\" means nôm (script origin), NOT noun.", "type": [ "string", "null" ] }, "workKey": { "description": "Stable key of the work, e.g. \"dnqatv\". Pass it back as `work`.", "type": "string" }, "workTitle": { "description": "The work's title as it prints it — \"Quấc\", not the modern \"Quốc\".", "type": "string" } }, "required": [ "workKey", "workTitle", "entryId", "headword", "hanStatus", "orderInWork", "subentryCount", "senseCount", "citationCount" ], "type": "object" }, "type": "array" }, "senses": { "description": "Every sense of this entry, complete. Not paged — if the field is present, it is all of them.", "items": { "additionalProperties": false, "properties": { "citations": { "description": "Attested usages for THIS sense. Always complete — never paged.", "items": { "additionalProperties": false, "properties": { "order": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "references": { "items": { "additionalProperties": false, "properties": { "fullTitle": { "description": "The work's full title where the source's reference list gives one.", "type": [ "string", "null" ] }, "locus": { "description": "Folio or locator within that work, e.g. \"48b\". Cite it.", "type": [ "string", "null" ] }, "raw": { "description": "The reference exactly as printed, e.g. \"Truyện Kiều, 48b\".", "type": "string" }, "work": { "description": "Short title, e.g. \"Truyện Kiều\".", "type": [ "string", "null" ] } }, "required": [ "raw" ], "type": "object" }, "type": "array" }, "sourceText": { "description": "The passage in Chữ Nôm as printed. Null when the source printed none.", "type": [ "string", "null" ] }, "transliteration": { "description": "Its Quốc-ngữ reading as printed.", "type": [ "string", "null" ] } }, "required": [ "order", "references" ], "type": "object" }, "type": "array" }, "crossReference": { "anyOf": [ { "additionalProperties": false, "properties": { "entryId": { "description": "The target entry in this same work — pass it back to lookup_dictionary_entry.", "type": "string" }, "han": { "type": [ "string", "null" ] }, "reading": { "type": [ "string", "null" ] } }, "required": [ "entryId" ], "type": "object" }, { "type": "null" } ], "description": "Where a definition points instead of defining. 5,676 senses read \"Như __\" — \"same as ___\" — with the blank never printed; this is the ___. When it is present the definition is a pointer, so follow it rather than reporting the sense as empty or the reference as unresolvable." }, "definition": { "type": "string" }, "groupOrder": { "description": "Which printed sense group this belongs to.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "order": { "description": "0-based position across the whole entry.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "phonology": { "description": "A reconstructed initial cluster and its modern reflex, verbatim, e.g. \"*kl- → tr-\". This is the evidence for why a Hán glyph was borrowed for a Vietnamese word that sounds unrelated today. Quote it; do not elaborate on it.", "type": [ "string", "null" ] }, "structCode": { "description": "First structural code only. Prefer structCodes, which carries all of them.", "type": [ "string", "null" ] }, "structCodes": { "description": "Every structural classification the source prints for this sense, in printed order (A1, C2, F2, …) — how the glyph was formed or borrowed FOR THIS SENSE, which is why one headword can carry senses under different codes. Their meanings are supplied in structLabels — use those words rather than your own.", "items": { "type": "string" }, "type": "array" }, "structLabels": { "description": "What each code MEANS, from the published taxonomy. Use these words; do not compose your own explanation of a code. An entry with `vi`/`en` null is a code the taxonomy does not define — say it is unexplained rather than guessing.", "items": { "additionalProperties": false, "properties": { "code": { "type": "string" }, "en": { "description": "A plain-English reading of that path.", "type": [ "string", "null" ] }, "vi": { "description": "The taxonomic path in the source's own terms.", "type": [ "string", "null" ] } }, "required": [ "code" ], "type": "object" }, "type": "array" }, "structRaw": { "description": "The classification line verbatim, e.g. \"A1: 照 chiếu\".", "type": [ "string", "null" ] }, "structRelation": { "anyOf": [ { "enum": [ "single", "derivation", "alternative" ], "type": "string" }, { "type": "null" } ], "description": "How the codes relate. \"derivation\" means the source printed an arrow — this class became that one, a claim about the glyph's origin. \"alternative\" means a pipe: either classification applies. Say which; do not collapse two codes into one." }, "typeMarker": { "description": "The printed marker as set (◎ or 〄). Report it verbatim; do not translate it into a claim.", "type": [ "string", "null" ] } }, "required": [ "order", "groupOrder", "structCodes", "structLabels", "definition", "citations" ], "type": "object" }, "type": "array" }, "subentries": { "additionalProperties": false, "properties": { "coverage": { "description": "States exactly what this response covers. Repeat its claim; do not assert more than it says.", "type": "string" }, "items": { "description": "This page only — `returned` of `total`, starting at `offset`.", "items": { "additionalProperties": false, "properties": { "definition": { "type": "string" }, "display": { "description": "As printed, dash placeholder intact.", "type": [ "string", "null" ] }, "han": { "description": "Only 2,986 of 64,283 carry one. Null means the source printed none.", "type": [ "string", "null" ] }, "order": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "sourcePage": { "anyOf": [ { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, { "type": "null" } ] }, "term": { "description": "Dash placeholder expanded; original orthography.", "type": "string" } }, "required": [ "order", "term", "definition" ], "type": "object" }, "type": "array" }, "nextOffset": { "description": "Present only while more remain. Call again with subentryOffset set to it.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "offset": { "description": "0-based index of the first item in this page.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "returned": { "description": "How many subentries are in THIS response.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "total": { "description": "How many the entry has in total. Correct at any offset, including past the end.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" } }, "required": [ "items", "returned", "total", "offset", "coverage" ], "type": "object" }, "truncated": { "description": "True when headword results hit the 20-result cap.", "type": "boolean" }, "work": { "additionalProperties": false, "properties": { "attribution": { "description": "Credit line to render wherever this work is quoted.", "type": [ "string", "null" ] }, "author": { "type": [ "string", "null" ] }, "edition": { "type": [ "string", "null" ] }, "key": { "type": "string" }, "license": { "type": [ "string", "null" ] }, "sourceUrl": { "type": [ "string", "null" ] }, "title": { "type": "string" }, "volume": { "type": [ "string", "null" ] } }, "required": [ "key", "title" ], "type": "object" } }, "required": [ "work" ], "type": "object" } }, { "description": "Find Hán Nôm characters by their Vietnamese reading (quốc ngữ, e.g. \"trăng\") or by Vietnamese meaning. Use when you need to discover which characters correspond to a Vietnamese word, then call lookup_character on the result for full detail.\n\nEach result reports what actually matched — \"matchedOn\" is \"reading\" or \"meaning\", and \"match\" carries the exact reading or the definition containing your query, with its source. Do not treat that definition as the character's only sense; call lookup_character for the rest.\n\nReturns at most 20 characters per call, with no pagination. This dictionary's readings and meanings come from sources under CC BY-SA 4.0, so bulk redistribution carries ShareAlike obligations — the cap keeps ordinary use well inside that. Cite the source on each result rather than presenting the corpus as your own.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "limit": { "description": "Maximum results, 1-20. Defaults to 10.", "maximum": 20, "minimum": 1, "type": "integer" }, "query": { "description": "A Vietnamese reading in quốc ngữ (e.g. \"trăng\") or a Vietnamese meaning fragment.", "minLength": 1, "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "search_corpus", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "limit": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "query": { "type": "string" }, "results": { "items": { "additionalProperties": false, "properties": { "character": { "type": "string" }, "codepoint": { "type": "string" }, "match": { "additionalProperties": false, "properties": { "definition": { "description": "Set when matchedOn is \"meaning\": the definition containing the query.", "type": "string" }, "entryRef": { "additionalProperties": false, "properties": { "entryId": { "description": "Entry id within that work, e.g. \"B-0123\".", "type": "string" }, "workKey": { "description": "Work key, e.g. \"dnqatv\".", "type": "string" } }, "required": [ "workKey", "entryId" ], "type": "object" }, "reading": { "description": "Set when matchedOn is \"reading\": the exact reading that matched.", "type": "string" }, "source": { "type": "string" }, "sourceTitle": { "type": "string" } }, "type": "object" }, "matchedOn": { "enum": [ "reading", "meaning" ], "type": "string" }, "readings": { "description": "ALL readings of this character, not only the matched one.", "items": { "type": "string" }, "type": "array" } }, "required": [ "character", "codepoint", "readings", "matchedOn", "match" ], "type": "object" }, "type": "array" }, "truncated": { "description": "True when the cap was reached. There is deliberately no pagination.", "type": "boolean" } }, "required": [ "query", "results", "limit", "truncated" ], "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:f69a82fcb51d8480c506b026952b7f3fd68ce9a7777261267d40260fbf9fba57 | sha256sum