MyOTP.App is an MCP server with 10 tools an agent can call, among them check_otp_status, create_account, extend_otp. It answers at https://mcp.myotp.app/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 6 of 6 times since 11 September 2026; the last check, on 21 October 2026, succeeded.
Send and verify one-time passcodes over SMS, WhatsApp and Telegram.
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
check_otp_status | Check whether a previously sent OTP is still active and (with DLR_ACCESS entitlement on Enterprise plan) get its delivery status. Returns `is_active` (bool) and `expires_at` (ISO timestamp) on every plan. On Enterprise plans, also returns ` Inputs: message_id |
create_account | Create a MyOTP.App agent account and return its one-time API key. No API key is required for this tool. The new account starts with zero balance; USDC top-ups work immediately, while card top-ups unlock after a human confirms the email addr Inputs: email, name |
extend_otp | Extend the expiry time of an active OTP without sending a new one. Useful when the end user is taking longer than expected to enter the code (e.g., switched apps, dealing with carrier delivery delay). Adds `duration` seconds (60-14400) to t Inputs: message_id, duration |
generate_otp | Send a one-time password (OTP) to a phone number via SMS, WhatsApp, or Telegram. MyOTP.App generates the code, formats the message, picks the best carrier route, and delivers it. Returns a `message_id` (UUID) — keep it; you'll pass it to `v Inputs: phone_number, channel, otp_length, otp_code, otp_validity, brand |
get_account_info | Return account details for the API key in use. Always returns at least the account `email`; depending on plan and platform version may also return balance/credit/plan info. Use this as a sanity check when wiring up MyOTP for the first time |
get_account_status | Return email verification, balance, plan, and status for the configured MyOTP agent account. Set resend_verification to request another confirmation email first. Unverified accounts can top up with USDC, but cards stay locked. Inputs: resend_verification |
get_topup_quote | Get the live price and payment options for buying MyOTP credits, without making a purchase. Use this when generate_otp or another send fails with HTTP 403 insufficient balance / NoBalance, or before calling `top_up_credits` to show the cost Inputs: credits |
get_usage_report | Fetch a paginated list of OTP transactions for a date range. Each transaction includes message_id, timestamp, phone_number, channel, country, cost, status, and the originating client IP. Date range cannot exceed 31 days. Defaults: last 7 da Inputs: start_date, end_date, page, per_page |
top_up_credits | Prepare or complete an autonomous MyOTP credit purchase with USDC or card through Machine Payments Protocol (MPP). Use this when generate_otp or another send fails with HTTP 403 insufficient balance / NoBalance. The tool quotes first, then Inputs: credits, dry_run |
verify_otp | Verify a code submitted by an end user against the OTP MyOTP delivered. Returns `{status: 'success'}` if the code matches and the OTP hasn't expired — at that point the OTP is consumed and cannot be reused. Returns `{status: 'failed', reaso Inputs: otp, phone_number, message_id |
Every block below points at https://mcp.myotp.app/mcp. Pick your client and copy.
claude mcp add --transport http myotp-app https://mcp.myotp.app/mcp
{
"mcpServers": {
"myotp-app": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.myotp.app/mcp"]
}
}
}{
"mcpServers": {
"myotp-app": {
"url": "https://mcp.myotp.app/mcp"
}
}
}{
"servers": {
"myotp-app": {
"type": "http",
"url": "https://mcp.myotp.app/mcp"
}
}
}{
"context_servers": {
"myotp-app": {
"url": "https://mcp.myotp.app/mcp"
}
}
}{
"mcpServers": {
"myotp-app": {
"serverUrl": "https://mcp.myotp.app/mcp"
}
}
}{
"mcpServers": {
"myotp-app": {
"url": "https://mcp.myotp.app/mcp"
}
}
}name: MyOTP.App
version: 0.0.1
schema: v1
mcpServers:
- name: MyOTP.App
type: streamable-http
url: https://mcp.myotp.app/mcp{
"mcpServers": {
"myotp-app": {
"httpUrl": "https://mcp.myotp.app/mcp"
}
}
}{
"mcpServers": {
"myotp-app": {
"type": "http",
"url": "https://mcp.myotp.app/mcp"
}
}
}{
"mcpServers": {
"myotp-app": {
"url": "https://mcp.myotp.app/mcp"
}
}
}goose://extension?url=https%3A%2F%2Fmcp.myotp.app%2Fmcp&type=streamable_http&id=myotp-app&name=MyOTP.App
It answered our last check on 21 October 2026 in 81 ms. Over 6 checks since 11 September 2026 it answered 6. Status here comes from Neuronto's own probes, not from the publisher.
10, as returned by the server's own tools/list on 13 September 2026: check_otp_status, create_account, extend_otp, generate_otp, get_account_info, get_account_status, get_topup_quote, get_usage_report, and 2 more.
It answered our last check on 21 October 2026 in 81 ms. Over 6 checks since 11 September 2026 it answered 6.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://mcp.myotp.app/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
Publisher: io.github.brntech. Endpoint host: mcp.myotp.app. ARD identifier: urn:air:io.github.brntech:mcp:myotp.
First indexed 10 September 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.