MCP-Server

Nôm Na Việt — Hán Nôm Dictionary

com.nomnaviet/han-nom
Bildung Wissen & Dokumentation Öffentlich und erreichbar MCP 2025-11-25

Was dieses MCP kann

Provides Hán Nôm character and dictionary lookups, Vietnamese and Chữ Nôm conversion, and searches by reading or meaning.

convert_text
Convert between Vietnamese and Chữ Nôm
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. Handles 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. Words in "unmatched" have NO entry in the dictionary. Say so — never substitute a character that looks plausible. Input is truncated past 120 characters.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['text'], 'properties': {'text': {'type': 'string', 'minLength': 1, 'description': 'The text to convert: Vietnamese quốc ngữ for "to_nom", Chữ Nôm for "to_viet". Up to 120 characters.'}, 'direction': {'enum': ['to_nom', 'to_viet'], 'type': 'string', 'description': '"to_nom" (Vietnamese → Chữ Nôm, the default) or "to_viet" (Chữ Nôm → Vietnamese).'}}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['direction', 'original', 'converted', 'unmatched', 'segments'], 'properties': {'original': {'type': 'string'}, 'segments': {'type': 'array', 'items': {'type': 'object', 'required': ['source', 'target'], 'properties': {'source': {'type': 'string'}, 'target': {'type': ['string', 'null']}, 'codepoints': {'type': 'array', 'items': {'type': 'string'}}, 'alternatives': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}, 'converted': {'type': 'string'}, 'direction': {'enum': ['to_nom', 'to_viet'], 'type': 'string'}, 'truncated': {'type': 'boolean'}, 'unmatched': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Words with NO dictionary entry. Report as gaps; never fill them in.'}}, 'additionalProperties': False}
lookup_character
Look up a Hán Nôm character
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. Returns 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. "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. Use for Vietnamese Hán Nôm. Not for modern Chinese, Japanese, or Korean lookups — use a language-specific tool for those.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['character'], 'properties': {'character': {'type': 'string', 'minLength': 1, 'description': 'A single Hán or Nôm character, e.g. 些 or 𡗶. Pass the character itself, not a codepoint.'}}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['character', 'codepoint', 'isPrivateUseArea', 'found', 'readings', 'meanings', 'variants', 'compounds', 'historicalEntries'], 'properties': {'found': {'type': 'boolean'}, 'radical': {'type': 'string'}, 'meanings': {'type': 'array', 'items': {'type': 'object', 'required': ['definition'], 'properties': {'source': {'type': ['string', 'null'], '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.'}, 'reading': {'type': ['string', 'null'], 'description': 'The reading this sense is filed under, when known.'}, 'entryRef': {'type': 'object', 'required': ['workKey', 'entryId'], 'properties': {'entryId': {'type': 'string', 'description': 'Entry id within that work, e.g. "B-0123".'}, 'workKey': {'type': 'string', 'description': 'Work key, e.g. "dnqatv".'}}, 'description': 'Present only when this definition maps unambiguously to one canonical historical entry. Pass it to lookup_dictionary_entry.', 'additionalProperties': False}, 'isPrimary': {'type': 'boolean'}, 'definition': {'type': 'string'}, 'sourceTitle': {'type': 'string', 'description': 'Human-readable dictionary name.'}, 'partOfSpeech': {'type': ['string', 'null']}}, 'additionalProperties': False}}, 'readings': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'pronunciation'], 'properties': {'tone': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}]}, 'type': {'type': 'string'}, 'frequencyRank': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}]}, 'pronunciation': {'type': 'string'}}, 'additionalProperties': False}}, 'variants': {'type': 'array', 'items': {'type': 'object', 'required': ['character', 'codepoint', 'relation', 'source'], 'properties': {'source': {'type': 'string'}, 'relation': {'type': 'string'}, 'character': {'type': 'string'}, 'codepoint': {'type': 'string'}}, 'additionalProperties': False}}, 'character': {'type': 'string'}, 'codepoint': {'type': 'string'}, 'compounds': {'type': 'array', 'items': {'type': 'object', 'required': ['characters'], 'properties': {'meaning': {'type': 'string'}, 'reading': {'type': 'string'}, 'characters': {'type': 'string'}}, 'additionalProperties': False}}, 'strokeCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'characterType': {'type': 'string'}, 'decomposition': {'type': 'object', 'properties': {'ids': {'type': 'string'}, 'components': {'type': 'array', 'items': {'type': 'string'}}, 'kangxiRadical': {'type': 'string'}, 'residualStrokes': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}, 'middleChinese': {'type': 'object', 'required': ['notation'], 'properties': {'tone': {'type': 'string'}, 'notation': {'type': 'string'}, 'isEstimated': {'type': 'boolean'}, 'romanization': {'type': 'string'}, 'finalCategory': {'type': 'string'}, 'derivedReading': {'type': 'string'}, 'initialCategory': {'type': 'string'}}, 'additionalProperties': False}, 'isPrivateUseArea': {'type': 'boolean'}, 'historicalEntries': {'type': 'array', 'items': {'type': 'object', 'required': ['workKey', 'workTitle', 'entryId', 'headword', 'hanStatus', 'orderInWork', 'subentryCount', 'senseCount', 'citationCount'], 'properties': {'han': {'type': ['string', 'null'], 'description': 'The single Hán/Nôm codepoint, or null for IDS-only entries.'}, 'entryId': {'type': 'string', 'description': 'Unique WITHIN this work only, e.g. "B-0123". Always pass it together with workKey.'}, 'workKey': {'type': 'string', 'description': 'Stable key of the work, e.g. "dnqatv". Pass it back as `work`.'}, 'headword': {'type': 'string', 'description': 'Quốc-ngữ headword in ORIGINAL 19th-century orthography.'}, 'hanStatus': {'type': 'string', 'description': '"unicode" | "pua" | "image_only".'}, 'workTitle': {'type': 'string', 'description': 'The work\'s title as it prints it — "Quấc", not the modern "Quốc".'}, 'definition': {'type': ['string', 'null'], 'description': 'May be empty — 545 entries carry their sense only in subentries.'}, 'senseCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'How many numbered senses this entry has. Zero for works that print subentries instead.'}, 'sourcePage': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}], 'description': 'Page of the scanned volume this entry is printed on. Cite it as a page number.'}, 'typeMarker': {'type': ['string', 'null'], 'description': 'The printed marker verbatim: "n." means nôm (script origin), NOT noun.'}, 'orderInWork': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, '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.'}, 'sourceLetter': {'type': ['string', 'null'], '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.'}, 'citationCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'How many attested citations sit under those senses.'}, 'subentryCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'How many subentries this entry HAS. None of them are included here — call lookup_dictionary_entry with entryId to read them.'}}, 'additionalProperties': False}, '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.'}}, 'additionalProperties': False}
lookup_dictionary_entry
Retrieve an entry from a historical Vietnamese dictionary
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. Pass EXACTLY ONE of entryId or headword — never both, never neither. Headwords 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. Works 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. Citations 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. Subentries 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. Headword 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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'work': {'type': 'string', 'description': 'Which work to search. Defaults to "dnqatv" (Đại Nam Quấc âm tự vị).'}, 'entryId': {'type': 'string', '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.'}, 'headword': {'type': 'string', '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.'}, 'subentryLimit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Subentries per call, 1-50. Defaults to 50. When "nextOffset" comes back, call again with it to continue.'}, 'subentryOffset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'First subentry to return, for continuing a large entry. Defaults to 0. Only used with entryId.'}}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['work'], 'properties': {'work': {'type': 'object', 'required': ['key', 'title'], 'properties': {'key': {'type': 'string'}, 'title': {'type': 'string'}, 'author': {'type': ['string', 'null']}, 'volume': {'type': ['string', 'null']}, 'edition': {'type': ['string', 'null']}, 'license': {'type': ['string', 'null']}, 'sourceUrl': {'type': ['string', 'null']}, 'attribution': {'type': ['string', 'null'], 'description': 'Credit line to render wherever this work is quoted.'}}, 'additionalProperties': False}, 'entry': {'type': 'object', 'required': ['entryId', 'headword', 'hanStatus', 'orderInWork'], 'properties': {'han': {'type': ['string', 'null'], 'description': 'The single Hán/Nôm codepoint, or null for IDS-only entries.'}, 'entryId': {'type': 'string', 'description': 'Unique WITHIN this work only, e.g. "B-0123". Always pass it together with workKey.'}, 'globalId': {'type': ['string', 'null']}, 'hanImage': {'description': 'Scan reference for image-only glyphs, when the source carried one.'}, 'headword': {'type': 'string', 'description': 'Quốc-ngữ headword in ORIGINAL 19th-century orthography.'}, 'hanStatus': {'type': 'string', 'description': '"unicode" | "pua" | "image_only".'}, 'definition': {'type': ['string', 'null'], 'description': 'May be empty — 545 entries carry their sense only in subentries.'}, 'sourcePage': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}], 'description': 'Page of the scanned volume this entry is printed on. Cite it as a page number.'}, 'typeMarker': {'type': ['string', 'null'], 'description': 'The printed marker verbatim: "n." means nôm (script origin), NOT noun.'}, 'corrections': {'type': 'array', 'items': {}, 'description': 'Editorial corrections recorded by the source, when present.'}, 'orderInWork': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, '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.'}, 'readingNote': {'type': ['string', 'null'], 'description': 'Printed alternate reading.'}, 'sourceLetter': {'type': ['string', 'null'], '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.'}}, 'additionalProperties': False}, 'senses': {'type': 'array', 'items': {'type': 'object', 'required': ['order', 'groupOrder', 'structCodes', 'structLabels', 'definition', 'citations'], 'properties': {'order': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': '0-based position across the whole entry.'}, 'citations': {'type': 'array', 'items': {'type': 'object', 'required': ['order', 'references'], 'properties': {'order': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'references': {'type': 'array', 'items': {'type': 'object', 'required': ['raw'], 'properties': {'raw': {'type': 'string', 'description': 'The reference exactly as printed, e.g. "Truyện Kiều, 48b".'}, 'work': {'type': ['string', 'null'], 'description': 'Short title, e.g. "Truyện Kiều".'}, 'locus': {'type': ['string', 'null'], 'description': 'Folio or locator within that work, e.g. "48b". Cite it.'}, 'fullTitle': {'type': ['string', 'null'], 'description': "The work's full title where the source's reference list gives one."}}, 'additionalProperties': False}}, 'sourceText': {'type': ['string', 'null'], 'description': 'The passage in Chữ Nôm as printed. Null when the source printed none.'}, 'transliteration': {'type': ['string', 'null'], 'description': 'Its Quốc-ngữ reading as printed.'}}, 'additionalProperties': False}, 'description': 'Attested usages for THIS sense. Always complete — never paged.'}, 'phonology': {'type': ['string', 'null'], '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.'}, 'structRaw': {'type': ['string', 'null'], 'description': 'The classification line verbatim, e.g. "A1: 照 chiếu".'}, 'definition': {'type': 'string'}, 'groupOrder': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Which printed sense group this belongs to.'}, 'structCode': {'type': ['string', 'null'], 'description': 'First structural code only. Prefer structCodes, which carries all of them.'}, 'typeMarker': {'type': ['string', 'null'], 'description': 'The printed marker as set (◎ or 〄). Report it verbatim; do not translate it into a claim.'}, 'structCodes': {'type': 'array', 'items': {'type': 'string'}, '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.'}, 'structLabels': {'type': 'array', 'items': {'type': 'object', 'required': ['code'], 'properties': {'en': {'type': ['string', 'null'], 'description': 'A plain-English reading of that path.'}, 'vi': {'type': ['string', 'null'], 'description': "The taxonomic path in the source's own terms."}, 'code': {'type': 'string'}}, 'additionalProperties': False}, '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.'}, 'crossReference': {'anyOf': [{'type': 'object', 'required': ['entryId'], 'properties': {'han': {'type': ['string', 'null']}, 'entryId': {'type': 'string', 'description': 'The target entry in this same work — pass it back to lookup_dictionary_entry.'}, 'reading': {'type': ['string', 'null']}}, 'additionalProperties': False}, {'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.'}, '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.'}}, 'additionalProperties': False}, 'description': 'Every sense of this entry, complete. Not paged — if the field is present, it is all of them.'}, 'matches': {'type': 'array', 'items': {'type': 'object', 'required': ['workKey', 'workTitle', 'entryId', 'headword', 'hanStatus', 'orderInWork', 'subentryCount', 'senseCount', 'citationCount'], 'properties': {'han': {'type': ['string', 'null'], 'description': 'The single Hán/Nôm codepoint, or null for IDS-only entries.'}, 'entryId': {'type': 'string', 'description': 'Unique WITHIN this work only, e.g. "B-0123". Always pass it together with workKey.'}, 'workKey': {'type': 'string', 'description': 'Stable key of the work, e.g. "dnqatv". Pass it back as `work`.'}, 'headword': {'type': 'string', 'description': 'Quốc-ngữ headword in ORIGINAL 19th-century orthography.'}, 'hanStatus': {'type': 'string', 'description': '"unicode" | "pua" | "image_only".'}, 'workTitle': {'type': 'string', 'description': 'The work\'s title as it prints it — "Quấc", not the modern "Quốc".'}, 'definition': {'type': ['string', 'null'], 'description': 'May be empty — 545 entries carry their sense only in subentries.'}, 'senseCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'How many numbered senses this entry has. Zero for works that print subentries instead.'}, 'sourcePage': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}], 'description': 'Page of the scanned volume this entry is printed on. Cite it as a page number.'}, 'typeMarker': {'type': ['string', 'null'], 'description': 'The printed marker verbatim: "n." means nôm (script origin), NOT noun.'}, 'orderInWork': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, '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.'}, 'sourceLetter': {'type': ['string', 'null'], '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.'}, 'citationCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'How many attested citations sit under those senses.'}, 'subentryCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'How many subentries this entry HAS. None of them are included here — call lookup_dictionary_entry with entryId to read them.'}}, 'additionalProperties': False}, 'description': 'Headword search results. Exact matches first, then prefix matches.'}, 'guidance': {'type': 'string'}, 'truncated': {'type': 'boolean', 'description': 'True when headword results hit the 20-result cap.'}, 'matchCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'subentries': {'type': 'object', 'required': ['items', 'returned', 'total', 'offset', 'coverage'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['order', 'term', 'definition'], 'properties': {'han': {'type': ['string', 'null'], 'description': 'Only 2,986 of 64,283 carry one. Null means the source printed none.'}, 'term': {'type': 'string', 'description': 'Dash placeholder expanded; original orthography.'}, 'order': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'display': {'type': ['string', 'null'], 'description': 'As printed, dash placeholder intact.'}, 'definition': {'type': 'string'}, 'sourcePage': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}]}}, 'additionalProperties': False}, 'description': 'This page only — `returned` of `total`, starting at `offset`.'}, 'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'How many the entry has in total. Correct at any offset, including past the end.'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': '0-based index of the first item in this page.'}, 'coverage': {'type': 'string', 'description': 'States exactly what this response covers. Repeat its claim; do not assert more than it says.'}, 'returned': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'How many subentries are in THIS response.'}, 'nextOffset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Present only while more remain. Call again with subentryOffset set to it.'}}, 'additionalProperties': False}}, 'additionalProperties': False}
search_corpus
Search characters by Vietnamese reading or meaning
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. Each 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. Returns 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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'maximum': 20, 'minimum': 1, 'description': 'Maximum results, 1-20. Defaults to 10.'}, 'query': {'type': 'string', 'minLength': 1, 'description': 'A Vietnamese reading in quốc ngữ (e.g. "trăng") or a Vietnamese meaning fragment.'}}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query', 'results', 'limit', 'truncated'], 'properties': {'limit': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'query': {'type': 'string'}, 'results': {'type': 'array', 'items': {'type': 'object', 'required': ['character', 'codepoint', 'readings', 'matchedOn', 'match'], 'properties': {'match': {'type': 'object', 'properties': {'source': {'type': 'string'}, 'reading': {'type': 'string', 'description': 'Set when matchedOn is "reading": the exact reading that matched.'}, 'entryRef': {'type': 'object', 'required': ['workKey', 'entryId'], 'properties': {'entryId': {'type': 'string', 'description': 'Entry id within that work, e.g. "B-0123".'}, 'workKey': {'type': 'string', 'description': 'Work key, e.g. "dnqatv".'}}, 'additionalProperties': False}, 'definition': {'type': 'string', 'description': 'Set when matchedOn is "meaning": the definition containing the query.'}, 'sourceTitle': {'type': 'string'}}, 'additionalProperties': False}, 'readings': {'type': 'array', 'items': {'type': 'string'}, 'description': 'ALL readings of this character, not only the matched one.'}, 'character': {'type': 'string'}, 'codepoint': {'type': 'string'}, 'matchedOn': {'enum': ['reading', 'meaning'], 'type': 'string'}}, 'additionalProperties': False}}, 'truncated': {'type': 'boolean', 'description': 'True when the cap was reached. There is deliberately no pagination.'}}, 'additionalProperties': False}
Geändert
lookup_dictionary_entry
23. September 2026 02:53
Geändert
convert_text
19. September 2026 02:51
Hinzugefügt
lookup_dictionary_entry
19. September 2026 02:51
Geändert
search_corpus
19. September 2026 02:51
Geändert
lookup_character
19. September 2026 02:51
Hinzugefügt
convert_text
17. September 2026 12:36
Hinzugefügt
search_corpus
17. September 2026 12:36
Hinzugefügt
lookup_character
17. September 2026 12:36