Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.datadef/mcp

REMOTE · DATADEF.IO · SCANNED SEP 20

Generate, edit, and export data-architecture diagrams from your AI. Column lineage, PNG in chat.

Available components

+1 this week 92 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security94
Transport & Reachability100
Schema Quality & AI Usability83
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 4714 tokens (~130/item across 36 items; 36 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage93
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 79% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 36 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
  • Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Install

How do I install the io.datadef/mcp server?

io.datadef/mcp is a hosted endpoint at https://datadef.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · datadef.io

# add to Claude Code
claude mcp add --transport http io-datadef-mcp 'https://datadef.io/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "io-datadef-mcp": {
      "url": "https://datadef.io/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "io-datadef-mcp": {
      "type": "http",
      "url": "https://datadef.io/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.io-datadef-mcp]
url = "https://datadef.io/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-datadef-mcp": {
      "type": "remote",
      "url": "https://datadef.io/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add io-datadef-mcp --url 'https://datadef.io/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  io-datadef-mcp:
    url: "https://datadef.io/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "io-datadef-mcp": {
      "Transport": "http",
      "Url": "https://datadef.io/mcp"
    }
  }
}
# add to Vellum
assistant mcp add io-datadef-mcp -t streamable-http -u 'https://datadef.io/mcp'
// mcp.json
{
  "mcpServers": {
    "io-datadef-mcp": {
      "type": "http",
      "url": "https://datadef.io/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 15 Sept 26 0
    • Stability: 0.97 → pass security
  • 14 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 11 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 9 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.

  • 7 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.

  • 5 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.

  • 3 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 57 to 60. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.

  • 1 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 50 to 53. That category is still filling its 30-day observation window: 15 days of observed history at the previous scan, 16 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Probed https://datadef.io/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=datadef.io CN=WE1,O=Google Trust Services,C=US 21 Aug 2026 19 Nov 2026 ECDSA 256 ECDSA-SHA256 54a0da02ce3c0b9f134b0861dae490c8
SANs: datadef.io, *.datadef.io
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of datadef.io. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
io. present 57355 8 Verified
datadef.io. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Enforced and verified

The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.

Result Enforced and verified
Enforced On tool calls
HTTP status 200

WWW-Authenticate challenge Bearer error="invalid_token", error_description="No authorization provided", resource_metadata="https://datadef.io/.well-known/oauth-protected-resource"

Bearer error="invalid_token", error_description="No authorization provided", resource_metadata="https://datadef.io/.well-known/oauth-protected-resource"
Header Value
strict-transport-security max-age=63072000; includeSubDomains
x-content-type-options nosniff
referrer-policy strict-origin-when-cross-origin
permissions-policy camera=(), microphone=(), geolocation=(), browsing-topics=()

Protected resource metadata

Document https://datadef.io/.well-known/oauth-protected-resource
Retrieved Yes
Resource https://datadef.io/mcp
Authorisation server https://datadef.io

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://datadef.io/mcp Verified 200
http (plaintext) http://datadef.io/mcp HTTPS enforced 301 https://datadef.io/mcp
MCP tools · 36 exposed · ~4,714 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
canvas_add_flow_arrow ~149

Draw one large labelled arrow representing a whole flow — "ingest", "serve", "publish" — instead of many thin edges saying the same thing. Use this when several things move the same way for the same reason: draw the arrow once between the two areas rather than connecting every pair. This is a visual annotation, not a connection, so it adds no edges and no fan-out. Position it in the gap between the two areas using canvas_measure_canvas. Operates on one Datadef diagram, named by diagram_id.

NameTypeReqDescription
arrowsarrayyes
diagram_idstringyesCanvas id, from list_diagrams, create_diagram, or create_blank_diagram.

No output schema declared.

No examples provided.

canvas_add_lineage ~92

Record column-level lineage: which source column produces which target column, and how. This is what makes the diagram queryable for impact analysis, so add it for every real transformation. Operates on one Datadef diagram, named by diagram_id.

NameTypeReqDescription
diagram_idstringyesCanvas id, from list_diagrams, create_diagram, or create_blank_diagram.
linksarrayyes

No output schema declared.

No examples provided.

canvas_add_nodes ~123

Add one or more nodes to the canvas. Batch every node you want in a single call. Positions are assigned by canvas_layout_canvas afterwards — never set them yourself. Operates on one Datadef diagram, named by diagram_id. If you have not already, call get_design_guide first: it carries Datadef's size, edge, and zone standard, and diagrams built without it read poorly.

NameTypeReqDescription
diagram_idstringyesCanvas id, from list_diagrams, create_diagram, or create_blank_diagram.
nodesarrayyes

No output schema declared.

No examples provided.

canvas_add_region ~145

Draw a labelled translucent area behind existing nodes to show they belong together, without reparenting them. Use this when the grouping is a reading aid rather than real containment, when areas would need to overlap, or when a node belongs to two ideas at once — canvas_group_nodes cannot express any of those because it moves nodes into the zone. Call canvas_measure_canvas first and size the region to enclose the nodes with roughly 24px of margin. Operates on one Datadef diagram, named by diagram_id.

NameTypeReqDescription
diagram_idstringyesCanvas id, from list_diagrams, create_diagram, or create_blank_diagram.
regionsarrayyes

No output schema declared.

No examples provided.

canvas_add_shape ~112

Place a rectangle, circle, arrow, or line as a visual annotation — a backdrop highlighting a region, an arrow pointing something out, a divider. Shapes sit behind data nodes and are not part of the data flow. To group nodes into a labelled zone use canvas_group_nodes instead. Operates on one Datadef diagram, named by diagram_id.

NameTypeReqDescription
diagram_idstringyesCanvas id, from list_diagrams, create_diagram, or create_blank_diagram.
shapesarrayyes

No output schema declared.

No examples provided.

canvas_add_standalone_node ~176

Add a single data node at an exact position, without connecting it to anything. Use when the user wants something placed somewhere specific, or when you will wire it up yourself afterwards. For building out a connected diagram, canvas_add_nodes is better — it batches and lets layout position everything. Operates on one Datadef diagram, named by diagram_id.

NameTypeReqDescription
descriptionstring
diagram_idstringyesCanvas id, from list_diagrams, create_diagram, or create_blank_diagram.
iconstringIcon id from search_icons.
labelstringyes
technologystring
typestringyes
xnumberAbsolute x. Omit to place clear of the existing diagram.
ynumberAbsolute y.

No output schema declared.

No examples provided.

canvas_add_text ~110

Place a free-floating text box on the canvas — a caption, a callout, a section heading, a note explaining a decision. Position it with explicit coordinates from canvas_measure_canvas. Text boxes are annotations: they are not part of the data flow and take no edges. Operates on one Datadef diagram, named by diagram_id.

NameTypeReqDescription
diagram_idstringyesCanvas id, from list_diagrams, create_diagram, or create_blank_diagram.
textsarrayyes

No output schema declared.

No examples provided.

canvas_align_nodes ~115

Align nodes to a shared edge or centre line, or space them evenly. Cleaner and far more reliable than computing coordinates by hand. Operates on one Datadef diagram, named by diagram_id.

NameTypeReqDescription
diagram_idstringyesCanvas id, from list_diagrams, create_diagram, or create_blank_diagram.
modestringyesleft/right/top/bottom align edges; center-* align centre lines; distribute-* space evenly between the outermost two.
nodesarrayyesNode ids or labels.

No output schema declared.

No examples provided.

canvas_collapse_nodes ~173

Merge several nodes into one summary node, keeping every connection. Use when a set of near-identical objects adds length without adding meaning — eight staging models that all behave the same become "stg_* (8)". Do not use when the individual objects are what the reader came for. Operates on one Datadef diagram, named by diagram_id.

NameTypeReqDescription
descriptionstringWhat the merged node stands for. Defaults to listing what was collapsed.
diagram_idstringyesCanvas id, from list_diagrams, create_diagram, or create_blank_diagram.
labelstringLabel for the merged node. Omit to generate one such as "stg_* (8)".
nodesarrayyesNode ids or labels to merge. They should be genuinely similar.

No output schema declared.

No examples provided.

canvas_connect_nodes ~97

Draw edges between nodes to show how data flows. Always label the edge with what actually happens ("ingest", "dbt transform", "hourly sync") — unlabelled edges make a diagram useless. Operates on one Datadef diagram, named by diagram_id.

NameTypeReqDescription
diagram_idstringyesCanvas id, from list_diagrams, create_diagram, or create_blank_diagram.
edgesarrayyes

No output schema declared.

No examples provided.

canvas_describe_canvas ~149

Get an overview of the current canvas: every node with its id, type, label and group, plus all connections and groups. Call this first, before any edit, so you work from real node ids instead of guesses. Operates on one Datadef diagram, named by diagram_id. If you have not already, call get_design_guide first: it carries Datadef's size, edge, and zone standard, and diagrams built without it read poorly.

NameTypeReqDescription
diagram_idstringyesCanvas id, from list_diagrams, create_diagram, or create_blank_diagram.
includeColumnsbooleanInclude a short column list for each table node. Default false.

No output schema declared.

No examples provided.

canvas_disconnect_nodes ~62

Remove the edge between two nodes. Operates on one Datadef diagram, named by diagram_id.

NameTypeReqDescription
diagram_idstringyesCanvas id, from list_diagrams, create_diagram, or create_blank_diagram.
edgesarrayyes

No output schema declared.

No examples provided.

canvas_group_nodes ~308

Create a labelled zone (e.g. "Bronze Layer", "Ingestion") and optionally move nodes into it. Zones are what turn a tangle of boxes into a readable architecture — use them for layers, domains, or environments. Operates on one Datadef diagram, named by diagram_id. If you have not already, call get_design_guide first: it carries Datadef's size, edge, and zone standard, and diagrams built without it read poorly.

NameTypeReqDescription
descriptionstring
diagram_idstringyesCanvas id, from list_diagrams, create_diagram, or create_blank_diagram.
familystringAccent hue encoding the zone role: source=teal (inputs/producers), ingest=blue (movement/processing), bronze/silver/gold=medallion layers, consume=magenta (outputs/consumers), dbt=coral (transformati…
labelstringyesZone name, e.g. "Silver Layer".
nodesarrayNode ids or labels to place inside.
parentGroupstringExisting group to nest this one inside, e.g. "Databricks Workspace". Zones nest freely — a platform boundary containing Bronze/Silver/Gold is how architects draw.
stylestringlayer = horizontal band (default), cluster = box, swimlane = vertical lane.

No output schema declared.

No examples provided.

canvas_inspect_nodes ~105

Get full detail for specific nodes: all columns with types and keys, metadata, schedule, formula, owners. Use before modifying a node so you preserve fields you are not changing. Operates on one Datadef diagram, named by diagram_id.

NameTypeReqDescription
diagram_idstringyesCanvas id, from list_diagrams, create_diagram, or create_blank_diagram.
nodesarrayyesNode ids or exact labels. Up to 10 at a time.

No output schema declared.

No examples provided.

canvas_layout_canvas ~124

Arrange the canvas. Call this once at the end, after all structural edits are done — not between each edit. By default only the parts you touched are re-arranged and everything else keeps its position. Operates on one Datadef diagram, named by diagram_id.

NameTypeReqDescription
diagram_idstringyesCanvas id, from list_diagrams, create_diagram, or create_blank_diagram.
fullbooleanRe-arrange the entire canvas from scratch, discarding existing positions. Only use when the user asks for a full reorganisation. Default false.

No output schema declared.

No examples provided.

canvas_measure_canvas ~113

Get exact geometry: every node's position and size in canvas units, the overall canvas bounds, and any nodes that overlap each other. Call this before moving, resizing, or placing anything precisely — positions are meaningless without it. Operates on one Datadef diagram, named by diagram_id.

NameTypeReqDescription
diagram_idstringyesCanvas id, from list_diagrams, create_diagram, or create_blank_diagram.
nodesarrayLimit to specific node ids or labels. Omit to measure everything.

No output schema declared.

No examples provided.

canvas_move_nodes ~117

Set node positions precisely. Use absolute x/y to place something exactly, or dx/dy to nudge it. Coordinates are absolute canvas units (same space canvas_measure_canvas reports). Moving a group moves its children with it — do not also move those children in the same call. Call canvas_measure_canvas first. Operates on one Datadef diagram, named by diagram_id.

NameTypeReqDescription
diagram_idstringyesCanvas id, from list_diagrams, create_diagram, or create_blank_diagram.
movesarrayyes

No output schema declared.

No examples provided.

canvas_move_to_group ~99

Move existing nodes into an existing group, or out of any group. Operates on one Datadef diagram, named by diagram_id.

NameTypeReqDescription
diagram_idstringyesCanvas id, from list_diagrams, create_diagram, or create_blank_diagram.
groupstring|nullyesTarget group id or label. Pass null to remove the nodes from their group.
nodesarrayyesNode ids or labels to move.

No output schema declared.

No examples provided.

canvas_remove_nodes ~94

Delete nodes and every edge touching them. Deleting a group also deletes the nodes inside it — check with canvas_describe_canvas first if that is not what you want. Operates on one Datadef diagram, named by diagram_id.

NameTypeReqDescription
diagram_idstringyesCanvas id, from list_diagrams, create_diagram, or create_blank_diagram.
nodesarrayyesNode ids or exact labels.

No output schema declared.

No examples provided.

canvas_replace_node ~184

Swap a node for a different one while keeping every connection, its position, and its group. Use this when a component changes — Redshift becomes Snowflake, a batch job becomes streaming — instead of deleting and rebuilding, which would lose all the edges. Operates on one Datadef diagram, named by diagram_id.

NameTypeReqDescription
descriptionstring
diagram_idstringyesCanvas id, from list_diagrams, create_diagram, or create_blank_diagram.
iconstringIcon id from search_icons.
keepColumnsbooleanCarry the existing columns over to the replacement. Default true.
labelstringyesNew label.
nodestringyesNode id or exact label to replace.
technologystring
typestringNew type. Omit to keep the current type.

No output schema declared.

No examples provided.

canvas_resize_nodes ~92

Set the width and height of nodes. Mostly for shapes, text boxes, and group zones — data nodes size themselves from their content, and resizing one can clip what it displays. Operates on one Datadef diagram, named by diagram_id.

NameTypeReqDescription
diagram_idstringyesCanvas id, from list_diagrams, create_diagram, or create_blank_diagram.
resizesarrayyes

No output schema declared.

No examples provided.

canvas_search_icons ~139

Search Datadef's icon library (2000+ cloud and data-tool logos) for a valid icon id. Use it when you want a specific vendor logo and are unsure of its exact id — passing an invalid id silently falls back to a generic icon. Operates on one Datadef diagram, named by diagram_id.

NameTypeReqDescription
diagram_idstringyesCanvas id, from list_diagrams, create_diagram, or create_blank_diagram.
limitintegerMax results, default 8.
querystringyesTool or service name, e.g. "snowflake", "kinesis", "power bi".

No output schema declared.

No examples provided.

canvas_set_columns ~116

Set the full column list of a table node, replacing whatever it had. Pass every column you want to keep — this is a replace, not a merge. Mark primary and foreign keys; they are what make a data diagram worth reading. Operates on one Datadef diagram, named by diagram_id.

NameTypeReqDescription
columnsarrayyes
diagram_idstringyesCanvas id, from list_diagrams, create_diagram, or create_blank_diagram.
nodestringyesTable node id or exact label.

No output schema declared.

No examples provided.

canvas_suggest_simplifications ~125

Report where this canvas could be collapsed — groups of similar nodes that could become one summary node — without changing anything. Use it to decide whether the diagram is denser than it needs to be. Density is not automatically a problem: keep the detail when the detail is the point. Operates on one Datadef diagram, named by diagram_id.

NameTypeReqDescription
diagram_idstringyesCanvas id, from list_diagrams, create_diagram, or create_blank_diagram.
minGroupSizeintegerSmallest group worth reporting. Default 3.

No output schema declared.

No examples provided.

canvas_update_edges ~90

Change existing connections without deleting them: fix a label, change the type, or restyle. Use this to correct a wrong edge label rather than disconnecting and reconnecting. Operates on one Datadef diagram, named by diagram_id.

NameTypeReqDescription
diagram_idstringyesCanvas id, from list_diagrams, create_diagram, or create_blank_diagram.
updatesarrayyes

No output schema declared.

No examples provided.

canvas_update_nodes ~86

Change properties of existing nodes. Only the fields you pass are touched; everything else is preserved. To replace a table's columns use canvas_set_columns instead. Operates on one Datadef diagram, named by diagram_id.

NameTypeReqDescription
diagram_idstringyesCanvas id, from list_diagrams, create_diagram, or create_blank_diagram.
updatesarrayyes

No output schema declared.

No examples provided.

canvas_validate_canvas ~92

Check the canvas for structural problems (disconnected nodes, circular data flow, broken references) and quality problems (unlabelled edges, tables without columns). Call this before you finish, and fix any errors it reports. Operates on one Datadef diagram, named by diagram_id.

NameTypeReqDescription
diagram_idstringyesCanvas id, from list_diagrams, create_diagram, or create_blank_diagram.

No output schema declared.

No examples provided.

create_blank_diagram ~144

Create an empty diagram and return its diagram_id, so you can build it yourself with the canvas_* tools. No AI generation runs and no credit is spent: you draw it. Use this when you want control over the result, or already know the architecture from the conversation. Use create_diagram instead when you want Datadef's model to design the whole thing from a prompt. Call get_design_guide first: it is the standard Datadef's own generator follows, and building without it produces diagrams this tool exists to avoid.

NameTypeReqDescription
descriptionstringOptional short description.
namestringDiagram name. Defaults to "Untitled diagram".

No output schema declared.

No examples provided.

create_diagram ~498

Generate a professional data architecture diagram from a description and save it to the user's Datadef account. Use this for any data-shaped diagram: medallion and lakehouse architectures, ETL/ELT pipelines, streaming topologies, data mesh, warehouse and dimensional models, lineage maps, and data platform designs. Write a specific prompt. Name the actual technologies (Snowflake, dbt, Airflow, Kafka, Fivetran), the layers or zones you want, and the tables that matter, the diagram is only as detailed as the description. Zone names you give are treated as a specification, not a suggestion. SCOPE: if the user's request is open-ended ("diagram our platform", "show me something"), ask them how much detail they want before calling this, or say which scope you chose. Default to scope "overview". A dense 40-node diagram is impressive and usually not what someone wanted from a one-line request; they can always ask you to expand it. TIMING: this waits up to ~35 seconds; fast generations come back finished, with a preview image and a markdown line to show the user. Slower ones (1-3 minutes total) return a diagram_id while generation continues: call get_diagram with that id after ~60 seconds (poll every 30s) to get the finished diagram. If you cannot call tools again on your own, never leave the user empty-handed: give them the Open link, say it will be ready in about a minute, and offer to show the diagram inline when they next ask. Never call create_diagram a second time while one is still generating; you would create a duplicate and spend another credit. Do not use image generation for these. This produces a real, editable diagram.

NameTypeReqDescription
detailedbooleanUse a higher-tier model. Slower and roughly 10x the cost, only when the user explicitly asks for maximum quality. Independent of `scope`.
namestringTitle for the diagram. Defaults to an AI-chosen title.
promptstringyesWhat to diagram. Include technologies, data sources, transformations, layers, and destinations.
scopestringoverview (default): ~12-20 nodes, the shape of the system, right for almost every open-ended request. detailed: every object itemised, denser and harder to read. Ask the user rather than assuming the…

No output schema declared.

No examples provided.

edit_diagram ~128

Change an existing diagram with a natural-language instruction, add nodes, rewire connections, add columns, reorganise into layers, fill in owners and schedules. Be specific about what to change and where. "Add a Kafka topic between the API and the bronze table, labelled 'events'" works; "make it better" does not. Returns a PNG of the updated diagram.

NameTypeReqDescription
diagram_idstringyesCanvas id to modify.
include_imagebooleanReturn a PNG of the updated diagram. Default true.
instructionstringyesWhat to change, in plain language.

No output schema declared.

No examples provided.

export_diagram ~125

Render a diagram to a PNG or JPEG image. Returns the image inline AND a short-lived signed download URL. Use the inline image to show the diagram; use the URL when the user wants to save it, attach it, or share a link: it serves the file directly and needs no API key.

NameTypeReqDescription
diagram_idstringyesCanvas id to export.
formatstringDefault png.
heightintegerViewport height in pixels. Default 1000.
widthintegerViewport width in pixels. Default 1600.

No output schema declared.

No examples provided.

get_design_guide ~80

Datadef's standard for what makes a diagram readable, size, edge discipline, nested zones, annotations, and the tool order for building or editing. Read this BEFORE your first canvas_* call. It is the same standard Datadef's own generator follows, so a diagram you build by hand comes out indistinguishable from a generated one.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_diagram ~115

Read the full structure of a diagram: every node with its type and columns, every connection, and the groups. Use this before editing so you know what is actually there.

NameTypeReqDescription
diagram_idstringyesCanvas id, from list_diagrams, create_diagram, or create_blank_diagram.
include_columnsbooleanInclude table column lists. Default true.
include_imagebooleanAttach a PNG preview and a markdown image link to show the user. Default true; pass false for structure-only reads.

No output schema declared.

No examples provided.

list_diagrams ~52

List diagrams in the user's Datadef account, most recently updated first. Use this to find the id of a diagram before editing or exporting it.

NameTypeReqDescription
limitintegerMax results. Default 25.

No output schema declared.

No examples provided.

repo_refresh ~95

Re-sync a repo-linked diagram from the current state of its repository. If the tracked branch or tag has not moved since the last sync, nothing changes. If it has, the diagram is REGENERATED from the repository, which replaces manual canvas edits. Only the owner of the repository connection can use this.

NameTypeReqDescription
project_idstringyesProject id of the repo-linked diagram. A diagram_id from list_diagrams works too.

No output schema declared.

No examples provided.

repo_status ~90

For a diagram that was created from a connected git repository: which repo and branch or tag it tracks, when it last synced, the commit it reflects, and whether daily sync is on. Use repo_refresh to sync it now. Only the owner of the repository connection can use this.

NameTypeReqDescription
project_idstringyesProject id of the repo-linked diagram. A diagram_id from list_diagrams works too.

No output schema declared.

No examples provided.

Common questions

What is the io.datadef/mcp server?

io.datadef/mcp is listed in the public MCP registry as io.datadef/mcp. Generate, edit, and export data-architecture diagrams from your AI. Column lineage, PNG in chat. This page covers its hosted endpoint (https://datadef.io/mcp).

Is the io.datadef/mcp server safe to use?

io.datadef/mcp scores 92 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.datadef/mcp server expose?

io.datadef/mcp exposes 36 tools: get_design_guide, canvas_describe_canvas, canvas_inspect_nodes, canvas_measure_canvas, canvas_suggest_simplifications, and 31 more. Their descriptions and schemas cost roughly 4,714 tokens of context every time the server is loaded.

Does the io.datadef/mcp server require authentication?

Yes. io.datadef/mcp asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

Is the io.datadef/mcp server still maintained?

io.datadef/mcp is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.