Texting for your application, with the compliance built in
- Sent by the application at 9:12 PM. Held by quiet hours; delivered at 8:00 AM.
-
8:00 AM
Blue Sky Rentals: Your kayak is ready at dock 4. Reply STOP to opt out, HELP for help.
-
8:04 AM
STOP
-
8:04 AM
You have successfully been unsubscribed. You will not receive any more messages from this number. Reply START to resubscribe.
First sandbox send, under five minutes
Three equivalent doors to the same service: pick one. Each shows the call that produces the thread, exactly as the recipient's phone shows it.
The pombity CLI (Node 20+, zero dependencies) is on npm: npx -y pombity --help or npm install -g pombity.
export POMBITY_API_KEY=ak_test_your_key
pombity send --to +14785550123 \
--body "Blue Sky Rentals: Your kayak \
is ready at dock 4. Reply STOP to opt \
out, HELP for help." \
--json
Then read the delivery report:
pombity report --id <messageId> --json
Auth is the X-Api-Key header on every request.
API=https://api.pombity.com
curl -s $API/v1/messages \
-H "X-Api-Key: ak_test_your_key" \
-H "Content-Type: application/json" \
-d '{"to": ["+14785550123"],
"body": "Blue Sky Rentals: Your kayak is ready at dock 4. Reply STOP to opt out, HELP for help."}'
The response carries one message per recipient with an id. Read its delivery report:
curl -s $API/v1/messages/<id> \
-H "X-Api-Key: ak_test_your_key"
The MCP server (Streamable HTTP) exposes eight typed tools: send_text, send_email, preview_message, check_consent, get_delivery_report, get_usage, request_verified_destination, confirm_verified_destination. Bearer token = the same API key.
{ "mcpServers": { "pombity": {
"type": "http",
"url": "https://mcp.pombity.com/mcp",
"headers": {
"Authorization":
"Bearer ak_test_your_key" }
} } }
With Claude Code: save that as mcp.json and run claude --mcp-config mcp.json, then ask it to send the text above and read the delivery report.
On a sandbox key the message routes to an in-process simulator and comes back with a realistic Delivered receipt ("deliveryDetail": "sandbox", "sandbox": true): zero carrier traffic, every rule enforced. You can even simulate inbound texts (keyword opt-ins, YES, STOP, HELP) with POST /v1/sandbox/inbound to exercise the whole opt-in flow.
Pombity is an SMS and email API whose differentiator is the compliance layer already running server-side: a consent ledger, STOP and HELP handling, quiet hours, verified destinations, quotas, and a sandbox that enforces every rule without creating carrier traffic. You write the send; the service keeps it lawful. Formal name: Aric Communication Service.
Agents start here: llms.txt, the
discovery document,
SKILL.md (agent instructions), the
OpenAPI document, and the
MCP endpoint at https://mcp.pombity.com/mcp.
Before you start: a key in hand
Everything above assumes you hold an API key. Sandbox keys are prefixed ak_test_ and live keys ak_live_; a key is shown exactly once when minted, and only a hash is stored. Self-serve sign-up is opening during launch. Until it does, contact Aric Software & Design for a key. Start with the sandbox key: every compliance rule runs identically there, and nothing you send reaches a carrier.
The API answers at https://api.pombity.com. The discovery document always carries the current hostname.
Going live: verify a destination
On the free tier, live texts deliver only to numbers the key holder has proved ownership of with a 6-digit code. That is the anti-abuse design, not a limitation to work around.
# texts a 6-digit code to the phone
pombity verify request \
--phone +14785550123 --json
pombity verify confirm \
--phone +14785550123 \
--code 123456 --json
Confirmation writes provable consent to the ledger (self-verified), and a send to your own verified number is never held by quiet hours. US and Canada numbers only; up to 3 verified destinations on a free tenant.
What the service will refuse, and why
Consent, STOP, quiet hours, quotas, velocity, and the content screen are enforced server-side; a refusal is the rule working, and every refusal carries a machine-readable code. Read the compliance layer before writing retry logic, and the API reference for every endpoint. Pricing: free during launch.