Use your own AI Pro
Your coding agent has already read your repo. It knows the services, the dependencies, and which one calls which - so instead of describing your stack to Canopy, let the agent write the map.
Connect Canopy's MCP server once and any MCP client - Claude Code,
Codex, Cursor, Claude Desktop - can call create_map and the map
appears in your workspace, ready to edit.
This is not Canopy AI
Canopy AI (coming soon) is our model generating a map from a prompt. This is your agent, with your codebase already in context, writing the map through the API. It works today.
Build a map from your agent
New map → Use your own AI
On the dashboard or the Maps page, open New map and pick Use your own AI. It hands you a ready-made prompt - copy it.
Paste it into your agent
Paste the prompt into Claude Code, Codex, or whichever client you use, in the project you want mapped.
Approve the connection
The agent adds the Canopy MCP server and asks you to approve it. Grant
maps:write - without it the server exposes read-only tools and the map
can't be created.
Let it read and build
The agent inspects the project and calls create_map with a node per
service and an edge per real connection. Open the map on the canvas to
arrange it and attach spend.
The prompt in the dialog is the canonical one - it points the agent at
/docs/mcp.md so it reads the setup and tool reference before doing anything. In
substance it says:
Connect to my Canopy MCP server, then build an architecture map of this project.
1. Add the Canopy MCP server to this client and approve the maps:write scope.
2. Read this project's dependencies, services, and how they connect.
3. Call create_map with a sensible name, each service as a node, and every real
connection or data flow as an edge.
Be accurate to what's actually in the repo - don't invent services, and don't
guess at connections that aren't there.That last line matters. An agent asked to produce a diagram will happily invent a
Redis you don't run, and a map that is plausible is worse than one that is
incomplete - it gets exported into CLAUDE.md and believed.
What you need
What the agent can and can't do
Writes go through the same service layer as the REST API, so an agent gets no shortcuts that a script wouldn't:
- Validation - the map is schema-checked before anything is saved.
- Plan limits - the node cap for your plan applies (Free 25, Pro 150).
- Sanitisation - HTML, scripts and hidden unicode are stripped on write. This
matters more here than anywhere else: the agent both writes that text and later
reads it back out of a
CLAUDE.mdexport. - No spend without
spend:read- a spend-blind agent that reads a map and writes it back carries the stored costs forward untouched, so a GET → PATCH loop can't silently wipe every figure.
Seeing the result
Ask the agent to call preview_map and, in a client that supports
MCP Apps, the map renders as an
actual diagram in the conversation rather than a wall of JSON. In clients that
don't, it degrades to a text summary.
When to use something else
- Just want the repo scanned? Import a repo reads your manifests directly - no agent, no MCP, works on Free.
- Not on GitHub, or mapping something that isn't code? Have any LLM produce a file and import the JSON. That path needs no connection at all.
- Want a starting point rather than your own stack? Clone a template.
Where to go next
- MCP server - connect with OAuth or a token, and what the scopes mean.
- Tools - every tool, including
create_map,update_mapandpreview_map, with example prompts. - Map syntax - the shape the agent is writing.