autoreg-skills-max: initial public release (restored, redacted, hardened)
This commit is contained in:
100
skills/atxp-autoreg/references/mcp-direct-api-reference.md
Normal file
100
skills/atxp-autoreg/references/mcp-direct-api-reference.md
Normal file
@@ -0,0 +1,100 @@
|
||||
# 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()
|
||||
```
|
||||
Reference in New Issue
Block a user