Numbers
Phone numbers,
finally as objects.
A scoped, searchable inventory of DIDs. Find a line by NPA, NXX, or local calling area. Hold it, attach a policy, hand it to an agent — all in the same audited path.
At a glance
Inventory that behaves like data, not a spreadsheet.
Search
NPA · NXX · LCA
Real BulkVS filters, real availability, real holds.
Hold
Atomic
Reserve a DID before you assign it, so it doesn't disappear.
Bind
Agent or human
Every line points to a real subject with a real scope.
Port
Documented
Port in or out without lock-in. Carriers swap at the adapter.
Search
Find a line
by what it does.
Search by area code, exchange, local calling area, type, or carrier. Every search runs against a scoped session and writes a usage event. The same query works from the dashboard, the CLI, and any MCP-aware agent.
- NPA, NXX, LCA filters
- Toll-free and local
- Per-call usage event
- Mock by default
HTTP
GET /api/numbers/search
?areaCode=512
&exchangeCode=555
&localCallingArea=true
&limit=25CLI
dials numbers search \
--area-code 512 \
--exchange-code 555 \
--local-calling-area \
--limit 25MCP
{
"tool": "dials.numbers.search",
"arguments": {
"areaCode": "512",
"exchangeCode": "555",
"localCallingArea": true,
"limit": 25
}
}Hold and bind
Reserved.
Routed. Recorded.
Numbers in Dials carry a scope, a route, and a recording policy. Bind a DID to a seat and you've defined how it rings, who answers, and what the ledger sees.
- Reservation atomicity
- Scope-bound assignment
- Per-DID recording policy
- Per-action audit
+1 (512) 555 0100Reception
+1 (415) 555 0144Sales
+1 (646) 555 0188Voicemail
+1 (312) 555 0142Outbound
+1 (213) 555 0177Held
Pick up a line.
Search the mock inventory, hold a number, and bind it to an agent seat — all without spending a cent on a real DID.