Root My Android, callable by AI agents
This endpoint speaks the Model Context Protocol (JSON-RPC 2.0 over the Streamable HTTP transport). Agents call it with POST; the page you are reading is what humans get with GET. It exposes the same public services as the Root My Android REST API — accounts, Guardian Angel subscription plans, card & crypto checkout, vouchers, payment status and human support.
https://rootmyandroid.com/mcp
← point any MCP client here
Connect an agent
Add the server to any MCP-capable client (Claude, Cursor, a custom agent, …):
{
"mcpServers": {
"rootmyandroid": {
"type": "http",
"url": "https://rootmyandroid.com/mcp"
}
}
}
Or drive it by hand — every message is one POST with a JSON-RPC 2.0 body:
curl -sS https://rootmyandroid.com/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{
"protocolVersion":"2025-06-18",
"capabilities":{},
"clientInfo":{"name":"my-agent","version":"1.0.0"}}}'
curl -sS https://rootmyandroid.com/mcp \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{
"name":"list_subscription_plans","arguments":{}}}'
Protocol details
| Server | rootmyandroid-mcp v0.1.0 |
| Transport | Streamable HTTP — requests get a single application/json response (no SSE streams) |
| Protocol versions | 2025-06-18 2025-03-26 2024-11-05 (negotiated on initialize) |
| Capabilities | tools (no resources, no prompts) |
| Authentication | None — the exposed services are public; an account number is the credential where one is needed |
| Sessions | Stateless — no Mcp-Session-Id is issued; every POST is independent |
| Batching | Not supported (one JSON-RPC message per POST, per spec) |
Tools
Exactly what tools/list returns — this table is generated from the same catalog.
| Tool | What it does | Arguments (? = optional) |
|---|---|---|
get_network_identity |
The calling agent's real-time network identity (IP, user agent, ASN, TLS version, geolocation) echoed from Cloudflare edge metadata. Nothing is stored. Computed locally from the request to rootmyandroid.com/mcp; the REST twin is GET /v1/device/whoami. | none |
get_api_index |
Index of every public Root My Android REST endpoint (GET /v1/). Use this to discover operations that have no dedicated MCP tool yet. | none |
list_subscription_plans |
Catalog of the flat prepaid subscription tiers (id, label, days, features, full-fiat price and 15%-discounted crypto price). Proxy of GET /v1/billing/plans. | none |
create_account |
Create a new Mullvad-style 16-digit Root My Android account (no signup, no PII). Returns the formatted account number and its entitlements. Proxy of POST /v1/accounts. | none |
get_account |
Fetch an account and its live entitlements snapshot by account number. Proxy of GET /v1/accounts/{number}. | account_number |
get_entitlements |
An account's entitlement windows with live status. Proxy of POST /v1/entitlements. | account_number |
verify_feature |
The API gate every tier feature checks: is feature X unlocked for this account right now? Proxy of POST /v1/entitlements/verify. | account_number, feature |
redeem_voucher |
Redeem a single-use voucher code, crediting its days of Guardian Angel PRO to the account. Proxy of POST /v1/redeem. | account_number, code |
get_payment_status |
Authoritative NOWPayments payment status; reconciles credits if the IPN never arrived. Proxy of GET /v1/billing/payment/{id}. | payment_id |
create_card_checkout |
Start a subscription checkout on the card/invoice rail (NOWPayments hosted invoice, full fiat price). Returns the invoice URL to hand to the user. Proxy of POST /v1/billing/checkout. | account_number, tier |
create_crypto_checkout |
Start a subscription payment on the whitelabel crypto rail (15% discount). Returns the deposit address, amount and currency to show the user. Proxy of POST /v1/billing/crypto. | account_number, tier, pay_currency |
open_support_conversation |
Open a human support conversation with the Root My Android team and post the first message. mode "realtime" = anonymous live chat; "message" = asynchronous, requires email. Returns the conversation id and the visitor bearer token ONCE — store it and pass it as support_token to send_support_message / poll_support_messages. NOTE: conversations opened via MCP share one daily quota (5/day), because the API rate-limits by caller identity and all MCP calls originate from this worker. Proxy of POST /v1/support/conversations. | mode, body, email?, account_number? |
send_support_message |
Post a visitor reply into an existing support conversation. Proxy of POST /v1/support/conversations/{id}/messages. | conversation_id, support_token, body |
poll_support_messages |
Poll a support conversation thread (optionally only messages after a given message id). Proxy of GET /v1/support/conversations/{id}/messages. | conversation_id, support_token, after? |
The services behind it
Each tool is a thin proxy of the public REST API at rootmyandroid.com/v1, which owns all validation and business logic: Mullvad-style 16-digit accounts (no email, no signup), flat prepaid Guardian Angel subscription tiers with card (NOWPayments invoice) and discounted crypto (whitelabel deposit) rails, single-use voucher codes, authoritative payment status, and two-mode human support conversations. Device-facing endpoints (encrypted backups, Guardian Angel pairing, audit snapshots) remain REST-only for now — they need an on-device context an agent cannot fabricate.