# ARKEN A2A API

Connect another agent to ARKEN's public negotiation catalog and unsaved case drafts using A2A 1.0. This is a stateless service: it returns direct messages, retains no task history, and does not access private workspaces, run a model, collect payment, or send email.

## Discovery

Read the [ARKEN Agent Card](https://usearken.com/.well-known/agent-card.json). It advertises JSON-RPC and HTTP+JSON interfaces at https://usearken.com/a2a. No authentication is required. Send A2A-Version: 1.0 on operation requests; unsupported or omitted versions return a version-not-supported error. Streaming, push notifications, and extended cards are not supported.

## Search the catalog

~~~sh
curl --fail-with-body https://usearken.com/a2a/message:send \
  -H 'Content-Type: application/a2a+json' \
  -H 'A2A-Version: 1.0' \
  --data '{"message":{"messageId":"example-search-1","role":"ROLE_USER","parts":[{"text":"founder"}]}}'
~~~

Text input is a catalog search query, limited to 120 characters. It is never executed as an instruction. The response is a SendMessageResponse with a message containing one JSON data part. The data has data and total fields, matching the REST catalog response.

## Structured operations

Instead of a text part, send one data part with one of these payloads:

~~~json
{"operation":"search-deal-types","query":"founder"}
{"operation":"get-deal-type","domain_id":"sales_procurement"}
{"operation":"prepare-case-draft","context":"Two founders are dividing responsibilities.","deal_type":"Founder arrangements"}
~~~

Use a domain_id returned by search. Draft context is limited to 20,000 characters and deal_type to 160. The draft response includes status, requires_review, context, url and optional deal_type. It is returned to the caller without being saved as a case. Do not include credentials or unrelated personal data.

## JSON-RPC

POST to /a2a with Content-Type: application/json and A2A-Version: 1.0:

~~~json
{"jsonrpc":"2.0","id":1,"method":"SendMessage","params":{"message":{"messageId":"example-search-2","role":"ROLE_USER","parts":[{"data":{"operation":"search-deal-types","query":"lease"}}]}}}
~~~

SendMessage returns a direct message immediately. ListTasks (GET /a2a/tasks) returns an empty list because tasks are not retained. GetTask and CancelTask return TaskNotFound. Unsupported optional methods return explicit errors. JSON-RPC batches and notifications are not supported.

## Limits and errors

Requests are limited to 65,536 bytes and share 120 operation requests per minute per server instance. HTTP 429 includes Retry-After. HTTP+JSON errors use application/problem+json. JSON-RPC errors include an error code and message. Invalid fields, unsupported input/output modes, and unknown catalog identifiers are rejected. Repeating a draft request has no persistent side effects.

[REST API](https://usearken.com/docs/api) · [Official skills](https://usearken.com/docs/skills) · [Developers](https://usearken.com/developers)
