Directory / Agents, IDEs & developer tools
Carbon Forge
Source control and a shared record for people and agents: code, files and prose in one record on the server, with lanes instead of clones and all-or-nothing landings. Reads public workspaces without a token; writing needs a bearer token. Endpoint: https://carbonforge.dev/api/mcp
Live Answered an MCP handshake without credentials and listed 22 tools.
- Category
- Agents, IDEs & developer tools
- Transport
http- Source
- https://carbonforge.dev/docs/p/guides/mcp-anonymous-access
- Endpoint
https://carbonforge.dev/api/mcp- MCP Registry
io.github.100monkeys-ai/carbon-forge- Reports itself as
- carbon-forge ed5376e08c3d569b0fc53e2ea9ff1e9f04d7fa22
- Protocol
- 2025-11-25
- Tools
- 22
- Context cost
- about 8,000 tokens for the tool definitions (estimated at four characters per token)
- Tool definitions last changed
- 2026-11-03
- Handshake time
- 1707 ms
- Last checked
- 2026-11-03 10:54:38 UTC
- Listed since
- 2026-10-28
Health and compatibility
| Endpoint reachable | Verified | Responded in 1707 ms |
|---|---|---|
| MCP handshake (initialize) | Verified | Completed without credentials |
| Tool discovery (tools/list) | Verified | 22 tools listed |
| Authentication | Verified | None needed to connect |
| Protocol version | Verified | 2025-11-25 |
| Transport | Verified | Streamable HTTP |
| Capabilities declared | Verified | logging, prompts, resources, tools |
Last checked . Verified means the check saw it happen; it says nothing about whether the server is safe.
Recent history
2 daily checks so far. Green answered, violet asked for auth, red did not answer.
Set up in your client
Claude Code
Run this in a terminal:
claude mcp add --transport http carbon-forge https://carbonforge.dev/api/mcpClaude Desktop
Open Settings → Connectors → Add custom connector and paste this URL:
https://carbonforge.dev/api/mcpOr bridge it through mcp-remote in claude_desktop_config.json (needs Node.js):
{
"mcpServers": {
"carbon-forge": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://carbonforge.dev/api/mcp"
]
}
}
}Cursor
Or add it to ~/.cursor/mcp.json (or .cursor/mcp.json in a project):
{
"mcpServers": {
"carbon-forge": {
"url": "https://carbonforge.dev/api/mcp"
}
}
}VS Code
Or add it to .vscode/mcp.json:
{
"servers": {
"carbon-forge": {
"type": "http",
"url": "https://carbonforge.dev/api/mcp"
}
}
}Or from a terminal:
code --add-mcp '{"name": "carbon-forge", "type": "http", "url": "https://carbonforge.dev/api/mcp"}'Windsurf
Add it to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"carbon-forge": {
"serverUrl": "https://carbonforge.dev/api/mcp"
}
}
}Other clients
Most clients accept this shape. The endpoint is:
https://carbonforge.dev/api/mcp{
"mcpServers": {
"carbon-forge": {
"type": "http",
"url": "https://carbonforge.dev/api/mcp"
}
}
}If it does not connect
- Restart the client after editing a config file, and keep keys out of files you commit.
- If the tools do not appear, open the client's MCP log: a 401 means the credentials were not accepted, and a timeout means the server did not answer.
Tools 22
Names, descriptions and input schemas exactly as the server returned them on 2026-11-03. This is the server author's own text. Nothing is run from this page. Labels such as read-only are declared by the server and are not verified. Raw JSON
atoms.listread-onlyList atoms in the current workspace. The `path_prefix`, `body_contains`, `metadata`, `sort`, `direction` and …
List atoms in the current workspace. The `path_prefix`, `body_contains`, `metadata`, `sort`, `direction` and `include_metadata` arguments mirror the same arguments on pages.list.
| Parameter | Type | Description | |
|---|---|---|---|
limit | integer | optional | |
cursor | string | optional | |
path_prefix | string | optional | |
body_contains | string | optional | |
sort | string | optional | Order the listing by path (the default), last update, or creation time. One of: path, updated_at, created_at |
direction | string | optional | Direction for `sort`. Ascending by default. One of: asc, desc |
metadata | object | optional | Keep only entries whose metadata contains every one of these keys with an equal value; a second key narrows the result. Values are strings, numbers or booleans, and the match is against top-level keys — a key nested inside an object does not answer it. At … |
include_metadata | boolean | optional | Carry each entry's metadata object in the response. Off by default, because a metadata bag can be large and a listing is a scan surface. |
workspace | string | optional | Workspace (slug or UUID) this call acts in. Overrides the per-token current-workspace pointer for this call only — read-only, it never moves the pointer. Omit to use the pointer set by `me.set_current_workspace`. |
instance | string | optional | Instance (slug or UUID) to resolve a `workspace` slug within. Only meaningful for apex tokens, which have no home instance; instance-locked tokens always resolve within their own. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "atoms.list",
"arguments": {}
}
}atoms.readread-onlyRead an atom by path or UUID with usage_pages projection. Returns metadata. Pass `section` with a heading's …
Read an atom by path or UUID with usage_pages projection. Returns metadata. Pass `section` with a heading's plain text to get back only that heading and the blocks under it, down to the next heading at the same or shallower level; the result then also carries `section: { heading, level, matches }`, and everything else on it is the atom's own, so a section can be read and written straight back.
| Parameter | Type | Description | |
|---|---|---|---|
pathOrId | string | required | Either the path of the page/atom (e.g. "guides/foo" — no leading slash, lowercase, slash-separated) or the UUID. Paths and UUIDs both resolve inside the workspace this call resolved to: the `workspace` argument when given, otherwise the token's … |
section | string | optional | A heading's plain text (case-insensitive, whitespace-trimmed). When given, the body returned is that heading and every block down to the next heading at the same or shallower level, instead of the whole document, and the result carries a `section` block … |
lane | string | optional | A lane's label. On a write, the patch is stored on the lane, validated against the lane's view, and the trunk is not written. On a read, the body is the trunk's current body with the lane's patches applied, composed now; a conflict exists only where a patch … |
workspace | string | optional | Workspace (slug or UUID) this call acts in. Overrides the per-token current-workspace pointer for this call only — read-only, it never moves the pointer. Omit to use the pointer set by `me.set_current_workspace`. |
instance | string | optional | Instance (slug or UUID) to resolve a `workspace` slug within. Only meaningful for apex tokens, which have no home instance; instance-locked tokens always resolve within their own. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "atoms.read",
"arguments": {
"pathOrId": "..."
}
}
}comments.listread-onlyList the comment thread for a page or atom.
List the comment thread for a page or atom.
| Parameter | Type | Description | |
|---|---|---|---|
target_kind | string | required | One of: page, atom |
target_pathOrId | string | required | Either the path of the page/atom (e.g. "guides/foo" — no leading slash, lowercase, slash-separated) or the UUID. Paths and UUIDs both resolve inside the workspace this call resolved to: the `workspace` argument when given, otherwise the token's … |
workspace | string | optional | Workspace (slug or UUID) this call acts in. Overrides the per-token current-workspace pointer for this call only — read-only, it never moves the pointer. Omit to use the pointer set by `me.set_current_workspace`. |
instance | string | optional | Instance (slug or UUID) to resolve a `workspace` slug within. Only meaningful for apex tokens, which have no home instance; instance-locked tokens always resolve within their own. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "comments.list",
"arguments": {
"target_kind": "page",
"target_pathOrId": "..."
}
}
}cortex.groundread-onlyOrientation surface: instance metadata, both grounding documents, identity and capabilities, reachable …
Orientation surface: instance metadata, both grounding documents, identity and capabilities, reachable workspaces, sidecar health. Pass `workspace` to ground a named workspace without moving the per-token pointer. Pass a `known_grounding_at` / `known_workspace_grounding_at` you hold and an unchanged document is acknowledged, not resent. Details: https://carbonforge.dev/docs/p/api/mcp-tools-catalog
| Parameter | Type | Description | |
|---|---|---|---|
instance | string | optional | |
workspace | string | optional | |
known_grounding_at | string | optional | ISO-8601 timestamp of the instance grounding document you already hold; when it equals the stored document exactly, the reply acknowledges it as unchanged instead of resending the body, and any other value returns the body. |
known_workspace_grounding_at | string | optional | ISO-8601 timestamp of the resolved workspace grounding document you already hold; when it equals the stored document exactly, the reply acknowledges it as unchanged instead of resending the body, and any other value returns the body. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "cortex.ground",
"arguments": {}
}
}discovery.list_entitiesread-onlyBrowse pages or atoms inside a workspace with faceted filters (tag, author, date range, visibility, metadata …
Browse pages or atoms inside a workspace with faceted filters (tag, author, date range, visibility, metadata containment) and sort by alphabetical, recency, or star count. Viewer-aware: members see everything, anonymous callers see only public entities in public workspaces. 50 items per page, cursor-based. Details: https://carbonforge.dev/docs/p/api/mcp-tools-catalog
| Parameter | Type | Description | |
|---|---|---|---|
workspace_id | string | optional | |
workspace_slug | string | optional | |
kind | string | required | One of: page, atom |
sort | string | optional | One of: alphabetical, recently_updated, recently_created, most_starred |
q | string | optional | |
filters | object | optional | |
cursor | string | optional | |
limit | integer | optional | |
workspace | string | optional | Workspace (slug or UUID) this call acts in. Overrides the per-token current-workspace pointer for this call only — read-only, it never moves the pointer. Omit to use the pointer set by `me.set_current_workspace`. |
instance | string | optional | Instance (slug or UUID) to resolve a `workspace` slug within. Only meaningful for apex tokens, which have no home instance; instance-locked tokens always resolve within their own. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "discovery.list_entities",
"arguments": {
"kind": "page"
}
}
}discovery.list_instancesread-onlyList instances. Filter: all (default) | public | my | my_admin. public lists an instance that has public …
List instances. Filter: all (default) | public | my | my_admin. public lists an instance that has public reading on, is listed in Discover, is not frozen, and has a workspace that is not private holding a page that is not private. my and my_admin list the caller's own instances (member; admin) with no such gate; all is public plus my. Without a token every filter is public.
| Parameter | Type | Description | |
|---|---|---|---|
filter | string | optional | One of: all, public, my, my_admin |
query | string | optional | |
limit | integer | optional |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "discovery.list_instances",
"arguments": {}
}
}discovery.list_workspacesread-onlyList workspaces across one or all instances, with the same filters. public lists a workspace when its …
List workspaces across one or all instances, with the same filters. public lists a workspace when its instance has public reading on, the workspace is not private, its instance is listed in Discover and not frozen, and it holds a page that is not private. my and my_admin list the caller's own workspaces with no such gate; all is public plus my. Without a token every filter is public.
| Parameter | Type | Description | |
|---|---|---|---|
filter | string | optional | One of: all, public, my, my_admin |
query | string | optional | |
instance_id | string | optional | |
limit | integer | optional |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "discovery.list_workspaces",
"arguments": {}
}
}discovery.searchread-onlySearch instance and workspace metadata + grounding documents. Returns parallel lists for both scopes.
Search instance and workspace metadata + grounding documents. Returns parallel lists for both scopes.
| Parameter | Type | Description | |
|---|---|---|---|
q | string | required | |
scope | string | optional | One of: instances, workspaces, both |
filter | string | optional | One of: all, public, my, my_admin |
limit | integer | optional |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "discovery.search",
"arguments": {
"q": "..."
}
}
}files.listread-onlyBrowse the workspace as a file tree, one level at a time: directories, pages, atoms, code trees (expanded at …
Browse the workspace as a file tree, one level at a time: directories, pages, atoms, code trees (expanded at their paths) and library entries. Each node names its kind, entity, current revision and digest; `at` holds the entities exactly at `path`. `surface` keeps that surface only. History: files.history. Anonymous callers see public pages and atoms, and code trees of surface code.
| Parameter | Type | Description | |
|---|---|---|---|
path | string | optional | A path in the workspace, e.g. "repos/pilot/bin": case kept, slash-separated, no leading slash. Omit or pass "" for the root. |
lane | string | optional | A lane label. When given, every node carries `lane: { patched, conflict }` against that lane; a directory is marked when anything below it is. Members only. |
surface | string | optional | Only entities whose metadata's surface is this one (a tree's files go with their tree). One of: code, adr, public-docs, internal |
perspective | string | optional | Only what this perspective holds (perspectives.list), at paths with its root stripped; an anonymous caller sees its public part. Not with surface. |
offset | integer | optional | |
limit | integer | optional | Nodes per page, default 100. |
workspace | string | optional | Workspace (slug or UUID) this call acts in. Overrides the per-token current-workspace pointer for this call only — read-only, it never moves the pointer. Omit to use the pointer set by `me.set_current_workspace`. |
instance | string | optional | Instance (slug or UUID) to resolve a `workspace` slug within. Only meaningful for apex tokens, which have no home instance; instance-locked tokens always resolve within their own. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "files.list",
"arguments": {}
}
}kg.get_relatedread-onlySemantic nearest-neighbors via similarity_edges.
Semantic nearest-neighbors via similarity_edges.
| Parameter | Type | Description | |
|---|---|---|---|
pathOrId | string | required | Either the path of the page/atom (e.g. "guides/foo" — no leading slash, lowercase, slash-separated) or the UUID. Paths and UUIDs both resolve inside the workspace this call resolved to: the `workspace` argument when given, otherwise the token's … |
kind | string | required | One of: page, atom |
limit | integer | optional | |
workspace | string | optional | Workspace (slug or UUID) this call acts in. Overrides the per-token current-workspace pointer for this call only — read-only, it never moves the pointer. Omit to use the pointer set by `me.set_current_workspace`. |
instance | string | optional | Instance (slug or UUID) to resolve a `workspace` slug within. Only meaningful for apex tokens, which have no home instance; instance-locked tokens always resolve within their own. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "kg.get_related",
"arguments": {
"pathOrId": "...",
"kind": "page"
}
}
}kg.list_cross_linksread-onlyList incoming + outgoing cross-links for a page or atom.
List incoming + outgoing cross-links for a page or atom.
| Parameter | Type | Description | |
|---|---|---|---|
pathOrId | string | required | Either the path of the page/atom (e.g. "guides/foo" — no leading slash, lowercase, slash-separated) or the UUID. Paths and UUIDs both resolve inside the workspace this call resolved to: the `workspace` argument when given, otherwise the token's … |
kind | string | required | One of: page, atom |
workspace | string | optional | Workspace (slug or UUID) this call acts in. Overrides the per-token current-workspace pointer for this call only — read-only, it never moves the pointer. Omit to use the pointer set by `me.set_current_workspace`. |
instance | string | optional | Instance (slug or UUID) to resolve a `workspace` slug within. Only meaningful for apex tokens, which have no home instance; instance-locked tokens always resolve within their own. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "kg.list_cross_links",
"arguments": {
"pathOrId": "...",
"kind": "page"
}
}
}media.readread-onlyFetch metadata for a single media item.
Fetch metadata for a single media item.
| Parameter | Type | Description | |
|---|---|---|---|
media_id | string | required | |
workspace | string | optional | Workspace (slug or UUID) this call acts in. Overrides the per-token current-workspace pointer for this call only — read-only, it never moves the pointer. Omit to use the pointer set by `me.set_current_workspace`. |
instance | string | optional | Instance (slug or UUID) to resolve a `workspace` slug within. Only meaningful for apex tokens, which have no home instance; instance-locked tokens always resolve within their own. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "media.read",
"arguments": {
"media_id": "..."
}
}
}pages.listread-onlyList pages in a workspace. `path_prefix` narrows by leading segment; `body_contains` keeps pages whose …
List pages in a workspace. `path_prefix` narrows by leading segment; `body_contains` keeps pages whose Markdown holds a literal substring; `metadata` keeps pages whose top-level metadata contains the given scalar keys; `sort` (path | updated_at | created_at) and `direction` order the set; `include_metadata` adds each page's metadata. Details: https://carbonforge.dev/docs/p/api/mcp-tools-catalog
| Parameter | Type | Description | |
|---|---|---|---|
limit | integer | optional | |
cursor | string | optional | |
path_prefix | string | optional | |
body_contains | string | optional | |
sort | string | optional | Order the listing by path (the default), last update, or creation time. One of: path, updated_at, created_at |
direction | string | optional | Direction for `sort`. Ascending by default. One of: asc, desc |
metadata | object | optional | Keep only entries whose metadata contains every one of these keys with an equal value; a second key narrows the result. Values are strings, numbers or booleans, and the match is against top-level keys — a key nested inside an object does not answer it. At … |
include_metadata | boolean | optional | Carry each entry's metadata object in the response. Off by default, because a metadata bag can be large and a listing is a scan surface. |
workspace | string | optional | Workspace (slug or UUID) this call acts in. Overrides the per-token current-workspace pointer for this call only — read-only, it never moves the pointer. Omit to use the pointer set by `me.set_current_workspace`. |
instance | string | optional | Instance (slug or UUID) to resolve a `workspace` slug within. Only meaningful for apex tokens, which have no home instance; instance-locked tokens always resolve within their own. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "pages.list",
"arguments": {}
}
}pages.readread-onlyRead a page by path or UUID. Returns the Markdown body plus the page metadata object. Pass `section` with a …
Read a page by path or UUID. Returns the Markdown body plus the page metadata object. Pass `section` with a heading's plain text to get back only that heading and the blocks under it, down to the next heading at the same or shallower level; the result then also carries `section: { heading, level, matches }`. Details: https://carbonforge.dev/docs/p/api/mcp-tools-catalog
| Parameter | Type | Description | |
|---|---|---|---|
pathOrId | string | required | Either the path of the page/atom (e.g. "guides/foo" — no leading slash, lowercase, slash-separated) or the UUID. Paths and UUIDs both resolve inside the workspace this call resolved to: the `workspace` argument when given, otherwise the token's … |
section | string | optional | A heading's plain text (case-insensitive, whitespace-trimmed). When given, the body returned is that heading and every block down to the next heading at the same or shallower level, instead of the whole document, and the result carries a `section` block … |
lane | string | optional | A lane's label. On a write, the patch is stored on the lane, validated against the lane's view, and the trunk is not written. On a read, the body is the trunk's current body with the lane's patches applied, composed now; a conflict exists only where a patch … |
workspace | string | optional | Workspace (slug or UUID) this call acts in. Overrides the per-token current-workspace pointer for this call only — read-only, it never moves the pointer. Omit to use the pointer set by `me.set_current_workspace`. |
instance | string | optional | Instance (slug or UUID) to resolve a `workspace` slug within. Only meaningful for apex tokens, which have no home instance; instance-locked tokens always resolve within their own. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "pages.read",
"arguments": {
"pathOrId": "..."
}
}
}revisions.compareread-onlyMarkdown-level diff between two revisions of the same page or atom. Returns segments (op: equal | insert | …
Markdown-level diff between two revisions of the same page or atom. Returns segments (op: equal | insert | delete) plus both Markdown projections.
| Parameter | Type | Description | |
|---|---|---|---|
kind | string | required | One of: page, atom |
pathOrId | string | required | Either the path of the page/atom (e.g. "guides/foo" — no leading slash, lowercase, slash-separated) or the UUID. Paths and UUIDs both resolve inside the workspace this call resolved to: the `workspace` argument when given, otherwise the token's … |
revision_a_id | integer | required | |
revision_b_id | integer | required | |
workspace | string | optional | Workspace (slug or UUID) this call acts in. Overrides the per-token current-workspace pointer for this call only — read-only, it never moves the pointer. Omit to use the pointer set by `me.set_current_workspace`. |
instance | string | optional | Instance (slug or UUID) to resolve a `workspace` slug within. Only meaningful for apex tokens, which have no home instance; instance-locked tokens always resolve within their own. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "revisions.compare",
"arguments": {
"kind": "page",
"pathOrId": "...",
"revision_a_id": 0,
"revision_b_id": 0
}
}
}revisions.getread-onlyFetch a specific revision (returns Markdown body).
Fetch a specific revision (returns Markdown body).
| Parameter | Type | Description | |
|---|---|---|---|
kind | string | required | One of: page, atom |
pathOrId | string | required | Either the path of the page/atom (e.g. "guides/foo" — no leading slash, lowercase, slash-separated) or the UUID. Paths and UUIDs both resolve inside the workspace this call resolved to: the `workspace` argument when given, otherwise the token's … |
revision_id | integer | required | |
workspace | string | optional | Workspace (slug or UUID) this call acts in. Overrides the per-token current-workspace pointer for this call only — read-only, it never moves the pointer. Omit to use the pointer set by `me.set_current_workspace`. |
instance | string | optional | Instance (slug or UUID) to resolve a `workspace` slug within. Only meaningful for apex tokens, which have no home instance; instance-locked tokens always resolve within their own. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "revisions.get",
"arguments": {
"kind": "page",
"pathOrId": "...",
"revision_id": 0
}
}
}revisions.listread-onlyList revisions for a page or atom (cursor-paginated).
List revisions for a page or atom (cursor-paginated).
| Parameter | Type | Description | |
|---|---|---|---|
kind | string | required | One of: page, atom |
pathOrId | string | required | Either the path of the page/atom (e.g. "guides/foo" — no leading slash, lowercase, slash-separated) or the UUID. Paths and UUIDs both resolve inside the workspace this call resolved to: the `workspace` argument when given, otherwise the token's … |
limit | integer | optional | |
cursor | string | optional | |
workspace | string | optional | Workspace (slug or UUID) this call acts in. Overrides the per-token current-workspace pointer for this call only — read-only, it never moves the pointer. Omit to use the pointer set by `me.set_current_workspace`. |
instance | string | optional | Instance (slug or UUID) to resolve a `workspace` slug within. Only meaningful for apex tokens, which have no home instance; instance-locked tokens always resolve within their own. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "revisions.list",
"arguments": {
"kind": "page",
"pathOrId": "..."
}
}
}search.globalread-onlyHybrid FTS + pgvector + RRF search. Returns Markdown excerpts.
Hybrid FTS + pgvector + RRF search. Returns Markdown excerpts.
| Parameter | Type | Description | |
|---|---|---|---|
q | string | required | |
scope | string | optional | One of: workspace, all_mine, all_public |
limit | integer | optional | |
cursor | string | optional | |
perspective | string | optional | Only this workspace's pages and atoms the perspective holds (perspectives.list), at paths with its root stripped. |
workspace | string | optional | Workspace (slug or UUID) this call acts in. Overrides the per-token current-workspace pointer for this call only — read-only, it never moves the pointer. Omit to use the pointer set by `me.set_current_workspace`. |
instance | string | optional | Instance (slug or UUID) to resolve a `workspace` slug within. Only meaningful for apex tokens, which have no home instance; instance-locked tokens always resolve within their own. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "search.global",
"arguments": {
"q": "..."
}
}
}search.literalread-onlyExact-substring search over the Markdown projection of pages and atoms — deterministic, unlike hybrid …
Exact-substring search over the Markdown projection of pages and atoms — deterministic, unlike hybrid `search.global`. A needle shorter than 3 characters is rejected. Returns one envelope per matched entity, up to 5 hits each as `{ line, col, snippet }`. `case_sensitive` defaults to false; `scope` is workspace | all_mine | all_public. Details: https://carbonforge.dev/docs/p/api/mcp-tools-catalog
| Parameter | Type | Description | |
|---|---|---|---|
q | string | required | |
scope | string | optional | One of: workspace, all_mine, all_public |
kinds | string[] | optional | |
context_lines | integer | optional | |
case_sensitive | boolean | optional | |
limit | integer | optional | |
cursor | string | optional | |
workspace | string | optional | Workspace (slug or UUID) this call acts in. Overrides the per-token current-workspace pointer for this call only — read-only, it never moves the pointer. Omit to use the pointer set by `me.set_current_workspace`. |
instance | string | optional | Instance (slug or UUID) to resolve a `workspace` slug within. Only meaningful for apex tokens, which have no home instance; instance-locked tokens always resolve within their own. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "search.literal",
"arguments": {
"q": "..."
}
}
}trees.getread-onlyRead a code tree's revision (the current one by default), its metadata and surface, and a page of its entries …
Read a code tree's revision (the current one by default), its metadata and surface, and a page of its entries in path order: path, git mode, size and blob SHA-256, optionally under `path_prefix`. A symlink's blob is its target; a submodule link has no blob and gives its `commit`. With `lane`, `metadata` is the lane's bag if it sets one. Anonymous callers read a public code tree's current one.
| Parameter | Type | Description | |
|---|---|---|---|
path_or_id | string | required | The tree's path or its UUID. |
revision_id | integer | optional | |
snapshot_id | string | optional | Read the revision this snapshot names (snapshots.cut); not with revision_id or lane. |
path_prefix | string | optional | |
offset | integer | optional | |
limit | integer | optional | |
lane | string | optional | A lane's label. On a write, the change is stored on the lane — a tree as a manifest delta, a library entry as a blob reference — and the trunk is not written. On a read, the trunk's current state with the lane's patches applied, composed now; where the trunk … |
workspace | string | optional | Workspace (slug or UUID) this call acts in. Overrides the per-token current-workspace pointer for this call only — read-only, it never moves the pointer. Omit to use the pointer set by `me.set_current_workspace`. |
instance | string | optional | Instance (slug or UUID) to resolve a `workspace` slug within. Only meaningful for apex tokens, which have no home instance; instance-locked tokens always resolve within their own. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "trees.get",
"arguments": {
"path_or_id": "..."
}
}
}workspaces.listread-onlyList every workspace the calling user is a member of. This is a membership catalogue and not a capability: it …
List every workspace the calling user is a member of. This is a membership catalogue and not a capability: it is not narrowed by the token, so a listed workspace may still be outside this token's reach. Call cortex.ground for what this token can actually resolve.
Takes no parameters.
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "workspaces.list",
"arguments": {}
}
}workspaces.resolve_slugread-onlyResolve a workspace slug to its id, role, and archived state. 404 when the caller isn't a member (no …
Resolve a workspace slug to its id, role, and archived state. 404 when the caller isn't a member (no enumeration).
| Parameter | Type | Description | |
|---|---|---|---|
slug | string | required | |
instance | string | optional |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "workspaces.resolve_slug",
"arguments": {
"slug": "..."
}
}
}Prompts 5
orientTwo-scope orientation: ground at instance level, then at workspace level whenever the focus changes. Useful when an LLM joins a new substrate, or after switching workspaces mid-session.summarize_pageRead a page and produce a 3-sentence summary plus suggested cross-links via kg.get_related.extract_atoms_from_pageIdentify reusable concepts on a page and extract them as atoms via atoms.create_from_selection.link_relatedSuggest cross-links from kg.get_related and splice approved ones into the page body as [[wiki link]] marks.weekly_digestCompose a one-paragraph digest from notifications, audit log, and recent updates.
Badge
Maintain this server? Put its live status in your README:
[](https://mcp.aianytime.net/s/carbon-forge/)Edit this entry · Report a problem
More in Agents, IDEs & developer tools
Checks record what a server answered, not whether it is safe. A listing is not a security audit; read a server's source and permissions before you connect it. Add a server · JSON · llms.txt · llms-full.txt
Browse: Agents, IDEs & developer tools · Search & discovery · Knowledge, memory & context · Media & generation · Security · Finance & markets · Marketing, content & social · Cloud, ops & data · Commerce, travel & logistics · Work & productivity · No account needed · Local servers