Remix.run Logo
SMS OTP sessions for AI agents and CI tests(agentsim.dev)
1 points by sha256_Nulled 12 hours ago | 1 comments

Hey HN — I built AgentSIM. It started because I wanted my agents to get through SMS phone verification and kept hitting the same wall: the cheap programmable numbers everyone reaches for (Twilio and friends) are VoIP, and strict services reject VoIP at carrier lookup before they even send the code.

So I went down the rabbit hole of "how do I get a number that passes." The uncomfortable thing I learned: there's no cheap shortcut. Carrier lookup checks whether a number is a real mobile SIM, and programmable numbers — VoIP or the "fixed-line" CPaaS kind — aren't one. Only real SIMs pass, and those are expensive and painful to source at scale. Anyone selling you cheap "numbers that verify anywhere" is either lying or about to get their pool burned.

So I built the honest version instead. AgentSIM gives an agent (or a CI job) an ephemeral programmable US number that receives SMS OTPs over a REST API, SDKs, or an MCP server. It's blunt about where it works: auth you own or control (your own app, Supabase / Auth0 / Firebase test tenants), CI/QA tests, and services that accept programmable numbers. It does not get you past Google, Stripe, WhatsApp, or banks — they gate on carrier type and reject these numbers. I put that in the docs instead of letting you find out after you've wired it in. Real-SIM is the actual fix; it's on the roadmap, not shipped.

Why it's a product and not just a script: testing OTP flows is annoying — you either mock the code (and never exercise real delivery and formatting) or rent a Twilio number monthly and babysit it. AgentSIM is per session: provision, wait for the OTP, get the parsed code back as JSON, release. 10 sessions a month free, then $0.99 each.

A couple of technical notes. Each session leases its own number with its own webhook and reads OTPs only for that session; numbers auto-reclaim on a TTL. When no OTP arrives you get a classified outcome — no_sms, sms_no_otp, phone_rejected, anti_bot_gate — instead of a silent timeout. Adding it as an MCP server in Claude Code / Cursor / Windsurf is one command (in the docs).

It's early and the supported-services map is empirical, so I'd genuinely like to hear where it does and doesn't work for you.

Docs: https://docs.agentsim.dev/quickstart?utm_source=hn&utm_mediu... Repo: https://github.com/agentsimdev/agentsim

12 hours ago | parent [-]
[deleted]