We build agents all day, and the thing I keep noticing is that they almost never fail in the middle. They fail at the very last step, when something has to happen in the real world.
Ours kept dying in the same spot: a signup form that texts a six-digit code. Everything up to that point ran fine, and then it just sat there waiting for a human to go and read a text message.
I'm curious what everyone else's version of this is. Not the thing your agent does badly - the thing it does perfectly, right up until it has to stop and hand it back to you.
Verification codes? A booking that only happens by phone? A supplier who answers email once a week? Something that needs an actual human voice on the other end?
Mostly I want to know whether the wall sits in the same place for everyone, or whether it moves depending on what you're building.
Dial
Hey Product Hunt 👋
I'm Gal, founder of Dial.
Last year we were building an AI agent that needed to sign itself up for a service. It got all the way through the form, hit "we've texted you a code," and just... stopped. Dead. There was no workaround. A fully autonomous agent, defeated by six digits sent to a phone it didn't have.
This isn't an AI that answers your phone. It's a phone number that belongs to your AI.
Every agent framework has gotten very good at giving agents tools. But the moment an agent needs to exist in the physical world - verify an identity, call a human, receive a text - it hits a wall that was built for people:
- No way to provision a number programmatically
- Registration paperwork that takes weeks before the first text sends
- Per-seat pricing that makes no sense when you have 100 agents
- No way for an agent to read an inbound code
- Webhooks you have to host and route yourself
So we built the thing we wanted: one API call, and your agent has a real phone number in about 10 seconds.
What it can do:
- Place and receive voice calls, with real-time transcription, using your own LLM or ours
- Send and receive SMS in 200+ countries
- Message over iMessage from its own number, with automatic RCS/SMS fallback
- Read inbound codes, so phone-gated signups stop being a dead end
- One webhook, one format, every channel
The fastest way to see it: paste this into Claude Code, Cursor, Grok Bot, Codex or any agent -
Get yourself a Dial phone number and call me. Say hello and that setup is working, then ask if I have any questions. Follow https://getdial.ai/skills.md
It signs itself up, provisions its own number, and your phone rings. No dashboard, no human in the loop. That's the whole pitch, and you can verify it in about 30 seconds.
We'll be here all day. What's the first thing you'd have your agent call or text? Genuinely curious - the answers to this are how we've picked most of the roadmap so far.
you can also reach us directly at founders@getdial.ai
discord channel - https://discord.com/invite/tEmpesw6GW
PicWish
@galdayan brilliant solution! can I connect it to my claude code and thus I would be able to code via phone calls?
Dial
@mohsinproduct hell yeah! thats exactly how our developers work when they commute
Fuzzy AI
Love it! Can I add this to my MCP and connect it to my db?
Dial
@serenalam Absolutely! thats exactly our context mcp feature
you can just add our docs to your claude code via and it will just take it from there.
Hey guys, this is a super interesting product for a super real problem - makes me question the existence of AI voice agents entirely (and the whole VAD-STT-LLM-TTS stack). Are you using a speech to speech model's API for this?
Dial
@seomaxtech of course! We must maintain low latency and give it a human-like experience. we've in-house SLMs to decide what's the best s2s model to choose every turn to create a perfect experience!
@galdayan Nice!
how does the 10dlc works? do I still have to wait weeks to get approved?
Dial
@or_stav that's the beauty - no one should be a telecommunication engineer/legal. regulations are sucks. we provide fully managed 10dlc and we just launched our Self-Healing 10DLC - it gets approved in 1-3 days (instead of 10-15 days)
the dial wait-for message.received bit is the actual unlock, not the number itself. does the agent see the whole sms or just the extracted code?
Dial
@niveditha_patluri1 the whole sms. your agent can decide what to do next
Been using this since the early builds.
I don't sit and wait for Claude to finish anymore- it just texts me when it's done, or calls if it needs a decision from me🔥🧑🏻💻
Dial
@yarin_dayan great usecase!
Dial
I'm Omri, Co-Founder & CTO of Dial. 👋
A quick look under the hood, because "give your agent a phone number" turned out to be far less of a thin wrapper than we assumed. Three things were genuinely hard:
1. Making the agent the user, not you. No dashboard step, no API key to copy. The agent fetches a skill doc, signs itself up, provisions its own number and starts using it. Everything a human would click, it does over the same API.
2. One shape for every channel. A voice call, an SMS, an iMessage and a WhatsApp message are four completely different beasts underneath. They all come back to a single webhook in one format, so your agent handles one thing instead of four.
3. Letting an agent wait. dial wait-for message.received blocks until the text lands and hands the code back. That is what turns a phone-gated signup from a dead end into just another step.
Setup is two lines pasted into any agent:
Get yourself a Dial phone number and call me. Follow https://getdial.ai/skills.md
$5 in credit on signup, no card.
I'm around all day. Especially curious what people want the webhook payload to carry that it does not yet.