MyOTP.App integration
MyOTP.App sends and verifies one-time passcodes (OTP) over SMS, WhatsApp and Telegram from one API key. Send a code to a phone number, verify the code the user typed, extend a code's expiry, read the delivery status of a sent code, list past send and verify transactions, and read the account and a top-up price quote. Every send is charged to the account balance. Buying credits by machine payment, agent self-signup and the browser-facing email confirmation routes are not exposed. Authentication is an API key sent in the X-API-Key header.
Say what should happen.
The workflow builds itself.
What you can do with MyOTP.App
Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.
Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.
Otp, 4 operations
extend_otpExtend otpPOSTPush back the expiry of a code already sent, by duration seconds (60 to 14400). Pass message_id from send_otp. Returns the new expires_at; 404 means the message_id is unknown.get_otp_statusGet otp statusPOSTRead the delivery state (DLR) of a sent code and whether it can still be verified. An unknown message_id is also HTTP 200, with message instead of DLR: read DLR first. A DLR starting with 'Pending:' means ask again in a few seconds.send_otpSend otpPOSTSend a one-time passcode to a phone number by SMS, WhatsApp or Telegram; charged to the balance. Keep message_id for verify_otp and get_otp_status. 409 means a code is still active for that number (force_send overrides).verify_otpVerify otpPOSTCheck a code the user typed. Read status: success or failed (with reason invalid, expired or not found), both on HTTP 200. Pass message_id from send_otp to scope the check to that one code.
Account, 2 operations
get_accountGet accountGETRead the account behind the API key: account_id, email, whether the email is verified, credit balance, plan_id and status.get_account_identityGet account identityGETReturn the email of the account the API key belongs to. Use it as a connection test: it checks both the key and the account's IP allowlist (403 when the calling address is not allowed).
Topup quote, 1 operation
get_topup_quoteGet topup quoteGETPrice a credit top-up without buying anything, 25 to 50,000 credits per purchase. Returns amount_usd, the current price_per_credit_usd and the accepted payment methods.
Transaction, 1 operation
list_transactionsList transactionsPOSTList send and verify transactions between start_date and end_date (YYYY-MM-DD; both left out = the last 7 days), paged with page and per_page (max 100). Each row has message_id, phone_number, cost and timestamp.
Use MyOTP.App from Claude Code, Cursor or Codex
Connect MyOTP.App in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its MyOTP.App operations become tools the client can call, next to every other integration you connected.
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"
[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"{
"mcpServers": {
"livecontext": {
"type": "http",
"url": "https://livecontext.ai/mcp",
"headers": {
"X-API-Key": "YOUR_API_KEY"
}
}
}
}How to connect MyOTP.App
- Create your workspace
Sign up free. Nothing to install.
- Connect MyOTP.App once
Add your MyOTP.App connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.
- Describe the job in chat
The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.
MyOTP.App integration FAQ
What can you do with the MyOTP.App integration?
LiveContext exposes 8 operations on MyOTP.App, covering otp, account, topup quote and transaction.
