verifywith

How to give Claude a phone number for verification codes

Claude can’t receive a text by itself. Connect an MCP server that rents a phone number and reads the texts that arrive, and Claude can then get a number, wait for the verification code and use it. With VerifyWith, add https://api.verifywith.io/mcp as a custom connector in Claude, with one command in Claude Code, or in Cursor’s mcp.json. You approve it once in your browser and set how much it may spend.

Checked by VerifyWith on

A computer monitor cabled to a phone

Claude on the web or in the desktop app

  1. Open Connectors

    In Claude, open Customize, then Connectors.

  2. Add a custom connector

    Choose Add custom connector and paste https://api.verifywith.io/mcp as its address.

  3. Sign in to VerifyWith

    Claude opens our website. Sign in with an email code, a passkey, Google or Apple.

  4. Choose what Claude may do and spend

    The page names Claude and confirms the domain the request came from. For Claude to buy numbers, choose “Get and extend numbers”, then fill in the two limits: the most it may spend on one number, and in any 24 hours. The page shows which saved card pays. Press Allow and you are sent back to Claude.

  5. Ask for the number

    For example: “Get a US number for a day, put it in the sign-up form I have open, and tell me the code when it arrives.”

Claude Code

  1. Add the server

    In a terminal:

    claude mcp add --transport http verifywith https://api.verifywith.io/mcp
  2. Sign in

    Run /mcp inside Claude Code, or claude mcp login verifywith in the terminal. Your browser opens the same sign-in and consent page as above; it says you will go back to “an app on this computer”.

  3. Or use an API key instead

    For scripts or a machine without a browser, create a key on the Developers page (choose Full access to let it buy, and set its limits there), then add the server with the key as a header:

    claude mcp add --transport http verifywith https://api.verifywith.io/mcp \
      --header "Authorization: Bearer sk_..."

Cursor

Add the server to ~/.cursor/mcp.json to have it in every project, or to .cursor/mcp.json for one project:

{
  "mcpServers": {
    "verifywith": {
      "url": "https://api.verifywith.io/mcp"
    }
  }
}

Then sign in from Cursor’s MCP settings. Cursor registers itself rather than proving who it is, so the consent page warns that the app gave its own name. That warning is expected here: continue only if you just asked Cursor to connect from this computer.

What happens when Claude gets a code

Behind your one request, Claude calls the server’s tools in this order.

  1. list_prices

    Claude reads the four prices and what this connection may do and spend. It costs nothing and buys nothing.

  2. buy_number

    Claude buys a number, usually for a day ($3.99) when the code is for a one-time sign-up, and can label it with the site’s name. The price is held on your card, not taken, until the first text arrives or 24 hours pass. Claude gets back the number with the +1 and the ten digits most US forms want.

  3. The number goes into the site

    The server doesn’t fill in forms. If Claude can use a browser in this session, it types the number in and asks the site to send the code; otherwise it gives you the number to type. More on that in phone verification for browser agents.

  4. wait_for_code

    Claude waits for the text. Each call returns as soon as a text arrives, with the code pulled out, or after at most 55 seconds with “no text yet”, and then Claude calls again. A text that arrives between calls is kept. After about three minutes with nothing, the server tells Claude to ask the site to resend.

  5. The code is used

    Claude types the code where you asked, or tells you it. If the site later sends another code to the same number, another wait_for_code returns only texts newer than the last one.

A rubber stamp beside a sheet of paper
You decide what the agent may do, and purchases stay inside the limits you set.

What you approve, and when

  • Once, when you connect. Nothing is connected until you press Allow on the consent page, and Claude never gets more than the level and the two limits you chose there.
  • Not for each purchase. Inside your limits, Claude buys on your saved card without asking you again. A purchase that would go over a limit is refused, nothing is charged, and Claude is told which limit stopped it.
  • When your bank asks. If your bank wants you to confirm a payment, Claude gives you a link to open in your browser; it lasts about an hour. When you say you’ve confirmed, Claude repeats the same request, which completes that purchase and never charges twice. With no saved card, you get a link to add one.
  • Whenever you like, afterwards. On the Developers page you can change the limits or disconnect Claude. Either applies from Claude’s next request.

Every tool and limit is listed in the SMS MCP server reference.

What it can’t do

  • The number receives texts only. Claude can’t text back from it, and a site that offers to phone you with the code can’t reach it.
  • The numbers are US (+1) only, and Claude can’t choose the area code.
  • Some sites refuse numbers like these and never send the text. If a resend brings nothing, Claude should tell you; a number that has received no texts can be cancelled within 24 hours, but not in its first 5 minutes.
  • It is for your own accounts. Asking Claude to verify accounts for other people, or many accounts at once, is against our acceptable use policy.

Questions people ask

Can Claude Desktop receive SMS messages?
Not by itself. Claude has no phone number of its own. Once you add an MCP server that rents a number and reads its texts, Claude can receive a text on that number and read the code in it.
Will Claude spend money without asking me?
Only within the two limits you set when you connected it: the most on one number and the most in any 24 hours. You can lower them or disconnect Claude on the Developers page at any time.
How long does Claude wait for a verification code?
Each wait lasts up to 55 seconds and Claude repeats it until the text arrives. If nothing comes after about three minutes, it asks the site to send the code again.
Can I connect Claude Code with an API key instead of signing in?
Yes. Create a key on the Developers page and add it as a header: claude mcp add --transport http verifywith https://api.verifywith.io/mcp --header "Authorization: Bearer sk_...".
Does this work in ChatGPT too?
ChatGPT connects to the same address as a custom MCP server with OAuth, and you approve it on the same consent page. The tools and limits are the same.