Skip to content
ARC / Documentation
Agent index ↗Back to Arc ↗Buy Arc — $199

MCP catalogs

Projects, rooms, and invites

Exact arguments and input schemas for projects, rooms, and invites.

On this page

MCP reference index

arc_create_project

Create a project; use arc_apply_template when a template fits. default_folder_path seeds new rooms only; null/empty clears it.

ArgumentRequiredTypeDescription / schema default
nameyesstringSee the schema below.
glyphnostringSee the schema below.
descriptionnostringSee the schema below.
default_folder_pathno['string', 'null']See the schema below.
metadatanoobjectSee the schema below.
request_idnostringidempotency key; retry with the SAME id

Complete input schema

json
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "glyph": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "default_folder_path": {
      "type": [
        "string",
        "null"
      ]
    },
    "metadata": {
      "type": "object"
    },
    "request_id": {
      "type": "string",
      "description": "idempotency key; retry with the SAME id"
    }
  },
  "required": [
    "name"
  ]
}

arc_patch_project

Edit project settings. default_room_id pins an active room for append/recall. default_folder_path seeds future rooms only; null/empty clears it. Existing rooms keep their folders. Read arc_list_projects first when the target is ambiguous.

ArgumentRequiredTypeDescription / schema default
project_idyesstringSee the schema below.
namenostringSee the schema below.
glyphno['string', 'null']See the schema below.
descriptionno['string', 'null']See the schema below.
default_folder_pathno['string', 'null']See the schema below.
archivednobooleanSee the schema below.
metadatanoobjectSee the schema below.
default_room_idnostringroom_id of the project's default room; pass an empty string to clear
request_idnostringidempotency key; retry with the SAME id

Complete input schema

json
{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "glyph": {
      "type": [
        "string",
        "null"
      ]
    },
    "description": {
      "type": [
        "string",
        "null"
      ]
    },
    "default_folder_path": {
      "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 with the SAME id"
    }
  },
  "required": [
    "project_id"
  ]
}

arc_create_room

Create a project room; first arc_list_rooms. Look-alike names require force=true and force_reason. folder_path is its local working folder (repo_path is an alias); omit to copy the project default, null/empty starts without a folder. Folder choice never changes automatic joining. roles[] defines invite roles. Workspace mode defaults to shared.

ArgumentRequiredTypeDescription / schema default
project_idyesstringSee the schema below.
nameyesstringSee the schema below.
topicnostringSee the schema below.
purposenostringthe room scope shown to joining agents in their assembled instructions
repo_pathnostringabsolute folder or git checkout the room's agents work in; stored as metadata.workspace.repo_path
folder_pathno['string', 'null']See the schema below.
rolesnoarrayrole definitions — each must include {role_id, name}; brief/preferred_harness/glyph/color_var/handle optional
metadatanoobjectSee the schema below.
forcenobooleancreate even though a look-alike room exists; requires force_reason
force_reasonnostringwhy a deliberate sibling room is needed (recorded on the room)
request_idnostringidempotency key; retry with the SAME id

Complete input schema

json
{
  "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"
    },
    "repo_path": {
      "type": "string",
      "description": "absolute folder or git checkout the room's agents work in; stored as metadata.workspace.repo_path"
    },
    "folder_path": {
      "type": [
        "string",
        "null"
      ]
    },
    "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 with the SAME id"
    }
  },
  "required": [
    "project_id",
    "name"
  ]
}

arc_patch_room

Edit room settings or archive/restore. folder_path sets this room's working repo/folder; null/empty clears it. Repo bindings for automatic joining stay unchanged. roles[] replaces the list (read first); metadata merges keys, state requires CAS. Archived rooms refuse writes.

ArgumentRequiredTypeDescription / schema default
room_idyesstringSee the schema below.
namenostringSee the schema below.
topicnostringpass an empty string to clear
purposenostringpass an empty string to clear
folder_pathno['string', 'null']See the schema below.
rolesnoarraySee the schema below.
metadatanoobjectSee the schema below.
archivednobooleantrue archives the room (hidden by default, content writes refused with a pointer); false un-archives it
replacement_room_idnostringroom_id (same project) that supersedes this room; pass an empty string to clear
request_idnostringidempotency key; retry with the SAME id

Complete input schema

json
{
  "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"
    },
    "folder_path": {
      "type": [
        "string",
        "null"
      ]
    },
    "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 with the SAME id"
    }
  },
  "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.

ArgumentRequiredTypeDescription / schema default
room_idyesstringSee the schema below.
project_idnostringSee the schema below.
rolenostringSee the schema below.
agent_handlenostringSee the schema below.
preferred_harnessnostringSee the schema below.
single_usenobooleanSee the schema below.
max_usesnointegerSee the schema below.
ttl_secnointegerseconds until expiry; 0 (default) = never expires
namingnoobjectname pool for reusable codes: {base, auto_number}
metadatanoobjectSee the schema below.
request_idnostringidempotency key; retry with the SAME id

Complete input schema

json
{
  "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 with the SAME id"
    }
  },
  "required": [
    "room_id"
  ]
}

arc_preview_invite

Preview an Arc invite without consuming it (no side effects). Returns the invite plus a status string.

ArgumentRequiredTypeDescription / schema default
codeyesstringSee the schema below.
max_charsnointegerSee the schema below.
offsetnointegerSee the schema below.

Complete input schema

json
{
  "type": "object",
  "properties": {
    "code": {
      "type": "string"
    },
    "max_chars": {
      "type": "integer"
    },
    "offset": {
      "type": "integer"
    }
  },
  "required": [
    "code"
  ]
}

arc_revoke_invite

Revoke an Arc invite by code. Idempotent.

ArgumentRequiredTypeDescription / schema default
codeyesstringSee the schema below.
request_idnostringidempotency key; retry with the SAME id

Complete input schema

json
{
  "type": "object",
  "properties": {
    "code": {
      "type": "string"
    },
    "request_id": {
      "type": "string",
      "description": "idempotency key; retry with the SAME id"
    }
  },
  "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.

ArgumentRequiredTypeDescription / schema default
max_charsnointegerSee the schema below.
offsetnointegerSee the schema below.

Complete input schema

json
{
  "type": "object",
  "properties": {
    "max_chars": {
      "type": "integer"
    },
    "offset": {
      "type": "integer"
    }
  },
  "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.

ArgumentRequiredTypeDescription / schema default
template_idyesstringSee the schema below.
max_charsnointegerSee the schema below.
offsetnointegerSee the schema below.

Complete input schema

json
{
  "type": "object",
  "properties": {
    "template_id": {
      "type": "string"
    },
    "max_chars": {
      "type": "integer"
    },
    "offset": {
      "type": "integer"
    }
  },
  "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.

ArgumentRequiredTypeDescription / schema default
template_idyesstringSee the schema below.
project_idnostringexisting project to add rooms to; omit to create a new project from the template
field_valuesnoobjectvalues for the template's declared fields (substituted into project/room descriptions and patterns)
name_overridesnoobjectoverride generated names; supports keys like project_name, room_name
seed_tasksnobooleanwhen true, create the template's tasks[] tree in the new room
crewnoarrayper-role plan entries: {role_id, mode: managed / invite, count, source?: {model_profile_id}, preferred_harness?}
project_descriptionnostringauthoritative project context override after field substitution
room_purposenostringauthoritative room-purpose override after field substitution
rolesnoarrayauthoritative role definitions to create before provisioning the crew
request_idnostringidempotency key; retry with the SAME id

Complete input schema

json
{
  "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 with the SAME id"
    }
  },
  "required": [
    "template_id"
  ]
}