B
StablePhone
Preview responses and set spending limits for this service through use.mpp.land
Free budget controls, response samples, and reliability routing.
Compliance Checks
All paid ops declare 402 response
MUST
10pt
All x-payment-info valid
MUST
10pt
Challenge has Cache-Control: no-store
MUST
5pt
Challenge digest on POST
SHOULD
3pt
Challenge has expires
SHOULD
3pt
Challenge has Problem Details
SHOULD
2pt
Challenge has required params
MUST
5pt
Challenge has WWW-Authenticate
MUST
5pt
Challenge returns 402
MUST
10pt
Correct Content-Type
MUST
5pt
Has Cache-Control on discovery
SHOULD
5pt
Has input schemas
SHOULD
5pt
Has llms.txt
SHOULD
5pt
Has /openapi.json at root
MUST
10pt
Has required top-level fields
MUST
10pt
Served over HTTPS
MUST
10pt
Uses standard categories
SHOULD
2pt
1 issue
- POST endpoint challenge missing digest parameter (SHOULD per spec)
Paid Operations (4)
POST /api/call dynamic
Make an AI phone call ($0.54). Send a phone number and task, get back a call_id to track status. Returns 403 if the number is on the Do-Not-Call (DNC) list — do not retry DNC numbers.
- Amount
- map[amount:0.54 currency:USD mode:fixed]
- Currency
- -
- Method
- Intent
- -
- 402 Declared
- Yes
Non-standard x-payment-info fields:
price: map[amount:0.54 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[currency:0x20c0000000000000000000000000000000000001 intent:charge method:tempo]]]
Input Schema
| Field | Type | Required | Description |
|---|---|---|---|
| first_sentence | string | No | |
| from | string | No | |
| max_duration | integer | No | |
| metadata | object | No | |
| model | string | No |
enum: base, turbo |
| phone_number | string | Yes | |
| record | boolean | No | |
| task | string | Yes | |
| transfer_phone_number | string | No | |
| voice | string | No | |
| voicemail_action | string | No |
enum: hangup, leave_message, ignore |
| voicemail_message | string | No | |
| wait_for_greeting | boolean | No |
Response Schema (200)
| Field | Type | Description |
|---|---|---|
| call_id | string | - |
| message | string | - |
| success | boolean | - |
POST /api/number dynamic
Buy a phone number ($20.00 via x402). Use it as outbound caller ID.
- Amount
- map[amount:20.00 currency:USD mode:fixed]
- Currency
- -
- Method
- Intent
- -
- 402 Declared
- Yes
Non-standard x-payment-info fields:
price: map[amount:20.00 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[currency:0x20c0000000000000000000000000000000000001 intent:charge method:tempo]]]
Input Schema
| Field | Type | Required | Description |
|---|---|---|---|
| area_code | string | No | |
| country_code | string | No |
enum: US, CA default: US
|
Response Schema (200)
| Field | Type | Description |
|---|---|---|
| expires_at | string | - |
| phone_number | string | - |
| success | boolean | - |
POST /api/number/topup dynamic
Extend a phone number by 30 days from current expiry ($15.00 via x402). Top-ups stack. Anyone can top up any number.
- Amount
- map[amount:15.00 currency:USD mode:fixed]
- Currency
- -
- Method
- Intent
- -
- 402 Declared
- Yes
Non-standard x-payment-info fields:
price: map[amount:15.00 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[currency:0x20c0000000000000000000000000000000000001 intent:charge method:tempo]]]
Input Schema
| Field | Type | Required | Description |
|---|---|---|---|
| phone_number | string | Yes |
Response Schema (200)
| Field | Type | Description |
|---|---|---|
| expires_at | string | - |
| phone_number | string | - |
| success | boolean | - |
POST /api/lookup dynamic
Check if a phone number has iMessage/FaceTime ($0.05 via x402). Returns a token to poll for async results.
- Amount
- map[amount:0.05 currency:USD mode:fixed]
- Currency
- -
- Method
- Intent
- -
- 402 Declared
- Yes
Non-standard x-payment-info fields:
price: map[amount:0.05 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[currency:0x20c0000000000000000000000000000000000001 intent:charge method:tempo]]]
Input Schema
| Field | Type | Required | Description |
|---|---|---|---|
| phone_number | string | Yes |
Response Schema (200)
| Field | Type | Description |
|---|---|---|
| token | string | - |
Payment Methods
- Methods
- tempo (from challenge)
- Intents
- charge (from challenge)
- Currencies (discovery)
- -
- Currency (challenge)
- USDC.e on Tempo (Tempo)
- Multiple Challenges
- No
Recipients
- 0xD219dB8179Bb9C1899eF87f39eebA9D1070c6801
Per-endpoint breakdown
- POST /api/call
- 0xD219dB8179Bb9C1899eF87f39eebA9D1070c6801
- POST /api/lookup
- 0xD219dB8179Bb9C1899eF87f39eebA9D1070c6801
- POST /api/number
- 0xD219dB8179Bb9C1899eF87f39eebA9D1070c6801
- POST /api/number/topup
- 0xD219dB8179Bb9C1899eF87f39eebA9D1070c6801
Security
- TLS Version
- TLSv1.3
- Challenge ID Unique
- Yes
- Challenge ID Length
- 43
- Digest Binding
- -
Uptime
- Discovery
- Reachable (2110ms)
- Challenge
- Reachable (387ms)
- Last Checked
Schema Completeness
- Paid Operations
- 4
- With Input Schema
- 4
- With Description
- 4
Documentation
- Homepage
- -
- API Reference
- -
- llms.txt
- -
Discovery
- OpenAPI URL
- https://stablephone.dev/openapi.json
- OpenAPI Version
- 3.1.0
- Service Version
- 1.0.0
- Document Size
- 16712 bytes
- Document Hash
- bf62d4e01ea31ccfcf58be1f0bbe952d4f2b36cdaa0e9b567733238e475b10e4
Version History (2 snapshots)
- document hash changed (no semantic differences detected)
- document hash changed (no semantic differences detected)
- document hash changed (no semantic differences detected)
- document hash changed (no semantic differences detected)
- price changed on POST /api/call: None → {'mode': 'fixed', 'currency': 'USD', 'amount': '0.54'}
- price changed on POST /api/lookup: None → {'mode': 'fixed', 'currency': 'USD', 'amount': '0.05'}
- price changed on POST /api/number: None → {'mode': 'fixed', 'currency': 'USD', 'amount': '20.00'}
- price changed on POST /api/number/topup: None → {'mode': 'fixed', 'currency': 'USD', 'amount': '15.00'}
Scan snapshots
| Date | Grade | Score | Response | Status |
|---|---|---|---|---|
| 2026-04-06 | B | 79% | 322ms | Up |
| 2026-04-07 | B | 79% | 2456ms | Up |