AgentGrid.io (by Anima)
AgentGrid.io is a shared workspace for human-and-agent work.
What it can do
- Design System Get Manifest: Get the manifest.json file describing the design system documentation structure. Returns a JSON object mapping file/folder paths to their metadata (description, type, optio
- Design System Get Files: Fetch multiple documentation files by their paths. Returns a JSON object mapping file paths to their content. Use this after getting the manifest to retrieve specific files li
- Artifact Status: Check the build status of an EXISTING artifact (from artifact-create). Read-only. Generation is asynchronous, so this is how you find out it finished. Call it with { sessionId, wait:
What data it sees
Do you need an account
No: the server works without sign-in
AgentGrid.io is a shared workspace for human-and-agent work. Bring any type of agent: Muse, Grok Bot, OpenAI Dot, Claude, Claude Code, ChatGPT, Codex, Cursor, Gemini, OpenClaw, and Hermes, and keep one trusted record of everything it builds. Think Google Drive meets Git, made for AI agents: every app, doc, and file your agents create lands in one shared agent workspace, with full version history, live previews, and one-click sharing with people or other agents. Each agent connects through MCP with its own scoped, revocable access, so you control exactly what every human and agent can see and edit. Agent work becomes team work, with no copies, no lost chat artifacts, and no ecosystem lock-in.
How to connect
How to connect AgentGrid.io (by Anima) to Claude
The server address to paste into Claude settings:
https://agentgrid-mcp--agentgrid.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect AgentGrid.io (by Anima) to ChatGPT
The server address to paste into ChatGPT settings:
https://agentgrid-mcp--agentgrid.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect AgentGrid.io (by Anima) to Cursor
The server address to paste into Cursor settings:
https://agentgrid-mcp--agentgrid.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (10)
Raw names from tools/list. Only developers need these.
| design_system-get_manifest | Get the manifest.json file describing the design system documentation structure. Returns a JSON object mapping file/folder paths to their metadata (description, type, optional tags/category). |
| design_system-get_files | Fetch multiple documentation files by their paths. Returns a JSON object mapping file paths to their content. Use this after getting the manifest to retrieve specific files like README.md, COMPONENTS.md, TROUBLESHOOTING.md or component documentation. |
| artifact-status | Check the build status of an EXISTING artifact (from artifact-create). Read-only. Generation is asynchronous, so this is how you find out it finished. Call it with { sessionId, wait: true } and it WAITS for you: the call returns as soon as status is 'ready' or 'failed', or after about 45 seconds still 'generating'. Then, you can call it again. This tool is meant to be called right after artifact-create, before replying to the user, and keep getting called until status is no longer 'generating'. ONLY when you want an instant snapshot, this tool can be called without wait (or false); the idea is to never spin on wait: false. Requires sessionId — the id returned by artifact-create (or the last path segment of an artifact URL like https://app.agentgrid.io/artifacts/<sessionId> or https://dev.animaapp.com/chat/<sessionId>). **Returns:** { success, sessionId, status: 'generating' | 'ready' | 'failed', progress (0–100, while generating), name, artifactUrl (generating/ready only), playgroundUrl (app and knowledge artifacts only, generating/ready only), previewUrl (app, knowledge and markdown artifacts only, generating/ready only), error (when failed), nextStep (when a wait returned still generating) } |
| artifact-explore | Inspect the files of an EXISTING artifact: list them, search their text, read them, or review the commit history. Works with no shell, no git and no network access, so prefer it whenever you cannot run git. Pass the sessionId (the last path segment of a .../chat/<sessionId> URL). A canvasDraft field, when authorized, reports an uncommitted Canvas draft. Use action draft to inspect its projection overlay explicitly; ordinary reads remain committed files. Draft access requires write permission. Typical flow to change something: action "search" to find the file, action "read" for the files you will edit, then artifact-edit. Every response includes "revision", the artifact's current commit — pass it back as artifact-edit's baseRevision. Use action "read" with a "revision" to see how a file looked at an earlier commit (this is how you undo something). Assets — images, fonts, media — are readable too: action "read" answers with size, mime and oid under "asset": true whenever a file's bytes are not text, instead of content. That check is on the bytes, so it is the authority: an SVG reads as text, and a file with an unfamiliar extension may still come back as an asset. When a search comes back empty, check "notSearched": "assets" counts binary files a text query can never match, and "excluded" counts files under node_modules, dist or build — re-run with includeExcluded true to search those. A "tree" listing also maps any path artifact-edit cannot change under "unwritable". For generation or build progress use artifact-status instead; this shows the commit log, not build state. |
| workspace-list_workspaces | List the workspaces you can access and what you may do in each. Takes no parameters. Workspace ids are opaque: this names the ones you can reach, and a workspace-list_artifacts row carries the id its artifact is filed in. **Returns:** { success: true, workspaces: [{ workspaceId, name, isGeneral, capabilities }] }. `capabilities` is a subset of read, write, share, publish; you need `write` to create or change an artifact in that workspace. `isGeneral` marks the team's General workspace. An empty list means you have been granted no workspace, not that the team has none: ask the user for access. |
| workspace-list_artifacts | List the artifacts you can read, most recently updated first — across every workspace you can access, or in one with `workspaceId`. Each row's `sessionId` is what artifact-explore, artifact-edit and artifact-get_git_token take. **Returns:** { success: true, artifacts: [{ name, type: app | knowledge | markdown | asset, sessionId, workspaceId, workspaceName, updatedAt }], truncated, nextSteps }. Rows cover only what you can access, and the listing is capped (`truncated: true` means more exist): report what you found, never a total, and never say the team has no artifacts. |
| artifact-get_git_token | Get git access to an EXISTING artifact, for local development with a real git client. Use this when you HAVE a working shell with git and outbound network access AND the job suits a local checkout — a large refactor, running or testing the project, branches, or history rewriting. For ordinary reading and editing of an artifact’s files, prefer artifact-explore and artifact-edit: they need no shell, no git and no network of your own, and they change the same repository. An artifact is a real git repository. Pass the sessionId — the id of an existing artifact (e.g. the last path segment of a .../chat/<sessionId> URL, like "mr25vsjppVtbMx") — and this returns a gitRemoteUrl plus the authenticated principal’s commitAuthor. After cloning, apply the returned `git config user.name` and `user.email` instructions before committing; then edit files, commit, and `git push` — pushing updates the live artifact. The gitRemoteUrl holds a short-lived access token scoped to this one artifact (read-only or read-write, depending on your access). Tokens CANNOT be renewed: on a "token expired" git error, call this tool again for a fresh gitRemoteUrl and run `git remote set-url origin <new gitRemoteUrl>`, then retry. If a git command instead fails because the host cannot resolve or reach the server (DNS, proxy or firewall errors), do NOT retry it — that environment has no route to the git remote, so use artifact-edit instead. Treat the gitRemoteUrl as a secret. To rename an artifact or change its visibility, use artifact-update_metadata. |
| review-list | Read the change requests humans have addressed to YOU on their artifacts. A review is a batch of comments a reviewer wrote together and sent as one, each pinned to a place in the artifact. Call this when a human says they left you comments or asked for changes, and at the start of work on an artifact you have been reviewed on before. Every comment carries an anchor. For an app artifact that is `dom`: `sourceFile` with `sourceStart`/`sourceEnd` points straight at the code when it resolved, and `instanceCount` above 1 warns that the markup is SHARED — changing the component changes every instance, so change the one instance unless the reviewer meant all of them. For a document it is `markdownRange`: find the text by SEARCHING the markdown for `quote` (with `prefix`/`suffix` to tell repeats apart), never by the offsets, which any edit above them invalidates; `headingPath` says which section it is in, and `endQuote` with `spansBlocks` marks a comment covering several blocks. `isLatest` false means the artifact moved since the review was written — pull and judge whether the comments still apply before acting. You see the comments addressed to you, plus any addressed to nobody, which arrive marked `unassigned`: a review may hold comments for several agents, and another agent's are not yours to act on or report on. An unassigned comment is anyone's to take: reply to say you are taking it, which announces the work but does not reserve it — the comment stays open to every agent, and another may be working the same one. A comment addressed to PEOPLE and not to you never reaches you at all. A comment may name several parties, agents and people together. `alsoAsked` lists everyone else it names, so you can see a colleague is on it and not redo their work. Any of them may resolve it, and resolving closes it FOR ALL OF THEM. The mentions in the body may scope parts of the request — "@you fix the header, @someone else the footer" — and that scoping is in the words, not in the fiel |
| review-resolve | Close ONE review comment WITHOUT a commit — for what a commit message cannot carry: a question answered, or a deliberate decision not to make the change, explained in `note`. When a commit does address the comment, prefer the trailer `AgentGrid-Resolves: <reviewId>#<index>` in its message: that records which commit resolved it, which this cannot. Closing ends the exchange — if you are asking the reviewer something rather than answering them, use review-reply instead, which leaves the comment open for them to come back to. You may close a comment addressed to you, or one marked `unassigned`. Safe to retry — a comment already closed answers resolved: false rather than failing. |
| review-reply | Say something back on ONE review comment and LEAVE IT OPEN — to ask what the reviewer meant, to report what you found, or to say you are blocked. Use this rather than review-resolve whenever the exchange is not finished: resolving closes it, and the reviewer would have to open a new comment to answer you. The reviewer sees your message in the artifact, and their answer comes back on the same comment — call review-list again to read it. They may not reply immediately, so do not wait on it. You may reply to a comment addressed to you, or to one marked `unassigned`. A closed comment takes no more replies — it answers replied: false, because nobody is reading that thread any more. Use `mentionUserIds` to bring a PERSON into the comment when you need a human decision, an approval, or information you cannot get yourself: pass the `id` of anyone in the artifact's `mentionablePeople` from review-list — they need not already be on the comment. Each person named is emailed, so name somebody only when the exchange genuinely needs them. You cannot mention another agent. |