AIエージェント向けのSMS受信

エージェントは人手を介さずに番号を購入し、コードを読み取れます。

提示すべき身元がありません

アカウントは、エージェント自身が生成して保管するリカバリーフレーズです。確認するものも、 差し出すものも、名乗るべき人物もありません。

カードは不要です

チャージは暗号資産で行います。ウォレットを持つエージェントは自ら支払えます。カード番号も、 請求先住所も、支出を承認する人間も必要ありません。

読むべきページがありません

カタログ、価格、購入、発行はすべてツールの呼び出しです。ここにはブラウザもスクリーンショットも 必要とするものはありません。

MCPサーバーはどのように接続しますか?

HTTP ストリーマブル上の JSON-RPC 2.0 で、エンドポイントは一つだけです。申請すべきAPIキーも、 インストールするものもありません。カタログのツールはアカウントが存在する前から動作し、フレーズが 必要なのはお金を使うツールだけです。

https://otpdrop.com/mcp

Claude Code

claude mcp add --transport http otpdrop https://otpdrop.com/mcp

Cursor、Windsurf、VS Code など

HTTP を自ら扱えるクライアントは、この同じ設定を受け付けます。Cursor と Windsurf はキーを mcpServers、VS Code は servers と呼びます。

{
  "mcpServers": {
    "otpdrop": {
      "type": "http",
      "url": "https://otpdrop.com/mcp"
    }
  }
}
クライアント設定の場所
Claude Codeclaude mcp add またはプロジェクト内の .mcp.json
Claude Desktop設定 → コネクタ → カスタムコネクタを追加
Cursor~/.cursor/mcp.json またはプロジェクトごとの .cursor/mcp.json
VS Code.vscode/mcp.jsonservers の下
Windsurf~/.codeium/windsurf/mcp_config.json

MCPのクライアントは速く変化し、これらのパスもそれに伴って変わります。お手元の 表示と一致しない場合は、クライアントのドキュメントをご確認ください。当方の側にあるのは、アドレスと トランスポートだけです。

クライアントが stdio しか扱えない場合は?

HTTP のMCPサーバーを直接開けないクライアントもあります。その場合はローカルで中継してください:

{
  "mcpServers": {
    "otpdrop": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://otpdrop.com/mcp"]
    }
  }
}

MCPのクライアントがまったくない場合は?

サーバーは通常のHTTPのエンドポイントですので、どの言語からでも呼び出せます。ツールの一覧を取得 すると、次のようになります:

curl -s -X POST https://otpdrop.com/mcp \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

アカウントを必要とするツールには Authorization: Bearer <seed> を添えてください。 JSON-RPC を扱いたくない場合は、同じ操作がAPIリファレンスの通常のRESTエンドポイント としても用意されています。

エージェントは OTPDrop で何ができますか?

ツール役割フレーズの要否
list_servicesすべてのサービスとコード、カテゴリ不要
list_countriesすべての国と国番号不要
list_catalog価格のマトリクスを含むカタログ全体不要
quoteサービスと国の組み合わせの価格不要
agent_helpこのサーバーの使い方を、そのまま文脈に不要
create_accountアカウントを作成してフレーズを取得不要
topup指定の通貨のチャージ用アドレスと金額を取得必要
topup_statusチャージが反映されたかを確認必要
buy_number残高から引き落として番号を購入必要
get_order注文の詳細と現在のステータス必要
get_sms認証コードを、届きしだい取得必要

そのほうが扱いやすいクライアントのために、カタログは3つの読み取り専用リソースとしても公開して います:catalog://servicescatalog://countriescatalog://pairs

一連の流れはどのようになりますか?

最初から最後まで5回の呼び出しです。外の世界を待つ工程は一つだけ、ネットワークによるチャージの 承認です。

  1. create_account — フレーズが返ります。保存してください。アカウントへ戻る唯一の 道であり、再設定はできません。
  2. topup — 通貨と金額を指定すると、アドレス、送金すべき正確な金額、期限が返ります。 エージェントのウォレットから送金してください。
  3. topup_status — チャージが残高に反映されるまで問い合わせます。
  4. buy_number — サービスと国を指定します。残高が引き落とされ、番号がすぐに発行され ます。購入ごとのアドレスも、二度目の待ち時間もありません。
  5. get_sms — コードが届くまで問い合わせます。注文の期限までに届かなければ、代金は 自動的に残高へ戻ります。

チャージは一度、購入は何度でも。1回のチャージで残高が許すだけの番号を賄えるため、承認を待つのは セッションで最初の購入だけです。

エージェントに何を伝えるべきですか?

  • フレーズは復旧できません。生成したのに保存しなかったエージェントは、残高ごと捨てたことになりま す。
  • チャージはネットワークの承認後に反映され、それは即時ではありません。成功を前提とせず、 topup_status を問い合わせてください。
  • 請求に示された通貨とネットワークのみを送ってください。誤ったネットワークへの送金は回復できま せん。
  • 届いたコードは注文を完了させ、送信先のサービスに拒否された場合でも料金が発生します。 返金条件をご覧ください。
  • 返金はウォレットではなく、OTPDrop の残高へ戻ります。

通常の実装をお書きですか? REST APIのドキュメントに、 エンドポイント、認証、エラーコードを記載しています。