# Pulltrader A2A seller economics

Discover the A2A 1.0 Agent Card at
`https://www.pulltrader.app/.well-known/agent-card.json` or
`https://mcp.pulltrader.app/.well-known/agent-card.json`.
Both publish the same card. Its JSONRPC interface is
`https://mcp.pulltrader.app/a2a`.

The endpoint is public and read-only. No account or token is required.
It runs the same deterministic calculators as the public MCP server. It cannot
access seller inventory, create listings, change prices, or move money.
Marketplace fees and proceeds are estimates, not guaranteed payouts.

## Send a calculation

POST a single JSON-RPC request with `Content-Type: application/json` and
`A2A-Version: 1.0`:

```json
{
  "jsonrpc": "2.0",
  "id": "compare-1",
  "method": "SendMessage",
  "params": {
    "message": {
      "messageId": "request-1",
      "role": "ROLE_USER",
      "parts": [
        {
          "data": {
            "skillId": "compare_selling_costs",
            "arguments": { "sale_price": 250 }
          },
          "mediaType": "application/json"
        }
      ]
    }
  }
}
```

The response's `result.message` has role `ROLE_AGENT`, a generated `messageId`,
and a JSON data part containing the calculation. The endpoint accepts structured
JSON only; it does not interpret natural-language prompts. Send exactly one
data part with a listed `skillId` and an `arguments` object.

The available skills are `compare_selling_costs`,
`calculate_required_sale_price`, and `explain_selling_method`.
Their argument schemas are the identically named public MCP tool schemas,
available through `tools/list` at `https://mcp.pulltrader.app/mcp`.
Use those schemas to construct arguments. Other MCP tools and seller tools are
not exposed through A2A.

## Limits and errors

Requests are limited to 16 KiB and share the public server's per-IP request
budget. On HTTP 429, honor `Retry-After`. Results are not cached or retained.
There are no stored tasks, task continuation, streaming, push notifications, or
extended cards. `contextId`, if provided, is echoed for correlation only; it
does not load prior state. A `taskId` returns TaskNotFoundError.

Use A2A 1.0 PascalCase `SendMessage`, not the older `message/send` method.
Unsupported versions return VersionNotSupportedError. Malformed messages,
unknown skills, and invalid calculator arguments return JSON-RPC errors.

Protocol: https://a2a-protocol.org/latest/specification/
