Skip to content
Covo Developers

Reference

Get a draft

A draft with its change set, its diff against the agent as it is now, problems and validation.

RESTGET /api/v1/agents/{agent_id}/drafts/{draft_id}
MCP toolget_draft
ClassificationRead (changes nothing)
Scopeagents:read
Minimum role on the agenteditor
ConfirmationNot needed
Retry safetySafe to retry with the same input
Success status200

What it does

A draft with its change set, its diff against the agent as it is now, problems and validation.

Side effects

None. It only reads.

Inputs

NameTypeRequiredInDescription
agent_idstringyespathThe agent id (agt_...), from list_agents.
draft_idstringyespathThe draft id.

Example

REST
curl "https://covo.lanaai.io/api/v1/agents/agt_4edc89bb2964/drafts/80da083a-0818-47b5-afc4-ef5b39c59137" \
  -H "Authorization: Bearer $COVO_TOKEN"
MCP (POST /mcp)
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_draft",
    "arguments": {
      "agent_id": "agt_4edc89bb2964",
      "draft_id": "80da083a-0818-47b5-afc4-ef5b39c59137"
    }
  }
}

Response

Returns an object with id, title, status, base_revision, current_revision, stale, change_set, changes, problems, removes, validation, client, created_at and updated_at. This is a real response, shortened to two items per list.

200 response
{
  "id": "80da083a-0818-47b5-afc4-ef5b39c59137",
  "title": "Spring greeting",
  "status": "open",
  "base_revision": 6,
  "current_revision": 6,
  "stale": false,
  "change_set": {
    "personality": {
      "greeting": "Hi, I am Avery’s Concierge. Ask me about spring projects."
    }
  },
  "changes": [
    {
      "path": "personality.greeting",
      "operation": "replace",
      "before": "I'm Avery Quinn's Concierge. I can help you learn about Avery Quinn's work, what's on offer, or anything else you're curious about.",
      "after": "Hi, I am Avery’s Concierge. Ask me about spring projects."
    }
  ],
  "problems": [],
  "removes": 0,
  "validation": {
    "valid": true,
    "state": "ready",
    "errors": [],
    "warnings": [
      {
        "step": "knowledge",
        "field": null,
        "severity": "recommended",
        "message": "Add a few common questions. Short, specific answers work best."
      },
      {
        "step": "publish",
        "field": null,
        "severity": "recommended",
        "message": "Ask the preview a question before you publish."
      }
    ]
  },
  "client": {
    "name": "docs-examples",
    "interface": "rest"
  },
  "created_at": "2026-10-07T20:14:41.872Z",
  "updated_at": "2026-10-07T20:14:41.872Z"
}

Over MCP the same object comes back as the tool result, in structuredContent and as JSON text.

Errors

StatusCodeMeaning
401unauthorizedNo token, or it is unknown, revoked or expired. OAuth apps refresh or reconnect.
403account_suspendedThe account that owns the token is paused.
403insufficient_scopeThe token lacks agents:read.
404agent_not_foundUnknown agent, or not reachable with this token.
400bad_requestAn input is invalid; field names it.
429rate_limitedWait Retry-After seconds.