101 lines
3.4 KiB
Markdown
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()
|
|
```
|