architect-manage-procedures
Manage agent procedures reliably (list / get / create / edit / publish)
Procedures are their own data, not part of the agent config. There is no agent-config path for them and no way to reach them by patching conversation_config. Everything here is branch-scoped and goes through the ConvAI REST API (host https://api.elevenlabs.io, header xi-api-key: $API_KEY). You need $AGENT_ID and the branch id $BRANCH_ID you are working on.
For the craft of writing a good trigger and clear steps, see the architect-structured-procedures skill and the procedure-authoring guidance. This skill is about calling the endpoints correctly.
1. Read current state first
Before creating or editing anything, read what exists:
- List every procedure on the branch:
GET /v1/convai/agents/$AGENT_ID/branches/$BRANCH_ID/procedures. Each entry carriesprocedure_id,version_id,name,type(free_formordeterministic),trigger, andhas_draft. It does NOT includecontent— the list is an index, not a way to read bodies. Do not measure a procedure's content length from this response; an absentcontentfield will read as empty for every procedure and look like data loss when nothing is wrong. You cannot edit a procedure without itsprocedure_idfrom here. - Read one procedure's body with
GET /v1/convai/agents/$AGENT_ID/branches/$BRANCH_ID/procedures/$PROCEDURE_ID. This is the only way to getcontent, and you need it before an edit so you do not blow away the rest. If a draft exists for that procedure, this GET returns the DRAFT content, not the published content. - This GET returns 404 for a procedure whose content has never been published, even when the id is correct and the procedure appears in the list. That is the expected state right after a create (see section 2), not a wrong id. Use the list to confirm the procedure exists and check
has_draft. - Confirm the branch you are on with
GET /v1/convai/agents/$AGENT_ID?branch_id=$BRANCH_ID, since procedures are per-branch.
If the user asked to edit "the X procedure", match X against the name values from the list and confirm the exact procedure_id before writing. Do not assume an id.