Nôm Na Việt — Hán Nôm Dictionary
Qué hace este MCP
Provides Hán Nôm character and dictionary lookups, Vietnamese and Chữ Nôm conversion, and searches by reading or meaning.
Herramientas
Esquema de entrada
{'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).'}}}
Esquema de salida
{'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}
Esquema de entrada
{'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.'}}}
Esquema de salida
{'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}
Esquema de entrada
{'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.'}}}
Esquema de salida
{'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}
Esquema de entrada
{'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.'}}}
Esquema de salida
{'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}
Cambios recientes en herramientas
Servidores MCP similares
HiveLearn
Creates and manages courses, lessons, quizzes, enrollments, learning tracks, events, certificates, resources, progress, and commu…
concordance
Provides deterministic claim verification and audit receipts, along with Bible references, commentary, geography, indexed knowled…
The Ainglish Project
Maintains a measured, auditable register of language constructs, proposals, evidence, adoption, contributors, protocols, and rati…
Torah Library
Provides searchable Jewish texts, commentaries, source sheets, dictionaries, manuscripts, calendars, learning schedules, parasha …
Wordnik
Provides English dictionary functions including definitions, examples, pronunciations, hyphenation, phrases, frequencies, related…
goldseam
Provides education and credential data covering institutions, programs, courses, certifications, transfer pathways, policies, and…
Wiktionary
Retrieves multilingual dictionary definitions, etymologies, pronunciations, and parsed lexical information from Wiktionary.
Books
Provides Open Library book, edition, work, and author lookups, including publication details, subjects, descriptions, and biograp…