Version and evidence
Input shapes are pinned to released Core 0.20.10. The connected client's tool set and action allowlist can be narrower. Development observations are stated in each procedure; they do not qualify all clients or installations.
Read and navigate
orient {}returns principal, scope, maps and offered skills. Check the target before a write.list_filestakes optionaldir,patternandmemory_view. Usedirfor an authorised folder or zone ID.readrequires stringpath; optionalmodeisfullorhead, withlimit,offsetandmemory_viewwhere advertised.get_skillrequires stringname; use a discoverable offered skill and follow its linked files.
Propose and inspect
check_writerequireschanges, an array of path/content or typed change objects. It checks the gate without landing the change.propose_writerequires the samechanges; optionalrationaleexplains the source and purpose.amendsadds to an existing caller-owned held proposal when supported. Do not use it to evade review.get_proposalacceptsproposal_id, or up to 25proposal_ids;pathreads a file in the proposal. Inspect actual state and diff.list_review_queuesupports pagination and filters such aspath_prefixandstatus. Partial or denied reads are not an all-clear.
Legacy {path, content} changes mean replacement. Typed operations include create, edit, replace, upsert, append and delete under their advertised contracts. A memory lifecycle edit needs the current revision/base. Exact transport schemas are supplied by tool discovery; never copy a server-internal token argument into a prompt or public example.
Loops
list_actions {}supplies the installed action palette and its argument/effect contracts.list_loops {}returns stored loop summaries.get_looprequiresloop_idand reads content, state and cases.loop_composerequires stringsname,descriptionand an objectspec. Its required spec keys arepurpose,version,trigger,inputs,nodes,quality,escalation,autonomy,budget. The server supplies owner and shadow rollout.get_caserequires bothloop_idandcase_id; inspect the actual timeline and terminal outcome.
The complete no-effect example is in the loop procedure. It verifies lifecycle composition only. Real actions come from the installed palette. No loop_rehearse tool is part of this contract.
Lifecycle and review actions
act requires string action and string item_id. The meaning of the ID depends on the action: ordinary review uses card_id; app bundle review uses proposal_id; installation uses app_id; loop lifecycle uses loop_id.
For an authorised ordinary proposal approval, answer is a string containing JSON:
{"action":"queue.answer","item_id":"<card id>","answer":"{\"decision\":\"approve\"}"}
Human approval requests require their own exact user confirmation and content hash. Never fabricate that confirmation. Other lifecycle actions must be advertised and allowed by the current client. A hosted connector can expose act while refusing a particular lifecycle action.
Invitations and access
invite_member requires email and accepts only optional role: "member". It is owner-only and sends email after provider and roster checks. Pending invitation, accepted membership and effective access are separate states. If this tool is absent on the intended connection, use the owner/account membership handoff.
list_access_profiles {} is an authorised administrative read of profile definitions and assignments. Use the actual role/grant policy to interpret access; a role alone is not a complete effective-access answer.
Results and retry rules
ok: falseis a refusal or failure; keep its exact bounded reason and stop at that stage.status: "held"is waiting for review, not a landed record or installed app.status: "applied"needs current source readback to prove the intended result.- Approval, installation, activation, scheduled execution and output acceptance are distinct postconditions.
- An interrupted call has an unknown outcome until supported state/readback reconciles it. Do not retry a write or send blindly.
Related
Practical guides for people and agents