Agent Restaurant Reservation API — MPP Grade C
On-chain Activity
Compliance Checks
1 issue
- Missing 402 response declaration on GET /api/search
Paid Operations (8)
GET /api/me dynamic
Returns the authenticated user's profile including whether their Resy account is linked. Identity-only ($0 auth).
- Amount
- map[amount:0 currency:USD mode:fixed]
- Currency
- -
- Method
- Intent
- -
- 402 Declared
- Yes
price: map[amount:0 currency:USD mode:fixed] protocols: [map[mpp:map[currency:0x20C000000000000000000000b9537d11c60E8b50 intent:charge method:tempo]] map[x402:map[]]]
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| userId | query | string | No | Required for API key auth. Omit for wallet auth. |
Response Schema (200)
| Field | Type | Description |
|---|---|---|
| string | - | |
| resy_linked | boolean | - |
| resy_linked_at | string | - |
| user_id | string | - |
POST /api/account dynamic
Create a new user account. With wallet auth, also links the calling wallet to the account. Identity-only ($0 auth).
- Amount
- map[amount:0 currency:USD mode:fixed]
- Currency
- -
- Method
- Intent
- -
- 402 Declared
- Yes
price: map[amount:0 currency:USD mode:fixed] protocols: [map[mpp:map[currency:0x20C000000000000000000000b9537d11c60E8b50 intent:charge method:tempo]] map[x402:map[]]]
Input Schema
| Field | Type | Required | Description |
|---|---|---|---|
| string (email) | Yes | Email address for the account |
Response Schema (200)
| Field | Type | Description |
|---|---|---|
| created | boolean | - |
| string (email) | - | |
| user_id | string (uuid) | - |
POST /api/link-resy dynamic
Two-step OTP flow. Step 1: send { em_address } to request a code. Step 2: send { em_address, code } to verify and link. Identity-only ($0 auth).
- Amount
- map[amount:0 currency:USD mode:fixed]
- Currency
- -
- Method
- Intent
- -
- 402 Declared
- Yes
price: map[amount:0 currency:USD mode:fixed] protocols: [map[mpp:map[currency:0x20C000000000000000000000b9537d11c60E8b50 intent:charge method:tempo]] map[x402:map[]]]
Input Schema
| Field | Type | Required | Description |
|---|---|---|---|
| code | string | No | OTP code from email (omit for step 1) |
| em_address | string (email) | Yes | Resy account email address |
Response Schema (200)
| Field | Type | Description |
|---|---|---|
| message | string | - |
| resy_user_id | integer | - |
| step | string | - |
GET /api/search dynamic
Searches the Resy venue database in a given city and returns the top 5 matches with venue IDs. Results are ranked by geographic proximity to the city center, so passing the correct `city` is important when the user mentions one. Identity-only ($0 auth).
- Amount
- map[amount:0 currency:USD mode:fixed]
- Currency
- -
- Method
- Intent
- -
price: map[amount:0 currency:USD mode:fixed] protocols: [map[mpp:map[currency:0x20C000000000000000000000b9537d11c60E8b50 intent:charge method:tempo]] map[x402:map[]]]
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| query | query | string | Yes | Restaurant name, cuisine, or keyword to search for |
| city | query | string | No | City slug for geo-ranked search. Extract from the user's prompt. Defaults to nyc if omitted. |
Response Schema (200)
| Field | Type | Description |
|---|---|---|
| city | string | Echo of the resolved city slug used for this search. |
| results | array[object] | - |
GET /api/availability dynamic
Returns available reservation slots for a venue on a given day. Response includes venue_name for display. Identity-only ($0 auth).
- Amount
- map[amount:0 currency:USD mode:fixed]
- Currency
- -
- Method
- Intent
- -
- 402 Declared
- Yes
price: map[amount:0 currency:USD mode:fixed] protocols: [map[mpp:map[currency:0x20C000000000000000000000b9537d11c60E8b50 intent:charge method:tempo]] map[x402:map[]]]
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| venue_id | query | string | Yes | Resy venue ID (from /api/search) |
| party_size | query | integer | Yes | Number of guests |
| day | query | string | Yes | Date in YYYY-MM-DD format |
Response Schema (200)
| Field | Type | Description |
|---|---|---|
| day | string | - |
| party_size | integer | - |
| slots | array[object] | - |
| venue_id | string | - |
| venue_name | string | Restaurant name for display |
GET /api/reservations dynamic
Returns the authenticated user's upcoming or past reservations with full venue details (name, address, neighborhood, cuisine, phone) inlined. Requires a linked Resy account. Identity-only ($0 auth).
- Amount
- map[amount:0 currency:USD mode:fixed]
- Currency
- -
- Method
- Intent
- -
- 402 Declared
- Yes
price: map[amount:0 currency:USD mode:fixed] protocols: [map[mpp:map[currency:0x20C000000000000000000000b9537d11c60E8b50 intent:charge method:tempo]] map[x402:map[]]]
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| type | query | string | No | Which reservations to list. Defaults to upcoming. |
| limit | query | integer | No | Max reservations to return (1-50). |
| offset | query | integer | No | Pagination offset. |
Response Schema (200)
| Field | Type | Description |
|---|---|---|
| limit | integer | - |
| offset | integer | - |
| reservations | array[object] | - |
| total | integer | - |
| type | string | - |
POST /api/book dynamic
Book a reservation at the given venue. Requires a linked Resy account. Use a config_id from /api/availability. Costs $0.1 USDC.
- Amount
- map[amount:0.100000 currency:USD mode:fixed]
- Currency
- -
- Method
- Intent
- -
- 402 Declared
- Yes
price: map[amount:0.100000 currency:USD mode:fixed] protocols: [map[mpp:map[currency:0x20C000000000000000000000b9537d11c60E8b50 intent:charge method:tempo]] map[x402:map[]]]
Input Schema
| Field | Type | Required | Description |
|---|---|---|---|
| config_id | string | Yes | Slot config token from /api/availability |
| day | string | Yes | Date in YYYY-MM-DD format |
| party_size | integer | Yes | Number of guests |
| venue_id | string | Yes | Resy venue ID |
Response Schema (200)
| Field | Type | Description |
|---|---|---|
| kind | string | - |
| reservation_id | integer | - |
| resy_token | string | - |
| success | boolean | - |
POST /api/cancel dynamic
Cancels a reservation by resy_token. You MUST first call GET /api/reservations to get the resy_token for the reservation the user wants to cancel. Requires a linked Resy account. Identity-only ($0 auth).
- Amount
- map[amount:0 currency:USD mode:fixed]
- Currency
- -
- Method
- Intent
- -
- 402 Declared
- Yes
price: map[amount:0 currency:USD mode:fixed] protocols: [map[mpp:map[currency:0x20C000000000000000000000b9537d11c60E8b50 intent:charge method:tempo]] map[x402:map[]]]
Input Schema
| Field | Type | Required | Description |
|---|---|---|---|
| resy_token | string | Yes | Reservation token from GET /api/reservations response (field: resy_token) |
Response Schema (200)
| Field | Type | Description |
|---|---|---|
| refund | number | Refund amount in reservation currency |
| success | boolean | - |
Payment Methods
- Methods
- tempo (from challenge)
- Intents
- charge (from challenge)
- Currencies (discovery)
- -
- Currency (challenge)
- USDC.e on Tempo (Tempo)
- Multiple Challenges
- No
Recipients
- 0xC295e19eB630E29a4Dd81f7242E6b51B49486d93
Per-endpoint breakdown
- GET /api/availability
- 0xC295e19eB630E29a4Dd81f7242E6b51B49486d93
- GET /api/me
- 0xC295e19eB630E29a4Dd81f7242E6b51B49486d93
- GET /api/reservations
- 0xC295e19eB630E29a4Dd81f7242E6b51B49486d93
- GET /api/search
- 0xC295e19eB630E29a4Dd81f7242E6b51B49486d93
- POST /api/account
- 0xC295e19eB630E29a4Dd81f7242E6b51B49486d93
- POST /api/link-resy
- 0xC295e19eB630E29a4Dd81f7242E6b51B49486d93
Security
- TLS Version
- TLSv1.3
- Challenge ID Unique
- Yes
- Challenge ID Length
- 43
- Digest Binding
- -
Uptime
- Discovery
- Reachable (1003ms)
- Challenge
- Reachable (220ms)
- Last Checked
Schema Completeness
- Paid Operations
- 8
- With Input Schema
- 4
- With Description
- 8
4 missing schema
- GET /api/me
- GET /api/search
- GET /api/availability
- GET /api/reservations
Documentation
- Homepage
- -
- API Reference
- -
- llms.txt
- -
Discovery
- OpenAPI URL
- https://agentic-reservations.vercel.app/openapi.json
- OpenAPI Version
- 3.1.0
- Service Version
- 1.0.0
- Document Size
- 20772 bytes
- Document Hash
- 3414597d8d85828bd58773bd10d592b0e0a81d7b2c070ddd422976b79f982c2c
Version History (8 snapshots)
- document hash changed (no semantic differences detected)
- document hash changed (no semantic differences detected)
Scan snapshots
| Date | Grade | Score | Response | Status |
|---|---|---|---|---|
| 2026-04-06 | C | 73% | 327ms | Up |
| 2026-04-07 | C | 73% | 489ms | Up |
| 2026-04-08 | C | 73% | 178ms | Up |
| 2026-04-09 | C | 73% | 246ms | Up |
| 2026-04-10 | C | 73% | 424ms | Up |
| 2026-04-11 | C | 73% | 86ms | Up |
| 2026-04-12 | C | 73% | 947ms | Up |
| 2026-04-13 | C | 73% | 842ms | Up |