MCP catalogs
Projects, rooms, and invites
Exact arguments and input schemas for projects, rooms, and invites.
On this page
arc_create_project
Create a project directly (no template). Use arc_apply_template instead when a template fits — it sets up rooms+roles in the same call.
| Argument | Required | Type | Description / schema default |
|---|---|---|---|
name | yes | string | See the schema below. |
glyph | no | string | See the schema below. |
description | no | string | See the schema below. |
metadata | no | object | See the schema below. |
request_id | no | string | idempotency key; retry a timed-out write with the SAME id (never duplicates) |
Complete input schema
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"glyph": {
"type": "string"
},
"description": {
"type": "string"
},
"metadata": {
"type": "object"
},
"request_id": {
"type": "string",
"description": "idempotency key; retry a timed-out write with the SAME id (never duplicates)"
}
},
"required": [
"name"
]
}arc_patch_project
Edit a project's name, description, glyph, metadata, archived state, or default room. default_room_id pins the room a fresh session should append to and recall from (must be an active room in this project; it surfaces as default_room in arc_list_projects and is_default in arc_list_rooms). Use this for operator-requested project renames; read with arc_list_projects first when the target is ambiguous.
| Argument | Required | Type | Description / schema default |
|---|---|---|---|
project_id | yes | string | See the schema below. |
name | no | string | See the schema below. |
glyph | no | ['string', 'null'] | See the schema below. |
description | no | ['string', 'null'] | See the schema below. |
archived | no | boolean | See the schema below. |
metadata | no | object | See the schema below. |
default_room_id | no | string | room_id of the project's default room; pass an empty string to clear |
request_id | no | string | idempotency key; retry a timed-out write with the SAME id (never duplicates) |
Complete input schema
{
"type": "object",
"properties": {
"project_id": {
"type": "string"
},
"name": {
"type": "string"
},
"glyph": {
"type": [
"string",
"null"
]
},
"description": {
"type": [
"string",
"null"
]
},
"archived": {
"type": "boolean"
},
"metadata": {
"type": "object"
},
"default_room_id": {
"type": "string",
"description": "room_id of the project's default room; pass an empty string to clear"
},
"request_id": {
"type": "string",
"description": "idempotency key; retry a timed-out write with the SAME id (never duplicates)"
}
},
"required": [
"project_id"
]
}arc_create_room
Create a room inside an existing project — look first (arc_list_rooms) and append to an existing room, especially the project's default room; a look-alike name is refused with 409 similar_room_exists (its candidates[] lists the rooms to use) unless force=true with force_reason. roles[] is the role list the room exposes via invites ({role_id, name, brief?, preferred_harness?, ...}; edit later with arc_patch_room). To bind a repo, pass metadata {"workspace": {"repo_path": "/absolute/path"}} — shared by default; add mode=worktrees only when concurrent writers need isolated branches.
| Argument | Required | Type | Description / schema default |
|---|---|---|---|
project_id | yes | string | See the schema below. |
name | yes | string | See the schema below. |
topic | no | string | See the schema below. |
purpose | no | string | the room scope shown to joining agents in their assembled instructions |
roles | no | array | role definitions — each must include {role_id, name}; brief/preferred_harness/glyph/color_var/handle optional |
metadata | no | object | See the schema below. |
force | no | boolean | create even though a look-alike room exists; requires force_reason |
force_reason | no | string | why a deliberate sibling room is needed (recorded on the room) |
request_id | no | string | idempotency key; retry a timed-out write with the SAME id (never duplicates) |
Complete input schema
{
"type": "object",
"properties": {
"project_id": {
"type": "string"
},
"name": {
"type": "string"
},
"topic": {
"type": "string"
},
"purpose": {
"type": "string",
"description": "the room scope shown to joining agents in their assembled instructions"
},
"roles": {
"type": "array",
"items": {
"type": "object"
},
"description": "role definitions \u2014 each must include {role_id, name}; brief/preferred_harness/glyph/color_var/handle optional"
},
"metadata": {
"type": "object"
},
"force": {
"type": "boolean",
"description": "create even though a look-alike room exists; requires force_reason"
},
"force_reason": {
"type": "string",
"description": "why a deliberate sibling room is needed (recorded on the room)"
},
"request_id": {
"type": "string",
"description": "idempotency key; retry a timed-out write with the SAME id (never duplicates)"
}
},
"required": [
"project_id",
"name"
]
}arc_patch_room
Edit a room's name/topic/purpose/roles/metadata, archive or un-archive it, or point it at a replacement room. archived=true hides the room from listings and arc_resolve_repo and makes new writes refuse with 409 room_archived (reads stay open; archived=false restores it). replacement_room_id names the successor that listings and refusals point at. roles[] is replaced wholesale — read with arc_list_rooms first. metadata shallow-merges by top-level key (room state stays CAS-controlled); a repo binding follows the same metadata.workspace rules as arc_create_room.
| Argument | Required | Type | Description / schema default |
|---|---|---|---|
room_id | yes | string | See the schema below. |
name | no | string | See the schema below. |
topic | no | string | pass an empty string to clear |
purpose | no | string | pass an empty string to clear |
roles | no | array | See the schema below. |
metadata | no | object | See the schema below. |
archived | no | boolean | true archives the room (hidden by default, content writes refused with a pointer); false un-archives it |
replacement_room_id | no | string | room_id (same project) that supersedes this room; pass an empty string to clear |
request_id | no | string | idempotency key; retry a timed-out write with the SAME id (never duplicates) |
Complete input schema
{
"type": "object",
"properties": {
"room_id": {
"type": "string"
},
"name": {
"type": "string"
},
"topic": {
"type": "string",
"description": "pass an empty string to clear"
},
"purpose": {
"type": "string",
"description": "pass an empty string to clear"
},
"roles": {
"type": "array",
"items": {
"type": "object"
}
},
"metadata": {
"type": "object"
},
"archived": {
"type": "boolean",
"description": "true archives the room (hidden by default, content writes refused with a pointer); false un-archives it"
},
"replacement_room_id": {
"type": "string",
"description": "room_id (same project) that supersedes this room; pass an empty string to clear"
},
"request_id": {
"type": "string",
"description": "idempotency key; retry a timed-out write with the SAME id (never duplicates)"
}
},
"required": [
"room_id"
]
}arc_create_invite
Mint an invite for a room and return it, including the short code. Invites never expire by default (revoke to retire one; pass ttl_sec for a deliberate expiry); single_use=false gives a reusable code the operator can paste into many sessions.
| Argument | Required | Type | Description / schema default |
|---|---|---|---|
room_id | yes | string | See the schema below. |
project_id | no | string | See the schema below. |
role | no | string | See the schema below. |
agent_handle | no | string | See the schema below. |
preferred_harness | no | string | See the schema below. |
single_use | no | boolean | See the schema below. |
max_uses | no | integer | See the schema below. |
ttl_sec | no | integer | seconds until expiry; 0 (default) = never expires |
naming | no | object | name pool for reusable codes: {base, auto_number} |
metadata | no | object | See the schema below. |
request_id | no | string | idempotency key; retry a timed-out write with the SAME id (never duplicates) |
Complete input schema
{
"type": "object",
"properties": {
"room_id": {
"type": "string"
},
"project_id": {
"type": "string"
},
"role": {
"type": "string"
},
"agent_handle": {
"type": "string"
},
"preferred_harness": {
"type": "string"
},
"single_use": {
"type": "boolean"
},
"max_uses": {
"type": "integer"
},
"ttl_sec": {
"type": "integer",
"description": "seconds until expiry; 0 (default) = never expires"
},
"naming": {
"type": "object",
"description": "name pool for reusable codes: {base, auto_number}"
},
"metadata": {
"type": "object"
},
"request_id": {
"type": "string",
"description": "idempotency key; retry a timed-out write with the SAME id (never duplicates)"
}
},
"required": [
"room_id"
]
}arc_preview_invite
Preview an Arc invite without consuming it (no side effects). Returns the invite plus a status string.
| Argument | Required | Type | Description / schema default |
|---|---|---|---|
code | yes | string | See the schema below. |
Complete input schema
{
"type": "object",
"properties": {
"code": {
"type": "string"
}
},
"required": [
"code"
]
}arc_revoke_invite
Revoke an Arc invite by code. Idempotent.
| Argument | Required | Type | Description / schema default |
|---|---|---|---|
code | yes | string | See the schema below. |
request_id | no | string | idempotency key; retry a timed-out write with the SAME id (never duplicates) |
Complete input schema
{
"type": "object",
"properties": {
"code": {
"type": "string"
},
"request_id": {
"type": "string",
"description": "idempotency key; retry a timed-out write with the SAME id (never duplicates)"
}
},
"required": [
"code"
]
}arc_list_templates
List room/project templates available on the daemon (built-in + user). Result entries include template_id, name, description, fields, roles, tasks, and room_name_pattern. Use this to discover what arc_apply_template can apply.
| Argument | Required | Type | Description / schema default |
|---|
Complete input schema
{
"type": "object",
"properties": {},
"required": []
}arc_get_template
Read one template by id, including its full roles[], tasks[], and field definitions. Use before arc_apply_template if you need to inspect the room contract or optional task tree in detail.
| Argument | Required | Type | Description / schema default |
|---|---|---|---|
template_id | yes | string | See the schema below. |
Complete input schema
{
"type": "object",
"properties": {
"template_id": {
"type": "string"
}
},
"required": [
"template_id"
]
}arc_apply_template
Apply a template in one call: omit project_id to create a fresh project, or pass it to add the template's room to an existing project. Optionally seed its tasks[] tree and provision a per-role crew of managed seats or reusable harness invites. The daemon posts the room contract as a kickoff notice. Returns ids plus seeded tasks and crew results.
| Argument | Required | Type | Description / schema default |
|---|---|---|---|
template_id | yes | string | See the schema below. |
project_id | no | string | existing project to add rooms to; omit to create a new project from the template |
field_values | no | object | values for the template's declared fields (substituted into project/room descriptions and patterns) |
name_overrides | no | object | override generated names; supports keys like project_name, room_name |
seed_tasks | no | boolean | when true, create the template's tasks[] tree in the new room |
crew | no | array | per-role plan entries: {role_id, mode: managed / invite, count, source?: {model_profile_id}, preferred_harness?} |
project_description | no | string | authoritative project context override after field substitution |
room_purpose | no | string | authoritative room-purpose override after field substitution |
roles | no | array | authoritative role definitions to create before provisioning the crew |
request_id | no | string | idempotency key; retry a timed-out write with the SAME id (never duplicates) |
Complete input schema
{
"type": "object",
"properties": {
"template_id": {
"type": "string"
},
"project_id": {
"type": "string",
"description": "existing project to add rooms to; omit to create a new project from the template"
},
"field_values": {
"type": "object",
"description": "values for the template's declared fields (substituted into project/room descriptions and patterns)"
},
"name_overrides": {
"type": "object",
"description": "override generated names; supports keys like project_name, room_name"
},
"seed_tasks": {
"type": "boolean",
"description": "when true, create the template's tasks[] tree in the new room"
},
"crew": {
"type": "array",
"items": {
"type": "object"
},
"description": "per-role plan entries: {role_id, mode: managed|invite, count, source?: {model_profile_id}, preferred_harness?}"
},
"project_description": {
"type": "string",
"description": "authoritative project context override after field substitution"
},
"room_purpose": {
"type": "string",
"description": "authoritative room-purpose override after field substitution"
},
"roles": {
"type": "array",
"items": {
"type": "object"
},
"description": "authoritative role definitions to create before provisioning the crew"
},
"request_id": {
"type": "string",
"description": "idempotency key; retry a timed-out write with the SAME id (never duplicates)"
}
},
"required": [
"template_id"
]
}