Files
autoreg-skills-max/skills/atxp-autoreg/references/mcp-direct-api-reference.md

101 lines
3.4 KiB
Markdown

# ATXP MCP Direct API Reference
## Authentication
ALL MCP endpoints accept:
```
Authorization: Bearer https://accounts.atxp.ai?connection_token=TOKEN&account_id=ACCT_ID
Accept: application/json, text/event-stream
Content-Type: application/json
```
Token is NOT bound to account_id — cross-account calls work for MCP (but LLM Gateway checks account_id).
## Request Format (JSON-RPC 2.0)
```json
{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "TOOL_NAME", "arguments": {}}}
```
## Endpoints & Pricing (2026-06-25)
### Email (`email.mcp.atxp.ai`)
| Tool | Price | Status |
|------|-------|--------|
| email_check_inbox | FREE | ✅ Works on all 50 accs |
| email_send_email | $0.01 | Requires payment request |
| email_search | — | Not tested |
| email_delete | FREE | ✅ |
| email_get_message | FREE | ✅ |
| email_get_attachment | FREE | ✅ |
| email_claim_username | — | Not tested |
| email_release_username | — | Not tested |
### Phone (`phone.mcp.atxp.ai`)
| Tool | Price | Status |
|------|-------|--------|
| phone_check_sms | FREE | ✅ Works on all 50 accs |
| phone_send_sms | $0.01 | Requires payment request |
| phone_register | $2.00 | Requires payment request |
| phone_configure_voice | — | Not tested |
| phone_call | — | Not tested |
| phone_check_calls | — | Not tested |
| phone_get_call | — | Not tested |
| phone_get_attachment | — | Not tested |
| phone_search | — | Not tested |
| phone_release | — | Not tested |
| phone_mark_read | — | Not tested |
### Search (`search.mcp.atxp.ai`)
| Tool | Price | Status |
|------|-------|--------|
| search_search | $0.01 | Requires payment request |
### Image (`image.mcp.atxp.ai`)
| Tool | Price | Status |
|------|-------|--------|
| image_create_image | $0.201 | Requires payment request |
| image_create_image_async | $0.201 | Requires payment request |
## Payment Request Handling
When a tool requires payment, response includes:
```json
{
"error": {
"code": -30402,
"message": "Payment via ATXP is required. You will be charged 0.01. Please pay at: https://auth.atxp.ai/payment-request/XXX",
"data": {
"paymentRequestUrl": "https://auth.atxp.ai/payment-request/XXX",
"chargeAmount": "0.01"
}
}
}
```
Payment request URL returns JSON with destination addresses (Base USDC, ATXP internal, Solana, Polygon, World).
## Response Format
SSE stream: `event: message\ndata: {...}\n`. Parse by splitting on `\n` and checking for lines starting with `data: `.
## Health Checks
- `https://email.mcp.atxp.ai/health` → `{"status":"ok"}`
- `https://phone.mcp.atxp.ai/health` → `{"status":"ok"}`
- Search/image MCP: health endpoint returns 404
## Parallel Spam Pattern (Python)
```python
import json, urllib.request, threading
def check_inbox(acc):
auth = f'https://accounts.atxp.ai?connection_token={acc["token"]}&account_id={acc["id"]}'
body = json.dumps({"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "email_check_inbox", "arguments": {}}}).encode()
req = urllib.request.Request("https://email.mcp.atxp.ai/", data=body, headers={
"Content-Type": "application/json", "Accept": "application/json, text/event-stream",
"Authorization": f"Bearer {auth}"
})
with urllib.request.urlopen(req, timeout=10) as r:
# parse SSE response
pass
threads = [threading.Thread(target=check_inbox, args=(acc,)) for acc in pool]
for t in threads: t.start()
for t in threads: t.join()
```