Skip to content
Covo Developers

Reference

Create a short link

Shortens a public http(s) address into a /go/<code> link that counts clicks.

RESTPOST /api/v1/agents/{agent_id}/short-links
MCP toolcreate_short_link
ClassificationWrite
Scopeagents:write
Minimum role on the agenteditor
ConfirmationNot needed
Retry safetySend an Idempotency-Key header (REST) or idempotency_key argument (MCP) to retry safely
Success status201

What it does

Shortens a public http(s) address into a /go/<code> link that counts clicks. It works while the agent is published. Plans limit how many an agent keeps (plan_limit when full).

Side effects

Creates a public /go/ link that redirects whoever opens it. Counts toward the plan limit for short links.

Inputs

NameTypeRequiredInDescription
agent_idstringyespathThe agent id (agt_...), from list_agents.
urlstringyesbodyThe public http(s) address to send people to.
titlestringnobodyA name to recognize the link by.

Example

REST
curl -X POST "https://covo.lanaai.io/api/v1/agents/agt_4edc89bb2964/short-links" \
  -H "Authorization: Bearer $COVO_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"url":"https://example.com/spring-menu","title":"Spring menu"}'
MCP (POST /mcp)
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_short_link",
    "arguments": {
      "agent_id": "agt_4edc89bb2964",
      "url": "https://example.com/spring-menu",
      "title": "Spring menu"
    }
  }
}

Response

Returns an object with id, short_url, url, title, enabled, clicks, total_clicks, last_clicked and created_at. This is a real response, shortened to two items per list.

201 response
{
  "id": "33f5aef6-f05a-4a0e-8716-76aed5e209f9",
  "short_url": "https://covo.lanaai.io/go/NAqH5mp",
  "url": "https://example.com/spring-menu",
  "title": "Spring menu",
  "enabled": true,
  "clicks": 0,
  "total_clicks": 0,
  "last_clicked": null,
  "created_at": "2026-10-07T20:14:42.017Z"
}

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:write.
404agent_not_foundUnknown agent, or not reachable with this token.
400bad_requestAn input is invalid; field names it.
409, 422idempotency_in_progress, idempotency_key_reusedSee Idempotency on the REST page.
403plan_limitThe plan is full; details has the limit.
429rate_limitedWait Retry-After seconds.