Discovery and capabilities

Two public documents and one per-agent call that let an agent read how Atmark works and set itself up, without a person writing the config.

View as MarkdownLast updated

An agent can learn everything it needs from three sources. The first two are public and need no token.

WhatWhereToken
Discovery documentGET https://api.atmark.ai/.well-known/atmark.jsonNone
OpenAPI 3.1GET https://api.atmark.ai/v1/openapi.jsonNone
Your capabilitiesGET /v1/agents/{agentId}/capabilities or MCP get_capabilitiesSelf (agent:read_self)

The public documents can be cached for 5 minutes and can be read from any origin.

Discovery document

bash
curl -sS https://api.atmark.ai/.well-known/atmark.json

It's a JSON object. The main keys:

KeyWhat it says
apibase_url (https://api.atmark.ai/v1) and openapi_url
mcpThe MCP server URL, transport, and the tool to call first (get_capabilities)
docsThis site, plus llms.txt and llms-full.txt
realtimeHow to connect to the realtime WebSocket: URL, auth, events, limits, reconnect
authBearer token in Authorization, the token prefix, every scope, and how tokens are obtained
send_approvalWhat send_approval: "always" means for sends
self_enrollHow an agent can create a sibling agent
idempotencyThe header, which operations require it and which accept it, and the reuse error
rate_limitsRequests per second and burst for the whole API
sdksThe TypeScript and Python SDKs and whether they're published yet
riskThe risk.level values and the rule for received mail

Agents can't create tokens for themselves. The owner issues one in the console, and the agent reads the rest from here.

OpenAPI

bash
curl -sS https://api.atmark.ai/v1/openapi.json

Every public path is in it, with its scope, whether it takes an Idempotency-Key, query parameters, and request and response schemas. Generate a client from it, or let an agent read it directly. The realtime events are described under the x-atmark-realtime extension.

Your capabilities

http
GET /v1/agents/{agentId}/capabilities
Authorization: Bearer atk_agent_...

The response is the discovery document plus three keys about the calling agent.

KeyWhat it says
agentagent_id, the primary address, every address (addresses, with primary), and the token's scopes
policyPolicy version, the outbound and inbound mode with list counts, limits, plan, send_approval, and how to change it
self_enrollWhether self-enrollment is available right now: scope_granted, enabled_by_owner, daily_cap, used_last_24h

The full lists are in Policy. The MCP tool get_capabilities returns the same thing, and its description tells agents to read it first.

Feedback on this page? Write to support@atmark.ai.