Ferramentas MCP
O cc_server hospeda um único registro de ferramentas MCP (JSON-RPC 2.0), servido na porta principal do servidor (padrão 9030) em POST /mcp e GET /sse, com versão de protocolo 2024-11-05. Todos os clientes chegam ao mesmo registro: o desktop, a build web, clientes MCP externos e o runtime de agentes integrado. Servidores MCP externos podem ser conectados ao mesmo registro como uma camada dinâmica.
Tamanho do registro
Seção intitulada “Tamanho do registro”| Medida | Contagem |
|---|---|
Ferramentas registradas pelo cc_server |
110 |
De packages/cc_mcp |
108 |
De packages/cc_mcp_client (descoberta de ferramentas) |
2 |
Registradas no registro base (server_mcp_registry.dart) |
63 |
Registradas após a inicialização, conforme seus serviços sobem (cc_server_runtime.dart) |
47 |
| Das 63 do registro base, condicionais a um repositório de grafo de código | 5 |
As cinco ferramentas de grafo de código só são registradas quando o host passa um repositório de grafo de código para buildServerMcpRegistry. O cc_server sempre passa um, então todas as 110 estão ativas no binário distribuído.
O registro completo é anunciado em tools/list, sem restrição de descoberta. As edições de tickets são ferramentas tipadas.
Parâmetros comuns
Seção intitulada “Parâmetros comuns”workspace_id
Seção intitulada “workspace_id”Obrigatório em toda ferramenta que toca dados no escopo do espaço de trabalho. Um workspace_id ausente ou inválido retorna um erro explícito, e um valor que não corresponde ao espaço de trabalho da entidade alvo é rejeitado em vez de silenciosamente ignorado. Omita-o nas ferramentas genuinamente globais: list_workspaces e as seis ferramentas de notícias (list_feeds, list_articles, get_article, set_article_read, set_article_saved, refresh_feeds), que usam a lista de feeds por usuário do dono do servidor. As ferramentas de descoberta (search_tool_bm25, list_my_tools) o recebem opcionalmente para poderem classificar a chamabilidade pelo modo da conversa. Quando o servidor despacha um agente, o espaço de trabalho é forçado do lado do servidor, então o agente não consegue alcançar outro espaço de trabalho passando um id estranho.
Descoberta de ferramentas
Seção intitulada “Descoberta de ferramentas”Ambas vêm de cc_mcp_client, não de cc_mcp, e ambas consultam o guarda de modo para relatar o que é chamável no modo de conversa atual.
| Ferramenta | Descrição |
|---|---|
search_tool_bm25 |
Pesquisa o catálogo de ferramentas por palavra-chave; retorna as ferramentas correspondentes, seus esquemas de argumentos e se cada uma é chamável agora |
list_my_tools |
Lista as ferramentas chamáveis agora nesta conversa, filtradas pelo modo dela |
Uma terceira ferramenta de descoberta, search_tools, existe apenas dentro do harness integrado e não faz parte deste registro MCP. Ela classifica a própria superfície de ferramentas da execução e, ao contrário de search_tool_bm25, carrega os esquemas do que encontra para que o agente possa chamar uma correspondência no turno seguinte. Agentes no harness devem preferi-la; clientes MCP têm search_tool_bm25.
Ferramentas de agente
Seção intitulada “Ferramentas de agente”| Ferramenta | Descrição |
|---|---|
list_agents |
Lista os agentes registrados em um espaço de trabalho |
Mensagens entre pares e delegação de agentes
Seção intitulada “Mensagens entre pares e delegação de agentes”Os agentes conversam entre si por espaços (duráveis, visíveis na lista de agentes). ask_agent é requisição/resposta com timeout obrigatório; delegate_task é protegida do lado do servidor por limite de profundidade, detecção de ciclos, envelope de orçamento e teto de autonomia.
| Ferramenta | Descrição |
|---|---|
send_to_agent |
Envia uma mensagem de mão única a outro agente, endereçado por to_agent_id ou por to_agent_name exato |
ask_agent |
Pergunta algo a outro agente e espera a resposta, ou expira |
delegate_task |
Delega uma tarefa a outro agente como um ticket filho acompanhado |
consult_agent |
Adiciona ao espaço o especialista que melhor corresponde por skills e o despacha com um briefing focado |
todo_read |
Lê a lista de tarefas persistida desta conversa |
Ferramentas de skill
Seção intitulada “Ferramentas de skill”Toda instalação e atualização passa por um portão de varredura fail-closed antes que qualquer conteúdo de skill chegue ao disco ou a um prompt de agente.
| Ferramenta | Descrição |
|---|---|
list_skills |
Lista os slugs de skill disponíveis em um espaço de trabalho |
create_skill |
Cria uma nova skill a partir de conteúdo markdown |
install_skill |
Instala o diretório inteiro de uma skill a partir de um repositório do GitHub em um ref fixado |
update_skill |
Atualiza uma skill do GitHub instalada para um novo ref, revarrendo e refixando |
list_skill_updates |
Lista as skills com uma versão mais nova disponível |
verify_skills |
Verifica as skills travadas contra os hashes de conteúdo no disco |
pin_skill |
Gera o hash de uma skill existente no disco para skills-lock.json |
Ferramentas de plano, playbook e artefato
Seção intitulada “Ferramentas de plano, playbook e artefato”| Ferramenta | Descrição |
|---|---|
submit_plan |
O contrato de saída do modo plano: emite um PlanDocument tipado que abre no Plan Studio |
create_playbook |
Salva um plano como um modelo nomeado e versionado, com placeholders {{param}} tipados |
run_playbook |
Instancia um playbook com valores de parâmetros, produzindo um plano que o operador aprova |
publish_artifact |
Publica uma lista ordenada de blocos tipados (markdown, tabela, gráfico, mermaid, código, JSON) renderizados nativamente no cliente |
revise_artifact |
Substitui o conteúdo de um artefato publicado |
list_artifacts |
Lista os artefatos do espaço de trabalho |
get_artifact |
Lê um artefato |
complete_goal |
Declara alcançada a meta durável ativa da conversa (iniciada com /goal ou /loop) |
Ferramentas de espaço de trabalho
Seção intitulada “Ferramentas de espaço de trabalho”| Ferramenta | Descrição |
|---|---|
list_workspaces |
Lista todos os espaços de trabalho com seus ids e nomes (global; sem workspace_id) |
Ferramentas de repos
Seção intitulada “Ferramentas de repos”| Ferramenta | Descrição |
|---|---|
list_repos |
Lista os repos registrados em um espaço de trabalho. Agentes que chamam recebem os caminhos de worktree copy-on-write isolados da conversa deles, nunca os checkouts originais |
Ferramentas de mensagens
Seção intitulada “Ferramentas de mensagens”| Ferramenta | Descrição |
|---|---|
list_spaces |
Lista os espaços de mensagens de um espaço de trabalho |
get_messages |
Busca mensagens de um espaço |
send_message |
Envia uma mensagem a um espaço como um agente remetente nomeado |
get_space_notes |
Lê o documento de passagem compartilhado de um espaço |
update_space_notes |
Substitui o documento de passagem compartilhado de um espaço |
todo_write |
Substitui a lista de tarefas desta conversa em uma chamada (passe a lista completa) |
Ferramentas de revisão
Seção intitulada “Ferramentas de revisão”| Ferramenta | Descrição |
|---|---|
start_ai_review |
Inicia a revisão com IA de uma PR: calcula as áreas de revisão, distribui revisores especialistas no espaço da PR, escreve o passo a passo e finaliza |
add_review_node |
Adiciona um achado de revisão estruturado (arquivo, linha, prioridade P0–P3) a um espaço de revisão |
confirm_review_node |
Confirma o achado de um par; o autor não pode confirmar o próprio achado |
resolve_review_node |
Marca um achado como corrigido depois de realmente fazer a mudança; publica um rastro no espaço de revisão |
dismiss_review_node |
Descarta um achado que não se aplica; registra um fato de supressão para que os revisores parem de sinalizá-lo de novo |
request_peer_review |
Pede a outro agente revisor uma segunda olhada em um achado |
dispatch_reviewers |
Despacha agentes revisores correspondentes para um espaço de revisão, de forma concorrente |
submit_reviewer_verdict |
Publica um veredito ship/hold/block por revisor, com confiança e uma explicação |
finalize_review |
Calcula o consenso por nó e o veredito por PR e encerra a revisão |
set_cohort_summary |
Define o resumo em linguagem simples de uma coorte de revisão |
add_review_diagram |
Anexa a uma coorte um diagrama estruturado e verificado pelo grafo (sequence, entityRelation, stateMachine) |
publish_review_to_github |
Publica a revisão finalizada no GitHub como comentários inline mais um corpo de resumo |
Ferramentas de memória
Seção intitulada “Ferramentas de memória”| Ferramenta | Descrição |
|---|---|
search_memory |
Pesquisa fatos e políticas (por palavra-chave, semântica ou híbrida — híbrida é o padrão) |
propose_fact |
Armazena um fato curto em markdown em um domínio |
supersede_fact |
Marca um fato como superado por outro |
propose_policy |
Armazena uma regra normativa em um domínio (exige permissão de escrita nele) |
supersede_policy |
Aposenta uma política — marca-a como inativa, mantendo-a para auditoria |
list_policies |
Lista as políticas ativas, opcionalmente filtradas por domínio |
list_memory_domains |
Lista os domínios de memória do espaço de trabalho com contagens de fatos e políticas |
record_observation |
Registra uma observação bruta na memória de trabalho do agente |
get_my_notes |
Lê o bloco de anotações da memória de trabalho do agente que chama |
update_my_notes |
Atualiza o bloco de anotações da memória de trabalho do agente que chama |
remember |
Adiciona uma nota à memória de trabalho quente do agente nesta sessão (limitada por TTL e por contagem) |
consolidate_memory |
Executa uma passagem de consolidação (“sono”): descarta itens quentes expirados e transforma os duráveis em fatos de longo prazo |
harmonize_memory |
Executa a harmonização de crenças entre agentes (SHMR) e sinaliza contradições |
list_memory_conflicts |
Lista as contradições detectadas e como cada uma foi resolvida |
Ferramentas de governança
Seção intitulada “Ferramentas de governança”| Ferramenta | Descrição |
|---|---|
create_goal |
Cria uma meta organizacional (nível de empresa, equipe, agente ou tarefa) |
list_goals |
Lista metas com nível, status e progresso agregado |
update_goal_progress |
Define o progresso de uma meta |
create_approval |
Abre uma aprovação do conselho para uma ação governada (saída de plano, merge, lançamento, contratação, personalizada) |
list_approvals |
Lista aprovações, opcionalmente filtradas por status |
decide_approval |
Registra uma decisão: aprovar, rejeitar, pedir revisão ou reenviar |
comment_approval |
Comenta em uma aprovação do conselho |
exit_plan_mode |
Abre (e, depois de aprovada, consome) uma aprovação plan_exit, tirando a conversa do modo plano |
agent_heartbeat |
Informa a vivacidade (alive, idle, stuck); ficar em silêncio muda a saúde de runtime para recently-lost e depois offline |
list_runtime_health |
Lista a saúde de runtime de cada agente |
list_agent_presence |
Lista a presença de cada agente (saúde, ciclo de vida, contagens em execução e na fila, capacidade) |
get_org_chart |
Lê a árvore de subordinação, com o CEO na raiz, aninhada por reports_to |
create_work_product |
Cria um entregável durável vinculado a um ticket |
save_work_product_revision |
Salva uma nova revisão; passe base_revision_id para ser rejeitado em caso de edição concorrente |
list_work_products |
Lista entregáveis, opcionalmente filtrados para um único ticket |
get_work_product |
Lê um entregável com seu histórico de revisões |
create_runtime_profile |
Define um perfil de runtime reutilizável (família de protocolo, comando de CLI, argumentos de inicialização fixos) |
list_runtime_profiles |
Lista os perfis de runtime do espaço de trabalho |
Ferramentas de grafo de código
Seção intitulada “Ferramentas de grafo de código”Registradas apenas quando o host fornece um repositório de grafo de código. O índice cobre o conjunto de gramáticas incluído no produto (Dart, JS/TS, PHP, Python, Rust, Zig, C/C++, Go, Java, Ruby, C#, Swift, Kotlin, R, Assembly, MATLAB, Ada); símbolos em qualquer outra linguagem não estão presentes.
| Ferramenta | Descrição |
|---|---|
search_code |
Pesquisa símbolos indexados por nome, assinatura e comentário de documentação (BM25 híbrido + semântico) |
code_symbol |
Procura símbolos pelo nome exato; retorna file:line e a assinatura |
code_callers |
Lista os símbolos que chamam ou dependem de um símbolo (arestas de entrada) |
code_callees |
Lista os símbolos que um símbolo chama ou dos quais depende (arestas de saída) |
code_impact |
Calcula o raio de impacto transitivo de um símbolo, até uma profundidade |
Ferramentas de tickets
Seção intitulada “Ferramentas de tickets”| Ferramenta | Descrição |
|---|---|
create_ticket |
Cria um ticket no provedor configurado |
get_ticket |
Busca um ticket por id |
list_tickets |
Lista tickets, opcionalmente filtrados por status ou responsável |
update_ticket |
Atualiza status, título, descrição, prioridade ou etiquetas (o status aceita aliases como in_progress / completed) |
assign_ticket |
Atribui um ticket a um agente e/ou equipe |
reassign_ticket |
Reatribui um ticket a um agente diferente |
add_ticket_collaborator |
Convida um agente a colaborar em um ticket (adicionado ao espaço dele) |
comment_on_ticket |
Comenta em um ticket |
close_ticket |
Fecha um ticket (marca-o como concluído) com saída opcional |
fail_ticket |
Marca um ticket como falho com uma mensagem de erro |
delegate_ticket |
Delega um ticket a um agente, criando um ticket acompanhado |
ticket_pr_link |
Vincula ou desvincula um ticket e uma pull request pelo id de nó da PR (action: link | unlink) |
ticket_relation |
Adiciona ou remove uma relação entre dois tickets — blocked_by, blocking, related_to, duplicate_of, duplicated_by, sub_issue_of, parent_of (action: add | remove) |
list_ticket_relations |
Lista o pai, os sub-issues e os vínculos de dependência de um ticket |
Ferramentas de equipe e pipeline
Seção intitulada “Ferramentas de equipe e pipeline”| Ferramenta | Descrição |
|---|---|
record_team_activity |
Registra uma entrada de atividade de um líder de equipe referente a um ticket |
preview_trigger |
Simula quais execuções de pipeline um evento hipotético iniciaria, sem efetivar nada |
submit_output |
Envia a carga de saída estruturada da execução de pipeline atual de quem chama; validada contra o esquema de saída declarado pela execução |
Ferramentas de orquestração
Seção intitulada “Ferramentas de orquestração”| Ferramenta | Descrição |
|---|---|
propose_orchestration |
Emite um plano estruturado de orquestração multiagente para uma aprovação antecipada; valida e retorna quaisquer violações |
Ferramentas de notícias
Seção intitulada “Ferramentas de notícias”| Ferramenta | Descrição |
|---|---|
list_feeds |
Lista os feeds RSS/Atom registrados |
list_articles |
Lista artigos, opcionalmente filtrados por feed, não lidos ou salvos |
get_article |
Busca um artigo |
set_article_read |
Marca um artigo como lido ou não lido |
set_article_saved |
Salva ou remove um artigo dos salvos |
refresh_feeds |
Busca novamente todos os feeds habilitados agora |
Ferramentas de recinto (rig)
Seção intitulada “Ferramentas de recinto (rig)”Controlam máquinas descartáveis — um navegador ou desktop Linux em recinto, um emulador
Android ou um iOS Simulator — de dentro de uma execução. Registradas após a
inicialização, incondicionalmente: se uma máquina consegue mesmo iniciar é uma pergunta
de sondagem que as ferramentas respondem a cada chamada. Chamadas repetidas em uma mesma
conversa reutilizam uma máquina; as capturas de tela voltam como conteúdo de imagem, com
um orçamento de uma imagem por resultado, e o conteúdo de página/UI extraído é cercado
como dado não confiável. As quatro ferramentas de uso, mais a rig_close, declaram a
classe de ação enclosureControl
(as ferramentas de uso também declaram networkEgress e processSpawn; mobile_use e
ios_use também declaram packageInstall), então modos somente leitura as negam. A rig_list
não declara nenhuma — ela apenas lê o estado do espaço de trabalho. O vocabulário completo de verbos por superfície está na
referência de rigs.
| Ferramenta | Descrição |
|---|---|
computer_use |
Controla um desktop Linux em uma VM de recinto: mover, clicar, arrastar, rolar, digitar, redimensionar, área de transferência, captura de tela |
browser_use |
Controla um Chromium, Firefox ou WebKit headless (engine): navegar, clicar, preencher, extrair (a11y/DOM/console), área de transferência, captura de tela |
mobile_use |
Controla o Android via ADB: inspecionar/entrada, capturas de tela, instalar/iniciar/parar/redefinir/desinstalar apps, deep links e comandos de dispositivo em formato argv |
ios_use |
Controla o iOS Simulator por WebDriverAgent/CoreSimulator: inspecionar/entrada, capturas de tela, instalar/iniciar/parar/desinstalar apps, deep links e processos de simulador em formato argv |
rig_list |
Lista os rigs de um espaço de trabalho com superfície, status, tamanho da tela e controlador |
rig_close |
Destrói um rig e descarta o estado da máquina que ele possui |
O que não é exposto por MCP
Seção intitulada “O que não é exposto por MCP”Calendário e reuniões não têm ferramentas MCP. Os agentes não conseguem ler seu calendário, suas reuniões, transcrições, itens de ação ou decisões. O resumo que produz itens de ação e decisões roda no pipeline meeting_summary integrado, e não como uma ferramenta que um agente possa chamar.
Restrição de ferramentas por modo
Seção intitulada “Restrição de ferramentas por modo”A restrição é aplicada duas vezes a partir de uma única tabela (ModeToolPolicy): uma no despachante MCP do adaptador Claude Code e outra no registro do harness integrado. Uma chamada bloqueada retorna o motivo.
| Modo | Superfície de ferramentas |
|---|---|
chat |
Todas as ferramentas registradas; nenhuma lista de permissões |
plan |
Uma lista de permissões curada. Sem gravações na worktree e sem os verbos de ticket create / assign / delegate, mas memória, artefatos, todos, submit_plan, exit_plan_mode e os verbos de conclusão de ticket do ticket despachado são permitidos |
review |
Uma lista de permissões curada: participação em revisão, comunicação, buscadores de contexto somente leitura e o conjunto completo de verbos de ticket, incluindo create_ticket e assign_ticket |
orchestrate |
Uma lista de permissões curada: ferramentas de pesquisa e leitura, mais propose_orchestration, create_playbook e run_playbook. Contratação, decomposição e conclusão de tickets acontecem de forma determinística após a aprovação, nunca no meio da execução |
Permitidas em todos os modos, independentemente da lista de permissões:
| Conjunto | Ferramentas |
|---|---|
| Memória e artefatos | search_memory, propose_fact, propose_policy, supersede_fact, supersede_policy, record_observation, update_my_notes, get_my_notes, list_memory_domains, list_policies, publish_artifact, revise_artifact, list_artifacts, get_artifact |
| Grafo de código | search_code, code_symbol, code_callers, code_callees, code_impact |
| Mecânica de execução | search_tool_bm25, list_my_tools, todo_write, todo_read |
Estar em uma lista de permissões não torna uma ferramenta chamável, e o inverso também vale: a capacidade de perguntar ao operador é uma ferramenta do harness (ask_user), então ela nunca aparece neste catálogo MCP.
Ferramentas sujeitas a aprovação
Seção intitulada “Ferramentas sujeitas a aprovação”Uma ferramenta pode declarar requiresApproval. O despachante então monta um ApprovalPayload e o apresenta pelo ConfirmationPort antes de a ferramenta rodar; o cc_server conecta essa porta, então o portão está ativo.
Ferramentas registradas que o declaram: create_ticket, update_ticket, assign_ticket, reassign_ticket, close_ticket, ticket_relation, create_goal, update_goal_progress, create_approval, decide_approval, comment_approval, create_work_product, save_work_product_revision, create_runtime_profile, install_skill, update_skill.
De forma independente, as barreiras unificadas de ação colocam um portão em qualquer ferramenta que declare um conjunto ActionClass não vazio. Uma decisão prompt sem nenhum aprovador conectado é negada. Consulte Barreiras.
Capacidades sem ferramenta por trás
Seção intitulada “Capacidades sem ferramenta por trás”Nem toda capacidade do produto é alcançável por um agente. Estas não têm ferramenta alguma, então um nome que você talvez tenha visto referenciado em outro lugar retorna “unknown tool”:
| Capacidade | Onde ela vive em vez disso |
|---|---|
| Contratar, demitir ou editar um agente | A UI de agentes. Não existe ferramenta hire_agent / fire_agent / update_agent |
| Criar um espaço de trabalho | workspace.upsert por RPC, que semeia e carimba a propriedade |
| Projetos (criar / listar / atualizar / registrar) | A UI de tickets. Projetos são uma superfície do operador — consulte Projetos |
| Fazer ao operador uma pergunta bloqueante | A ferramenta ask_user do harness, não o MCP. Ela renderiza um formulário na conversa e bloqueia até a resposta |
| Diagnóstico por agente | Nada. Não existe um doctor — consulte Diagnóstico de agente |
| Calendário e reuniões | RPC apenas para clientes humanos (veja acima) |