MCP-tools
cc_server host één MCP-toolregister (JSON-RPC 2.0), aangeboden op de hoofdpoort van de server (standaard 9030) via POST /mcp en GET /sse, met protocolversie 2024-11-05. Elke client komt op hetzelfde register uit: de desktop, de webbuild, externe MCP-clients en de ingebouwde agentruntime. Externe MCP-servers kunnen als dynamische laag in hetzelfde register worden opgenomen.
Omvang van het register
Sectie getiteld “Omvang van het register”| Maatstaf | Aantal |
|---|---|
Tools die cc_server registreert |
110 |
Uit packages/cc_mcp |
108 |
Uit packages/cc_mcp_client (tooldiscovery) |
2 |
Geregistreerd in het baseregister (server_mcp_registry.dart) |
63 |
Geregistreerd na het opstarten, zodra hun services beschikbaar komen (cc_server_runtime.dart) |
47 |
| Van de 63 van het baseregister, voorwaardelijk op een codegraaf-repository | 5 |
De vijf codegraaftools worden alleen geregistreerd wanneer de host een codegraaf-repository doorgeeft aan buildServerMcpRegistry. cc_server geeft er altijd een door, dus alle 110 zijn actief in de meegeleverde binary.
Het volledige register wordt aangekondigd in tools/list, zonder beperking op discovery. Ticketbewerkingen zijn getypeerde tools.
Algemene parameters
Sectie getiteld “Algemene parameters”workspace_id
Sectie getiteld “workspace_id”Vereist bij elke tool die gegevens binnen de werkruimte aanraakt. Een ontbrekende of ongeldige workspace_id geeft een expliciete fout, en een waarde die niet overeenkomt met de werkruimte van de doeleniteit wordt geweigerd in plaats van stil genegeerd. Laat het weg bij de echt globale tools: list_workspaces en de zes nieuwsfeedtools (list_feeds, list_articles, get_article, set_article_read, set_article_saved, refresh_feeds), die meelopen op de persoonlijke feedlijst van de servereigenaar. Discovery-tools (search_tool_bm25, list_my_tools) nemen het optioneel, zodat ze de aanroepbaarheid per gespreksmodus kunnen classificeren. Wanneer de server een agent dispatcht, wordt de werkruimte serverside geforceerd, dus de agent kan geen andere werkruimte bereiken door een vreemd id mee te geven.
Tooldiscovery
Sectie getiteld “Tooldiscovery”Beide komen uit cc_mcp_client, niet uit cc_mcp, en beide raadplegen de modusbewaking, zodat ze melden wat aanroepbaar is in de huidige gespreksmodus.
| Tool | Beschrijving |
|---|---|
search_tool_bm25 |
Zoek de toolcatalogus op trefwoord; geeft overeenkomende tools terug, hun argumentschema’s en of elke tool nu aanroepbaar is |
list_my_tools |
Toon de tools die nu aanroepbaar zijn in dit gesprek, gefilterd op de modus |
Een derde discovery-tool, search_tools, bestaat alleen binnen de ingebouwde harness en maakt geen deel uit van dit MCP-register. Die rangschikt het eigen tooloppervlak van de uitvoering en laadt, anders dan search_tool_bm25, de schema’s van wat hij vindt, zodat de agent een treffer in zijn volgende beurt kan aanroepen. Agenten op de harness kunnen die beter gebruiken; MCP-clients hebben search_tool_bm25.
Agenttools
Sectie getiteld “Agenttools”| Tool | Beschrijving |
|---|---|
list_agents |
Toon de geregistreerde agenten in een werkruimte |
Berichten en delegatie tussen agentpeers
Sectie getiteld “Berichten en delegatie tussen agentpeers”Agenten praten met elkaar via ruimtes (duurzaam en zichtbaar in de ledenlijst). ask_agent is request/reply met een verplichte time-out; delegate_task wordt serverside bewaakt door een diepteplafond, cyclusdetectie, budgetenvelop en autonomieplafond.
| Tool | Beschrijving |
|---|---|
send_to_agent |
Stuur een eenrichtingsbericht naar een andere agent, geadresseerd via to_agent_id of de exacte to_agent_name |
ask_agent |
Stel een andere agent een vraag en wacht op het antwoord, of laat de time-out aflopen |
delegate_task |
Delegeer een taak aan een andere agent als een gevolgd subticket |
consult_agent |
Voeg de best passende specialist op basis van skills toe aan de ruimte en dispatch die met een gerichte briefing |
todo_read |
Lees de opgeslagen takenchecklist van dit gesprek |
Skilltools
Sectie getiteld “Skilltools”Elke installatie en update passeert een fail-closed scanpoort voordat skillinhoud de schijf of een agentprompt bereikt.
| Tool | Beschrijving |
|---|---|
list_skills |
Toon de skill-slugs die beschikbaar zijn in een werkruimte |
create_skill |
Maak een nieuwe skill van markdowninhoud |
install_skill |
Installeer de hele map van een skill vanuit een GitHub-repository op een vastgezette ref |
update_skill |
Werk een geïnstalleerde GitHub-skill bij naar een nieuwe ref, met herscannen en opnieuw vastzetten |
list_skill_updates |
Toon skills waarvoor een nieuwere versie beschikbaar is |
verify_skills |
Verifieer vastgezette skills tegen hun contenthashes op schijf |
pin_skill |
Hash een bestaande skill op schijf in skills-lock.json |
Plan-, playbook- en artefacttools
Sectie getiteld “Plan-, playbook- en artefacttools”| Tool | Beschrijving |
|---|---|
submit_plan |
Het outputcontract van de planmodus: zet een getypeerd PlanDocument uit dat opent in Plan Studio |
create_playbook |
Sla een plan op als een benoemde, geversioneerde sjabloon met getypeerde {{param}}-plaatsaanduidingen |
run_playbook |
Instantieer een playbook met parameterwaarden en lever een plan op dat de operator goedkeurt |
publish_artifact |
Publiceer een geordende lijst van getypeerde blokken (markdown, tabel, grafiek, mermaid, code, JSON) die native in de client worden weergegeven |
revise_artifact |
Vervang de inhoud van een gepubliceerd artefact |
list_artifacts |
Toon de artefacten van de werkruimte |
get_artifact |
Lees één artefact |
complete_goal |
Verklaar het actieve duurzame doel van het gesprek (gestart met /goal of /loop) bereikt |
Werkruimtetools
Sectie getiteld “Werkruimtetools”| Tool | Beschrijving |
|---|---|
list_workspaces |
Toon alle werkruimtes met hun id’s en namen (globaal; geen workspace_id) |
Repotools
Sectie getiteld “Repotools”| Tool | Beschrijving |
|---|---|
list_repos |
Toon de repo’s die in een werkruimte zijn geregistreerd. Aanroepende agenten krijgen de geïsoleerde copy-on-write-worktreepaden van hun gesprek, nooit de oorspronkelijke checkouts |
Berichttools
Sectie getiteld “Berichttools”| Tool | Beschrijving |
|---|---|
list_spaces |
Toon de berichtruimtes in een werkruimte |
get_messages |
Haal berichten uit een ruimte op |
send_message |
Stuur een bericht naar een ruimte als een met naam genoemde afzender-agent |
get_space_notes |
Lees het gedeelde overdrachtsdocument van een ruimte |
update_space_notes |
Vervang het gedeelde overdrachtsdocument van een ruimte |
todo_write |
Vervang de takenchecklist van dit gesprek in één aanroep (geef de volledige lijst mee) |
Reviewtools
Sectie getiteld “Reviewtools”| Tool | Beschrijving |
|---|---|
start_ai_review |
Start de AI-review voor een PR: bereken de reviewgebieden, waai gespecialiseerde reviewers uit over de PR-ruimte, schrijf de rondleiding en rond af |
add_review_node |
Voeg een gestructureerde reviewbevinding toe (bestand, regel, prioriteit P0–P3) aan een reviewruimte |
confirm_review_node |
Bevestig de bevinding van een peer; de auteur kan die niet zelf bevestigen |
resolve_review_node |
Markeer een bevinding als opgelost nadat de wijziging echt is doorgevoerd; plaatst een spoor in de reviewruimte |
dismiss_review_node |
Verwerp een bevinding die niet van toepassing is; legt een onderdrukkingsfeit vast zodat reviewers hem niet opnieuw aanmerken |
request_peer_review |
Vraag een andere reviewer-agent om een tweede blik op een bevinding |
dispatch_reviewers |
Dispatch passende reviewer-agenten gelijktijdig naar een reviewruimte |
submit_reviewer_verdict |
Plaats per reviewer een ship/hold/block-oordeel met een betrouwbaarheidsscore en een toelichting |
finalize_review |
Bereken de consensus per node en het oordeel per PR, en sluit de review |
set_cohort_summary |
Stel de samenvatting in gewone taal van een reviewcohort in |
add_review_diagram |
Hang een gestructureerd, door de graaf geverifieerd diagram (sequence, entityRelation, stateMachine) aan een cohort |
publish_review_to_github |
Publiceer de afgeronde review naar GitHub als inline opmerkingen plus een samenvattende tekst |
Geheugentools
Sectie getiteld “Geheugentools”| Tool | Beschrijving |
|---|---|
search_memory |
Zoek in feiten en beleid (trefwoord, semantisch of hybride — hybride is de standaard) |
propose_fact |
Sla een kort markdown-feit op in een domein |
supersede_fact |
Markeer een feit als vervangen door een ander |
propose_policy |
Sla een normatieve regel op in een domein (vereist schrijfrechten daarop) |
supersede_policy |
Haal een beleidsregel uit gebruik — markeert hem inactief maar bewaart hem voor de audit |
list_policies |
Toon actief beleid, optioneel gefilterd op domein |
list_memory_domains |
Toon de geheugendomeinen van de werkruimte met aantallen feiten en beleidsregels |
record_observation |
Leg een ruwe observatie vast in het werkgeheugen van de agent |
get_my_notes |
Lees het kladblok in het werkgeheugen van de aanroepende agent |
update_my_notes |
Werk het kladblok in het werkgeheugen van de aanroepende agent bij |
remember |
Voeg een notitie toe aan het hot werkgeheugen van de agent voor deze sessie (begrensd op TTL en aantal) |
consolidate_memory |
Voer een consolidatie- (“sleep”-)ronde uit: verwijder verlopen hot-items en rol duurzame items door naar langetermijnfeiten |
harmonize_memory |
Voer harmonisatie van overtuigingen tussen agenten uit (SHMR) en markeer tegenstrijdigheden |
list_memory_conflicts |
Toon gedetecteerde tegenstrijdigheden en hoe elke is opgelost |
Governancetools
Sectie getiteld “Governancetools”| Tool | Beschrijving |
|---|---|
create_goal |
Maak een organisatiedoel aan (op bedrijfs-, team-, agent- of taakniveau) |
list_goals |
Toon doelen met niveau, status en samengevoegde voortgang |
update_goal_progress |
Stel de voortgang van een doel in |
create_approval |
Open een boardgoedkeuring voor een bestuurde actie (plan verlaten, merge, release, aannemen, aangepast) |
list_approvals |
Toon goedkeuringen, optioneel gefilterd op status |
decide_approval |
Leg een beslissing vast: goedkeuren, afwijzen, herziening vragen of opnieuw indienen |
comment_approval |
Plaats een opmerking bij een boardgoedkeuring |
exit_plan_mode |
Open (en verbruik na goedkeuring) een plan_exit-goedkeuring, waarmee het gesprek de planmodus verlaat |
agent_heartbeat |
Meld levensvatbaarheid (levend, inactief, vastgelopen); stilte zet de runtimegezondheid op onlangs verloren en daarna offline |
list_runtime_health |
Toon de runtimegezondheid van elke agent |
list_agent_presence |
Toon de aanwezigheid van elke agent (gezondheid, levenscyclus, aantallen actieve en wachtende runs, capaciteit) |
get_org_chart |
Lees de rapportagestructuur, met de CEO aan de top, genest via reports_to |
create_work_product |
Maak een duurzaam deliverable dat aan een ticket hangt |
save_work_product_revision |
Sla een nieuwe revisie op; geef base_revision_id mee om bij een gelijktijdige bewerking te worden geweigerd |
list_work_products |
Toon deliverables, optioneel gefilterd op één ticket |
get_work_product |
Lees een deliverable met zijn revisiegeschiedenis |
create_runtime_profile |
Definieer een herbruikbaar runtimeprofiel (protocolfamilie, CLI-commando, vaste startargumenten) |
list_runtime_profiles |
Toon de runtimeprofielen van de werkruimte |
Codegraaftools
Sectie getiteld “Codegraaftools”Alleen geregistreerd wanneer de host een codegraaf-repository levert. De index dekt de meegeleverde grammaticaset (Dart, JS/TS, PHP, Python, Rust, Zig, C/C++, Go, Java, Ruby, C#, Swift, Kotlin, R, Assembly, MATLAB, Ada); symbolen in andere talen komen er niet in voor.
| Tool | Beschrijving |
|---|---|
search_code |
Zoek geïndexeerde symbolen op naam, signatuur en doccommentaar (hybride BM25 + semantisch) |
code_symbol |
Zoek symbolen op exacte naam; geeft file:line en signatuur terug |
code_callers |
Toon de symbolen die een symbool aanroepen of ervan afhangen (inkomende randen) |
code_callees |
Toon de symbolen die een symbool aanroept of waarvan het afhangt (uitgaande randen) |
code_impact |
Bereken de transitieve impactstraal van een symbool, tot een bepaalde diepte |
Tickettools
Sectie getiteld “Tickettools”| Tool | Beschrijving |
|---|---|
create_ticket |
Maak een ticket aan bij de geconfigureerde provider |
get_ticket |
Haal één ticket op aan de hand van zijn id |
list_tickets |
Toon tickets, optioneel gefilterd op status of toegewezen agent |
update_ticket |
Werk status, titel, beschrijving, prioriteit of labels bij (de status accepteert aliassen zoals in_progress / completed) |
assign_ticket |
Wijs een ticket toe aan een agent en/of team |
reassign_ticket |
Wijs een ticket opnieuw toe aan een andere agent |
add_ticket_collaborator |
Nodig een agent uit om mee te werken aan een ticket (toegevoegd aan de ruimte ervan) |
comment_on_ticket |
Plaats een opmerking bij een ticket |
close_ticket |
Sluit een ticket (markeert het als afgerond), met optionele output |
fail_ticket |
Markeer een ticket als mislukt met een foutmelding |
delegate_ticket |
Delegeer een ticket aan een agent en maak daarbij een gevolgd ticket aan |
ticket_pr_link |
Koppel of ontkoppel een ticket en een pull request via het PR-node-id (action: link | unlink) |
ticket_relation |
Voeg een relatie tussen twee tickets toe of verwijder die — blocked_by, blocking, related_to, duplicate_of, duplicated_by, sub_issue_of, parent_of (action: add | remove) |
list_ticket_relations |
Toon het bovenliggende ticket, de subtickets en de afhankelijkheidskoppelingen van een ticket |
Team- en pipelinetools
Sectie getiteld “Team- en pipelinetools”| Tool | Beschrijving |
|---|---|
record_team_activity |
Leg een activiteitsvermelding van een teamleider vast bij een ticket |
preview_trigger |
Doe een dry-run van welke pipeline-runs een hypothetische gebeurtenis zou starten, zonder iets vast te leggen |
submit_output |
Dien de gestructureerde outputpayload in voor de huidige pipeline-run van de aanroeper; gevalideerd tegen het gedeclareerde outputschema van de run |
Orkestratietools
Sectie getiteld “Orkestratietools”| Tool | Beschrijving |
|---|---|
propose_orchestration |
Zet een gestructureerd orkestratieplan voor meerdere agenten uit voor één goedkeuring vooraf; valideert en geeft eventuele schendingen terug |
Nieuwsfeedtools
Sectie getiteld “Nieuwsfeedtools”| Tool | Beschrijving |
|---|---|
list_feeds |
Toon de geregistreerde RSS-/Atom-feeds |
list_articles |
Toon artikelen, optioneel gefilterd op feed, ongelezen of opgeslagen |
get_article |
Haal één artikel op |
set_article_read |
Markeer een artikel als gelezen of ongelezen |
set_article_saved |
Sla een artikel op of haal het uit je opgeslagen items |
refresh_feeds |
Haal nu elke ingeschakelde feed opnieuw op |
Omhulling- (rig-)tools
Sectie getiteld “Omhulling- (rig-)tools”Bestuur wegwerpmachines — een ingesloten browser of Linux-desktop, een Android-
emulator of een iOS Simulator — van binnenuit een run. Ze worden na het
opstarten geregistreerd, onvoorwaardelijk: of een machine echt kan opstarten is
een probeervraag die de tools per aanroep beantwoorden. Herhaalde aanroepen in
één gesprek hergebruiken één machine; screenshots komen terug als
afbeeldingsinhoud met een budget van één afbeelding per resultaat, en opgehaalde
pagina-/UI-inhoud wordt als niet-vertrouwde data afgeschermd. De vier
gebruikstools plus rig_close declareren de enclosureControl
actieklasse (de gebruikstools
declareren ook networkEgress en processSpawn; mobile_use en ios_use
declareren ook packageInstall), dus alleen-lezenmodi weigeren ze. rig_list
declareert niets — die leest alleen werkruimtestatus. Het volledige
werkwoordenvocabulaire per oppervlak staat in de
rigs-referentie.
| Tool | Beschrijving |
|---|---|
computer_use |
Bestuur een Linux-desktop in een ingesloten VM: verplaatsen, klikken, slepen, scrollen, typen, formaat wijzigen, klembord, screenshot |
browser_use |
Bestuur een headless Chromium, Firefox of WebKit (engine): navigeren, klikken, invullen, extraheren (a11y/DOM/console), klembord, screenshot |
mobile_use |
Bestuur Android via ADB: inspecteren/invoeren, screenshots, apps installeren/starten/stoppen/resetten/verwijderen, deep links en apparaatcommando’s in argv-vorm |
ios_use |
Bestuur de iOS Simulator via WebDriverAgent/CoreSimulator: inspecteren/invoeren, screenshots, apps installeren/starten/stoppen/verwijderen, deep links en simulatorprocessen in argv-vorm |
rig_list |
Toon de rigs van een werkruimte met oppervlak, status, weergavegrootte en controller |
rig_close |
Vernietig een rig en gooi de bijbehorende machinestatus weg |
Niet beschikbaar via MCP
Sectie getiteld “Niet beschikbaar via MCP”Agenda en vergaderingen hebben geen MCP-tools. Agenten kunnen je agenda, vergaderingen, transcripten, actiepunten of beslissingen niet lezen. De samenvatting die actiepunten en beslissingen oplevert, draait als de ingebouwde meeting_summary-pipeline, niet als een tool die een agent kan aanroepen.
Toolfiltering per modus
Sectie getiteld “Toolfiltering per modus”De filtering wordt tweemaal afgedwongen vanuit één tabel (ModeToolPolicy): één keer in de MCP-dispatcher voor de Claude Code-adapter en één keer in het register van de ingebouwde harness. Een geblokkeerde aanroep geeft de reden terug.
| Modus | Tooloppervlak |
|---|---|
chat |
Elke geregistreerde tool; geen allowlist |
plan |
Een samengestelde allowlist. Geen worktree-schrijfacties en geen ticketwerkwoorden create / assign / delegate, maar geheugen, artefacten, todo’s, submit_plan, exit_plan_mode en de ticketafrondingswerkwoorden op het gedispatchte ticket zijn toegestaan |
review |
Een samengestelde allowlist: deelname aan reviews, communicatie, alleen-lezen contextophalers en de volledige set ticketwerkwoorden, inclusief create_ticket en assign_ticket |
orchestrate |
Een samengestelde allowlist: onderzoeks- en leestools plus propose_orchestration, create_playbook en run_playbook. Aannemen, opdelen en tickets afronden gebeuren deterministisch na goedkeuring, nooit midden in een run |
In elke modus toegestaan, ongeacht de allowlist:
| Set | Tools |
|---|---|
| Geheugen en artefacten | 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 |
| Codegraaf | search_code, code_symbol, code_callers, code_callees, code_impact |
| Runmechanica | search_tool_bm25, list_my_tools, todo_write, todo_read |
Op een allowlist staan maakt een tool niet aanroepbaar, en het omgekeerde geldt ook: de mogelijkheid om de operator een vraag te stellen is een harness-tool (ask_user) en komt dus helemaal niet in deze MCP-catalogus voor.
Tools met goedkeuringsplicht
Sectie getiteld “Tools met goedkeuringsplicht”Een tool kan requiresApproval declareren. De dispatcher bouwt dan een ApprovalPayload en toont die via de ConfirmationPort voordat de tool draait; cc_server koppelt die poort, dus de poort is actief.
Geregistreerde tools die het declareren: 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.
Los daarvan bewaken de uniforme actiebeveiligingen elke tool die een niet-lege ActionClass-set declareert. Een prompt-beslissing zonder aangesloten goedkeurder wordt geweigerd. Zie Beveiligingen.
Mogelijkheden zonder tool erachter
Sectie getiteld “Mogelijkheden zonder tool erachter”Niet elke mogelijkheid in het product is bereikbaar voor een agent. Deze hebben helemaal geen tool, dus een naam die je elders hebt zien staan levert “unknown tool” op:
| Mogelijkheid | Waar het in plaats daarvan zit |
|---|---|
| Een agent aannemen, ontslaan of bewerken | De agenten-UI. Er is geen hire_agent / fire_agent / update_agent-tool |
| Een werkruimte aanmaken | workspace.upsert via RPC, dat eigenaarschap initialiseert en vastlegt |
| Projecten (aanmaken / tonen / bijwerken / indienen) | De tickets-UI. Projecten zijn een operatoroppervlak — zie Projecten |
| De operator een blokkerende vraag stellen | De harness-tool ask_user, niet MCP. Die toont een formulier in het gesprek en wacht op het antwoord |
| Diagnostiek per agent | Niets. Er is geen doctor — zie Een agent diagnosticeren |
| Agenda en vergaderingen | Alleen RPC voor menselijke clients (zie hierboven) |