{
  "_generated": "GENERATED FILE — do not edit by hand. Regenerate with `just docs-manifest`. Source of truth is the code; see docs/adr/0060-capability-documentation-generated-from-source.md.",
  "mcp_tools": [
    {
      "class": "write",
      "name": "add_label_to_task",
      "parameters": [
        "task_id: str",
        "label_id: str"
      ],
      "required_scopes": [
        "tasks:write"
      ],
      "source": "api-mcp",
      "summary": "Attach an existing label to a task."
    },
    {
      "class": "write",
      "name": "add_memory",
      "parameters": [
        "content: str",
        "key: str | None",
        "scope: Literal['private', 'shared']",
        "tags: list[str] | None",
        "source_task_id: str | None"
      ],
      "required_scopes": [
        "memory:write"
      ],
      "source": "api-mcp",
      "summary": "Write a memory / learning into your store (memory-over-MCP, ADR-0051)."
    },
    {
      "class": "write",
      "name": "apply_artifact_yaml",
      "parameters": [
        "artifact_yaml: str",
        "artifact_id: str | None",
        "exec_principal: str | None"
      ],
      "required_scopes": [
        "data:write"
      ],
      "source": "api-mcp",
      "summary": "Create a NEW artifact from a YAML spec, or UPDATE an existing one in place"
    },
    {
      "class": "write",
      "name": "apply_dashboard_yaml",
      "parameters": [
        "dashboard_yaml: str",
        "dashboard_id: str | None"
      ],
      "required_scopes": [
        "data:write"
      ],
      "source": "api-mcp",
      "summary": "Create a NEW dashboard from a YAML spec, or UPDATE an existing one in place."
    },
    {
      "class": "write",
      "name": "archive_task",
      "parameters": [
        "task_id: str",
        "recursive: bool"
      ],
      "required_scopes": [
        "tasks:write"
      ],
      "source": "api-mcp",
      "summary": "Archive (soft-delete) a task. Recoverable. With recursive=True, archives descendants too."
    },
    {
      "class": "write",
      "name": "create_approval",
      "parameters": [
        "work_item_id: str",
        "title: str",
        "assignee_user_ids: list[str]",
        "description: str | None",
        "due_at: str | None",
        "priority: Literal['low', 'medium', 'high'] | None",
        "why_this_needs_you: str | None",
        "step_plan: list[dict] | None",
        "vendor_cards: list[dict] | None",
        "requirement_type: Literal['require_one', 'require_all', 'require_quorum']"
      ],
      "required_scopes": [
        "approvals:write"
      ],
      "source": "api-mcp",
      "summary": "Raise an approval against a task."
    },
    {
      "class": "write",
      "name": "create_artifact",
      "parameters": [
        "title: str",
        "markdown: str | None",
        "openui: str | None",
        "share: Literal['internal']"
      ],
      "required_scopes": [
        "share:write"
      ],
      "source": "api-mcp",
      "summary": "Persist a hosted, shareable **report artifact** and get a permalink (the"
    },
    {
      "class": "write",
      "name": "create_dashboard",
      "parameters": [
        "title: str",
        "cards: list[dict]",
        "refresh_cron: str | None"
      ],
      "required_scopes": [
        "data:write"
      ],
      "source": "api-mcp",
      "summary": "Build a config-driven dashboard from a spec (the \"Claude, build me a cash/AR"
    },
    {
      "class": "write",
      "name": "create_folder",
      "parameters": [
        "parent_id: str",
        "name: str",
        "description: str | None"
      ],
      "required_scopes": [
        "tasks:write"
      ],
      "source": "api-mcp",
      "summary": "Create a folder under a workspace, folder, or project. The new"
    },
    {
      "class": "write",
      "name": "create_project",
      "parameters": [
        "parent_id: str",
        "name: str",
        "description: str | None",
        "prefix: str | None"
      ],
      "required_scopes": [
        "tasks:write"
      ],
      "source": "api-mcp",
      "summary": "Create a project under a workspace or folder. Projects own a"
    },
    {
      "class": "write",
      "name": "create_task",
      "parameters": [
        "parent_id: Annotated[str, _Field(description='UUID of the parent folder, project, or task. Pass a task UUID to make a subtask.')]",
        "name: Annotated[str, _Field(description='Task title (max 512 chars).')]",
        "status_id: Annotated[str, _Field(description='UUID of the status column. Use list_statuses(parent_id) to discover.')]",
        "description: Annotated[str | None, _Field(description='Body text / context for the task.')]",
        "priority: Annotated[Literal['low', 'medium', 'high', 'urgent'] | None, _Field(description='Priority level. One of \"low\", \"medium\", \"high\", \"urgent\". Default is medium.')]",
        "start_date: Annotated[str | None, _Field(description='ISO-8601 start date, e.g. \"2026-07-01\". Optional.')]",
        "due_date: Annotated[str | None, _Field(description='ISO-8601 due date, e.g. \"2026-07-31\". Optional.')]",
        "owner: Annotated[str | None, _Field(description='botbossUUID of the task owner. Use list_users() to discover UUIDs.')]",
        "assignee: Annotated[str | None, _Field(description='botbossUUID of the primary assignee (human or agent). Use list_users() or list_workspace_principals() to discover.')]",
        "reviewer: Annotated[str | None, _Field(description='botbossUUID of the human reviewer. Workflow nodes REQUIRE one; standalone tasks may carry one. Use list_users() to discover.')]",
        "labels: Annotated[list[str], _Field(description='Label NAMES to attach at creation, e.g. [\"bug\", \"high-value\"]. Unknown names are skipped with a warning. Use list_labels() to see available labels.')]",
        "color: Annotated[str | None, _Field(description='Hex colour chip for the card, e.g. \"#f85149\". Optional.')]"
      ],
      "required_scopes": [
        "tasks:write"
      ],
      "source": "api-mcp",
      "summary": "Create a new task (or subtask) under a folder, project, or parent task."
    },
    {
      "class": "write",
      "name": "delete_skill",
      "parameters": [
        "skill_id: str"
      ],
      "required_scopes": [
        "skills:write"
      ],
      "source": "api-mcp",
      "summary": "Permanently delete a skill you authored (ADR-0040)."
    },
    {
      "class": "read",
      "name": "describe_capabilities",
      "parameters": [],
      "required_scopes": [
        "skills:read"
      ],
      "source": "api-mcp",
      "summary": "List the platform's agent tools and what each requires (READ-ONLY, ADR-0060)."
    },
    {
      "class": "read",
      "name": "export_workspace",
      "parameters": [],
      "required_scopes": [
        "tasks:read"
      ],
      "source": "api-mcp",
      "summary": "Export the tenant's work-item tree as OKF Markdown (PR #316), returned as a"
    },
    {
      "class": "read",
      "name": "get_artifact_yaml",
      "parameters": [
        "artifact_id: str"
      ],
      "required_scopes": [
        "data:read"
      ],
      "source": "api-mcp",
      "summary": "Read an artifact as a clean, editable YAML spec (the agent-friendly view of"
    },
    {
      "class": "read",
      "name": "get_dashboard_yaml",
      "parameters": [
        "dashboard_id: str"
      ],
      "required_scopes": [
        "data:read"
      ],
      "source": "api-mcp",
      "summary": "Read a dashboard as a clean, editable YAML spec (the agent-friendly view of"
    },
    {
      "class": "read",
      "name": "get_history",
      "parameters": [
        "entity_type: str",
        "entity_id: str"
      ],
      "required_scopes": [
        "audit:read"
      ],
      "source": "api-mcp",
      "summary": "The before→after audit diffs (B-2 history, PR #319) for one entity, oldest→"
    },
    {
      "class": "other",
      "name": "get_node",
      "parameters": [
        "node_id: str"
      ],
      "required_scopes": [],
      "source": "api-mcp",
      "summary": "Read a single node's full context: its fields (name, kind, status, config"
    },
    {
      "class": "other",
      "name": "get_node_io",
      "parameters": [
        "node_id: str"
      ],
      "required_scopes": [],
      "source": "api-mcp",
      "summary": "Read a node's resolved inputs (the upstream node outputs it consumes, pin-"
    },
    {
      "class": "read",
      "name": "get_skill",
      "parameters": [
        "skill_id: str"
      ],
      "required_scopes": [
        "skills:read"
      ],
      "source": "api-mcp",
      "summary": "Read one skill's current body + metadata (READ-ONLY)."
    },
    {
      "class": "read",
      "name": "get_task",
      "parameters": [
        "task_id: str"
      ],
      "required_scopes": [
        "tasks:read"
      ],
      "source": "api-mcp",
      "summary": "Fetch a single task by id."
    },
    {
      "class": "other",
      "name": "get_workflow",
      "parameters": [
        "workflow_id: str"
      ],
      "required_scopes": [],
      "source": "api-mcp",
      "summary": "Read a workflow's graph: its nodes (id, name, kind, status), the dependency"
    },
    {
      "class": "other",
      "name": "get_workflow_run",
      "parameters": [
        "workflow_id: str"
      ],
      "required_scopes": [],
      "source": "api-mcp",
      "summary": "Read a workflow's latest run state across its nodes: which nodes are done,"
    },
    {
      "class": "write",
      "name": "instantiate_template",
      "parameters": [
        "template_id: str",
        "parent_id: str"
      ],
      "required_scopes": [
        "tasks:write"
      ],
      "source": "api-mcp",
      "summary": "Copy a template into a parent folder/project, creating real work items."
    },
    {
      "class": "read",
      "name": "list_artifacts",
      "parameters": [],
      "required_scopes": [
        "data:read"
      ],
      "source": "api-mcp",
      "summary": "List the artifacts YOU own (ADR-0058) — reusable, embeddable data outputs."
    },
    {
      "class": "read",
      "name": "list_available_people",
      "parameters": [
        "query: str | None"
      ],
      "required_scopes": [
        "users:read"
      ],
      "source": "api-mcp",
      "summary": "People in your tenant's connected Slack workspace who are NOT yet BotBoss"
    },
    {
      "class": "read",
      "name": "list_children",
      "parameters": [
        "parent_id: str | None",
        "type: str | None",
        "status: str | None"
      ],
      "required_scopes": [
        "tasks:read"
      ],
      "source": "api-mcp",
      "summary": "List children of a folder/project; optional type ('folder', 'project', 'task') and status filters."
    },
    {
      "class": "read",
      "name": "list_dashboards",
      "parameters": [],
      "required_scopes": [
        "data:read"
      ],
      "source": "api-mcp",
      "summary": "List the dashboards YOU can read (the ones you own + any shared with you)."
    },
    {
      "class": "read",
      "name": "list_files",
      "parameters": [],
      "required_scopes": [
        "files:read"
      ],
      "source": "api-mcp",
      "summary": "List the tenant's files you may read (respects file + folder grants)."
    },
    {
      "class": "read",
      "name": "list_labels",
      "parameters": [],
      "required_scopes": [
        "tasks:read"
      ],
      "source": "api-mcp",
      "summary": "List all labels available in the workspace."
    },
    {
      "class": "read",
      "name": "list_my_task_runs",
      "parameters": [
        "limit: int"
      ],
      "required_scopes": [
        "tasks:read"
      ],
      "source": "api-mcp",
      "summary": "Recent task runs (dispatched scheduled-pickup jobs) for this agent."
    },
    {
      "class": "read",
      "name": "list_organizations",
      "parameters": [],
      "required_scopes": [
        "users:read"
      ],
      "source": "api-mcp",
      "summary": "List the BotBoss organizations (workspaces, in the ACCOUNT sense) you belong"
    },
    {
      "class": "read",
      "name": "list_skills",
      "parameters": [
        "scope: Literal['agent', 'workspace', 'user'] | None"
      ],
      "required_scopes": [
        "skills:read"
      ],
      "source": "api-mcp",
      "summary": "List the skills you can reach in this workspace (READ-ONLY)."
    },
    {
      "class": "read",
      "name": "list_statuses",
      "parameters": [
        "parent_id: str"
      ],
      "required_scopes": [
        "tasks:read"
      ],
      "source": "api-mcp",
      "summary": "List custom statuses (Kanban columns) for a folder/project."
    },
    {
      "class": "read",
      "name": "list_tables",
      "parameters": [],
      "required_scopes": [
        "data:read"
      ],
      "source": "api-mcp",
      "summary": "List the tenant's data tables you may read."
    },
    {
      "class": "read",
      "name": "list_tasks",
      "parameters": [
        "parent_id: str | None",
        "status: str | None"
      ],
      "required_scopes": [
        "tasks:read"
      ],
      "source": "api-mcp",
      "summary": "List tasks, optionally filtered by core status."
    },
    {
      "class": "read",
      "name": "list_templates",
      "parameters": [],
      "required_scopes": [
        "tasks:read"
      ],
      "source": "api-mcp",
      "summary": "List all task / project templates available for instantiation."
    },
    {
      "class": "read",
      "name": "list_users",
      "parameters": [
        "account_type: str | None"
      ],
      "required_scopes": [
        "users:read"
      ],
      "source": "api-mcp",
      "summary": "List people the agent can assign tasks to."
    },
    {
      "class": "read",
      "name": "list_workspaces",
      "parameters": [],
      "required_scopes": [
        "tasks:read"
      ],
      "source": "api-mcp",
      "summary": "List the top-level entry points to the tenant's work — the discovery root."
    },
    {
      "class": "read",
      "name": "pick_up_next_task",
      "parameters": [],
      "required_scopes": [
        "tasks:read"
      ],
      "source": "api-mcp",
      "summary": "Return your top-priority unstarted assigned task (or null if none)."
    },
    {
      "class": "write",
      "name": "promote_skill_version",
      "parameters": [
        "skill_id: str",
        "version_id: str"
      ],
      "required_scopes": [
        "skills:write"
      ],
      "source": "api-mcp",
      "summary": "Restore an earlier version of a skill as its live head (ADR-0040)."
    },
    {
      "class": "write",
      "name": "propose_skill",
      "parameters": [
        "name: str",
        "body: str",
        "when_to_use: str",
        "slug: str | None"
      ],
      "required_scopes": [
        "skills:write"
      ],
      "source": "api-mcp",
      "summary": "Save what you just did as a reusable skill (ADR-0040)."
    },
    {
      "class": "read",
      "name": "query_warehouse",
      "parameters": [
        "sql: str",
        "max_rows: int | None"
      ],
      "required_scopes": [
        "data:read"
      ],
      "source": "api-mcp",
      "summary": "Run ONE read-only SELECT over your data tables + the tenant's QBO/Ramp"
    },
    {
      "class": "read",
      "name": "read_file",
      "parameters": [
        "file_id: str",
        "max_bytes: int | None"
      ],
      "required_scopes": [
        "files:read"
      ],
      "source": "api-mcp",
      "summary": "Read one file's metadata + a bounded text preview (use ``list_files()`` to"
    },
    {
      "class": "read",
      "name": "read_table",
      "parameters": [
        "table_id: str",
        "limit: int"
      ],
      "required_scopes": [
        "data:read"
      ],
      "source": "api-mcp",
      "summary": "Read rows of one data table by id (use ``list_tables()`` to discover ids)."
    },
    {
      "class": "write",
      "name": "remove_label_from_task",
      "parameters": [
        "task_id: str",
        "label_id: str"
      ],
      "required_scopes": [
        "tasks:write"
      ],
      "source": "api-mcp",
      "summary": "Detach a label from a task."
    },
    {
      "class": "write",
      "name": "run_workflow",
      "parameters": [
        "workflow_id: str",
        "occurrence: str | None"
      ],
      "required_scopes": [
        "tasks:write"
      ],
      "source": "api-mcp",
      "summary": "Trigger a whole workflow run end-to-end (founder feedback #12)."
    },
    {
      "class": "write",
      "name": "save_as_template",
      "parameters": [
        "item_id: str",
        "name: str | None",
        "parent_id: str | None"
      ],
      "required_scopes": [
        "tasks:write"
      ],
      "source": "api-mcp",
      "summary": "Save an existing work item (and its descendants) as a reusable template."
    },
    {
      "class": "read",
      "name": "search_memory",
      "parameters": [
        "q: str | None",
        "scope: Literal['private', 'shared'] | None",
        "tag: str | None",
        "agent: str | None",
        "limit: int"
      ],
      "required_scopes": [
        "memory:read"
      ],
      "source": "api-mcp",
      "summary": "Search your accessible memory (memory-over-MCP, ADR-0051)."
    },
    {
      "class": "read",
      "name": "set_active_workspace",
      "parameters": [
        "workspace_id: str"
      ],
      "required_scopes": [
        "tasks:read"
      ],
      "source": "api-mcp",
      "summary": "Pick a workspace ROOT to focus on, and get it echoed back as your active"
    },
    {
      "class": "write",
      "name": "share_skill",
      "parameters": [
        "skill_id: str",
        "principal_type: Literal['user', 'agent']",
        "principal_id: str",
        "access: Literal['read', 'write']"
      ],
      "required_scopes": [
        "skills:write"
      ],
      "source": "api-mcp",
      "summary": "Deploy one of your skills to a teammate or another agent (GRANT only)."
    },
    {
      "class": "write",
      "name": "update_skill",
      "parameters": [
        "skill_id: str",
        "body: str",
        "when_to_use: str"
      ],
      "required_scopes": [
        "skills:write"
      ],
      "source": "api-mcp",
      "summary": "Revise a skill you can edit and publish the change (ADR-0040)."
    },
    {
      "class": "write",
      "name": "update_task",
      "parameters": [
        "task_id: Annotated[str, _Field(description='UUID of the task to update.')]",
        "name: Annotated[str | None, _Field(description='New task title (max 512 chars).')]",
        "description: Annotated[str | None, _Field(description='New body / context text.')]",
        "priority: Annotated[Literal['low', 'medium', 'high', 'urgent'] | None, _Field(description='One of \"low\", \"medium\", \"high\", \"urgent\".')]",
        "start_date: Annotated[str | None, _Field(description='ISO-8601 start date, e.g. \"2026-07-01\". Pass \"\" to clear.')]",
        "due_date: Annotated[str | None, _Field(description='ISO-8601 due date, e.g. \"2026-07-31\". Pass \"\" to clear.')]",
        "owner: Annotated[str | None, _Field(description=\"New owner UUID, or '' to clear. Use list_users() to discover.\")]",
        "assignee: Annotated[str | None, _Field(description=\"New assignee UUID (replaces current list). Set to '' to clear all assignees. Use list_users() to discover.\")]",
        "reviewer: Annotated[str | None, _Field(description=\"New reviewer UUID (replaces current reviewer). Set to '' to clear the reviewer. Use list_users() to discover.\")]",
        "labels: Annotated[list[str] | None, _Field(description='REPLACE the task\\'s labels with this list of label NAMES. Pass [] to clear all labels. Omit to leave labels unchanged. e.g. [\"bug\", \"high-value\"].')]",
        "color: Annotated[str | None, _Field(description='New hex colour chip, e.g. \"#3fb950\". Optional.')]"
      ],
      "required_scopes": [
        "tasks:write"
      ],
      "source": "api-mcp",
      "summary": "Update one or more fields on an existing task."
    },
    {
      "class": "write",
      "name": "update_task_status",
      "parameters": [
        "task_id: str",
        "status_id: str",
        "summary: str | None"
      ],
      "required_scopes": [
        "tasks:write"
      ],
      "source": "api-mcp",
      "summary": "Move a task to a different column. Pass ``summary`` when marking a"
    },
    {
      "class": "write",
      "name": "upload_file",
      "parameters": [
        "filename: str",
        "content_base64: str",
        "kind: Literal['auto', 'table', 'file']",
        "mimetype: str | None"
      ],
      "required_scopes": [
        "data:write",
        "files:write"
      ],
      "source": "api-mcp",
      "summary": "Push a file INTO the tenant's BotBoss workspace (the \"Claude, put this in"
    }
  ]
}
