Reference
Publish
Makes the agent live for everyone with its link (a version named "Published" is saved).
| REST | POST /api/v1/agents/{agent_id}/publish |
| MCP tool | publish_agent |
| Classification | Sensitive write |
| Scope | agents:publish |
| Minimum role on the agent | admin |
| Confirmation | Required: confirm: true, after the person agrees |
| Retry safety | Safe to retry with the same input |
| Success status | 200 |
What it does
Makes the agent live for everyone with its link (a version named "Published" is saved). Refuses with not_ready when something required is missing. Needs agents:publish and confirm: true.
Side effects
Makes the agent public to everyone with its link and saves a version named Published.
Inputs
| Name | Type | Required | In | Description |
|---|---|---|---|---|
agent_id | string | yes | path | The agent id (agt_...), from list_agents. |
confirm | true | no | body | Set to true after reviewing the effect with the person you work for. Required for destructive operations. |
Example
curl -X POST "https://covo.lanaai.io/api/v1/agents/agt_4edc89bb2964/publish" \
-H "Authorization: Bearer $COVO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm":true}'{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "publish_agent",
"arguments": {
"agent_id": "agt_4edc89bb2964",
"confirm": true
}
}
}Response
Returns an object with agent_id, status, published_at, revision, latest_version, url, permanent_url, passport_url and places. This is a real response, shortened to two items per list.
{
"agent_id": "agt_4edc89bb2964",
"status": "live",
"published_at": "2026-10-07T20:14:41.981Z",
"revision": 10,
"latest_version": 5,
"url": "https://covo.lanaai.io/avery",
"permanent_url": "https://covo.lanaai.io/a/agt_4edc89bb2964",
"passport_url": "https://covo.lanaai.io/avery/passport",
"places": [
{
"id": "56a01a61-e1a5-4bdf-b1d7-533d280b81e9",
"key": "pl_a82927d351",
"kind": "profile",
"name": "Main link",
"enabled": true,
"link": "https://covo.lanaai.io/avery",
"short_link": "https://covo.lanaai.io/go/URj6uSU",
"embed": null
}
]
}Over MCP the same object comes back as the tool result, in structuredContent and as JSON text.
Errors
| Status | Code | Meaning |
|---|---|---|
| 401 | unauthorized | No token, or it is unknown, revoked or expired. OAuth apps refresh or reconnect. |
| 403 | account_suspended | The account that owns the token is paused. |
| 403 | insufficient_scope | The token lacks agents:publish. |
| 403 | role_insufficient | The person is not an admin or owner of this agent. |
| 404 | agent_not_found | Unknown agent, or not reachable with this token. |
| 400 | bad_request | An input is invalid; field names it. |
| 409 | confirmation_required | Review the effect with the person you work for, then send confirm: true. |
| 422 | not_ready | Something required is missing; the message says what. |
| 429 | rate_limited | Wait Retry-After seconds. |