MCP tools
The @nesso-how/mcp server exposes four tools. See MCP for setup and workflow.
get_nesso_docs
Section titled “get_nesso_docs”Fetches documentation pages from this site. Call it without a slug to get a table of contents, or with a slug (e.g. "guides/getting-started") to get the full page content.
get_relation_types
Section titled “get_relation_types”Returns the complete list of relation types grouped by category id (taxonomic, structural, and so on from RELATION_CATEGORIES in @nesso-how/vocab-learning), with glyph, symmetry, and type properties (transitive, inverse, strength, polarity, cardinality). Use this whenever you need valid type names for graph JSON or explanations for the learner.
validate_graph
Section titled “validate_graph”Input: { "graph": "<json string>" }: a Nesso graph document (concepts[], relations[]), not runtime React Flow nodes/edges.
Output: { "valid": boolean, "errors": [{ "path", "message" }], "warnings": [{ "path", "message" }] }
Runs the same envelope and vocabulary validation used by the app: it accepts the current protected baseline, rejects newer unsupported envelope versions, and rejects unsupported alpha elaboration fields. Also performs structural checks: duplicate ids, dangling relation endpoints, and unknown relation types.
valid is true only when errors is empty. The tool returns diagnostics
only; it does not produce rewritten or migrated JSON.
build_graph
Section titled “build_graph”Input:
{ "name": "Photosynthesis", "concepts": [ "Sunlight", { "text": "Chloroplast", "elaboration": { "definition": "..." } } ], "relations": [{ "from": "Sunlight", "to": "Chloroplast", "relation": "enables" }]}concepts: label strings or objects with optionalid,text, andelaboration.relations:from/tomatch conceptidor label (must be unambiguous);relationmust be a valid type id fromget_relation_types.
Output: Pretty-printed graph document JSON ready to write to disk (includes vocabulary, generated ids, and dagre layout positions). FSRS review fields and React Flow edge shape (type: "nesso", handles) are applied by the app on import, not stored in the file.