Verification for AI agents. Captchas, SMS codes and emails, solved.
One MCP server and REST API that gets your agents through signups, logins and checkouts without a human. One key, one balance.
Pay only for what clears. No subscription.
- Phone number
- Captcha
- SMS code
- Email link
Create your account
Welcome to Example
Your account is confirmed.
✻ signup-agent
cwd: ~/projects/signups
mcp: clearance-rest connected
> Create an account on example.com and confirm it
⏺The form needs a phone number. Renting a temporary one.
⏺clearance-rest - rent_number (MCP)(type: "temporary", country: "NL")
⎿Rented +31 6 1234 4821, refunded if no SMS arrives
⏺There is a Turnstile captcha on the form. Solving it.
⏺clearance-rest - resolve_captcha (MCP)(type: "turnstile", website_url: "example.com/signup")
⎿Solved in 6.2s, token returned
⏺Form submitted. Waiting for the SMS code.
⏺clearance-rest - wait_for_sms (MCP)(number: "+31612344821")
⎿Received, code 482913
⏺Code accepted. Waiting for the confirmation email.
⏺clearance-rest - wait_for_email (MCP)(email_account: "[email protected]", email_sender: "[email protected]")
⎿Received, confirmation link extracted
Working…(esc to interrupt)
⏺Done. The account is created and the email is confirmed. Four checkpoints cleared.
? for shortcuts
import { createClient } from "@clearance-rest/sdk"; const client = createClient({ apiKey: process.env.CLEARANCE_REST_API_KEY});
const rental = await client.numbers.rent({ type: "temporary", country: "NL", service: "ot",});await page.fill("#phone", rental.item.phone_number);// → "+31 6 1234 4821", refunded if no SMS arrives
const captcha = await client.captchas.resolve({ type: "turnstile", website_url: "https://example.com/signup", website_key: "0x4AAAAAAA…",});await page.fill("[name=cf-turnstile-response]", captcha.solution.token);// → status: "solved" in 6.2s
const sms = await client.numbers.waitForSms({ number: rental.item.phone_number, codeRegex: "(\\d{6})",});await page.fill("#code", sms.code);await page.click("text=Create account");// → sms.code = "482913"
const email = await client.emails.wait({ emailAccount: "[email protected]", codeRegex: "(https://example\\.com/confirm/\\S+)",});await page.goto(email.code);// → link opened, account confirmed
- Claude
- Cursor
- MCP clients
- Node.js
- PHP
- cURL
One API for every checkpoint. Everything a signup, login or checkout asks an automated client to prove, behind the same key, balance and error format.
Receive SMS codes. Temporary numbers by country, monthly lines or your own SIM. No SMS, no charge.
Confirm emails. Connect Gmail, Outlook or your own domains. Your agent gets the code or link back.
Stay in control. Choose the tools each agent may use, cap its spend and get signed webhooks for every event.
Live in three steps.
No accounts with other providers and no proxies to manage. Setup takes a few minutes.
- 1
Create an account
Sign up and top up your balance from $10. There is no subscription and unused balance is refundable.
Get your API key - 2
Connect your agent
Add the MCP server to Claude, Cursor or any other MCP client, or call the REST API with your key.
claude mcp add --transport http clearance-rest https://mcp.clearance.rest/mcp - 3
Let it run
Your agent calls the tools when it meets a checkpoint. Every call and charge shows up in the console.
Read the MCP guide
Built for developers, too.
Typed SDKs for Node.js and PHP, plain REST for everything else, and an OpenAPI description you can generate from.
# Command-line agents
claude mcp add --transport http clearance-rest https://mcp.clearance.rest/mcp
# Claude: Settings → Connectors → Add custom connector
# Cursor: { "mcpServers": { "clearance-rest": { "url": "https://mcp.clearance.rest/mcp" } } }import { createClient } from "@clearance-rest/sdk";
const client = createClient({
apiKey: process.env.CLEARANCE_REST_API_KEY
});
const rental = await client.numbers.rent({ type: "temporary", country: "NL", service: "tg" });
const sms = await client.numbers.waitForSms({ number: rental.item.phone_number });
console.log(sms.code);use ClearanceRest\Client;
$client = new Client([
'api_key' => getenv('CLEARANCE_REST_API_KEY'),
]);
$result = $client->captchas->resolve('turnstile', [
'website_url' => 'https://example.com/signup',
'website_key' => '0x4AAA…',
]);
echo $result['solution']['token'];curl "https://api.clearance.rest/emails/wait?email_account=agent%40inbox.dev&email_sender=noreply%40example.com" \
-H "X-API-Key: cr_live_…" \
-H "X-Service-Timeout: 60000"Pay only for what clears.
One prepaid USD balance for every service. No subscription, no seats, and unused balance is refundable.
- MCP server and REST API
- Node.js and PHP SDKs
- Signed webhooks
- Spend caps per agent
- Teams with roles
Questions, answered.
Something else? Email [email protected].
Do I need accounts with other providers?
No. One clearance.rest account and balance covers captchas, phone numbers and inboxes.
What does it cost to start?
Top up from $10. There is no subscription; you pay per solved captcha, rented number or delivered email.
What if a captcha fails or no SMS arrives?
Failed and timed-out captchas cost nothing. A temporary number that gets no SMS is refunded to your balance when it expires.
How does an agent connect?
Add https://mcp.clearance.rest/mcp as a remote MCP server and sign in, or paste a token from the console.
Which clients and languages work?
Any MCP client, including Claude and Cursor. For code, use the Node.js or PHP SDK or plain REST from any language.
Can I limit what an agent spends?
Yes. Set daily and monthly caps per project and per MCP connection, and allow only the tools it needs.
What happens to unused balance?
The account owner can ask for a refund of unused balance from the console. Balance already spent is not refunded.
Ship agents that finish the job.
Create an account, top up and connect your first agent in a few minutes.
- No subscription
- Start with $10
- Failed attempts are free