See it as a diagram
Everything below, as a diagram you can edit. Describe yours and see it in seconds.
No account needed · Editable canvas, not a picture
The two tools
Two of the thirty-six tools on the server, which is nine outcome-level tools plus the twenty-seven atomic canvas tools. repo_status takes the project id of a repo-linked diagram and reports the link: which provider and repository it tracks, which branch or tag, the commit it currently reflects, when it last synced and with what result, whether daily sync is on, and a plain freshness reading. It is annotated readOnlyHint, so a client that gates writes behind approval lets it through as a routine check.
repo_refresh takes the same id and triggers a sync. If the tracked ref has not moved, it comes back in a couple of seconds saying the repository is still at the same commit and nothing changed. If it has moved, the diagram is regenerated from the repository, which typically takes one to three minutes.
Because generation outlives a comfortable tool call, repo_refresh races the sync against a ten second timer and hands control back with a started message pointing at repo_status when the timer wins. The pattern that works is call refresh, keep working, poll status once, rather than blocking on a single call. repo_refresh is annotated destructiveHint, and it means it: a real regeneration replaces the canvas content, so a client that asks before destructive calls is asking a fair question.
repo_status(project_id) returns projectId the id you passed, resolved from a diagram id projectName "Platform architecture" provider github | gitlab | azure_devops repo acme/platform refType/refName branch main (or tag v3.2.0) lastCommitSha 8f21c0ad12... lastSyncedAt 2026-08-20T04:11:07Z lastSyncStatus ok | running | failed | awaiting_focus lastSyncError the message, when the last run failed connectionStatus ok | auth_failed | not_found syncDaily true | false freshness a plain-language reading of the age Returned both as prose and as structuredContent, so an agent can branch on the fields without parsing the sentence.
The guardrails
Ownership is checked on every call: the API key behind the MCP session has to own the repository connection, so an agent cannot refresh a linked diagram belonging to someone else. Repository links themselves are created in the app rather than from an agent, which keeps the token entry and the scope choice in a place a person is looking at.
Refreshes are rate limited to ten per ten minutes per user, and the bucket is shared with manual refreshes from the app, because an agent looping over a list of projects would otherwise start a dozen multi-minute generations at once. Hitting the limit answers with the number of seconds to wait rather than failing the diagram.
The first sync of a brand new link is a special case. It reads the repository, then parks and asks what the diagram should show, unless the repository is Terraform-dominant, which has no question to ask. An agent calling repo_refresh against a parked link is told the choice is pending and answerable on the canvas. It resolves itself either way: after ten minutes of grace the recommendation becomes the answer and the sync continues, with the hourly sweep as the backstop if the process that held the timer restarted.
The messages are written to be actionable rather than decorative, because an agent has to route on them. A project with no link answers "No repository link found for that project, or your key does not own its connection. Repo links are created at datadef.io in the dashboard." A refresh past the limit answers "Too many syncs at once. Try again in N seconds." Neither is an exception the agent has to interpret.
What these two tools cannot do
They cannot create anything. A connection and a link are made in the app, where a person enters the token and picks the scope, and no tool on the server accepts a repository URL. An agent pointed at an unlinked project gets a not-found rather than an offer to connect one.
They cannot choose the view. The focus question asked at first sync is answered on the canvas, not through a tool argument, so an agent cannot decide that a repository should be documented as its data content rather than its infrastructure.
And repo_refresh is not an editing tool. It regenerates from the repository, so it belongs to diagrams whose truth lives in code. A hand-arranged canvas that happens to be linked is better served by turning its daily sync off, as covered in manual edits on a synced diagram. The rest of the server, creation, editing, export and the canvas tools, is described on the agents page, with per-client setup in the MCP documentation.
Deciding when to call them
FAQ
Which MCP tools cover repository-linked diagrams?
How long does an agent-triggered sync take?
Can an agent create a repository connection?
Is there a limit on how often an agent can trigger a sync?
Which agent clients can use these tools?