AisleReply API & MCP documentation
A REST + MCP-style API for AI agents that need to read, write or act on a wedding's RSVP data on a couple's behalf. Bearer-token authenticated, multi-tenant, rate limited. Built for couples' assistants, wedding planners' agents, and venues' automation tools.
On this page
Quick start
Generate an API key from your dashboard, then:
curl -H "Authorization: Bearer sk_live_..." \
https://aislereply.com/api/mcp/ping
{
"success": true,
"data": {
"account_id": "acc_01HZ...",
"account_email": "couple@example.com",
"server_time": "2026-06-22T09:30:00Z",
"version": "1.0.0"
},
"error": ""
}
That's the entire flow - bearer header, JSON response, success tells you what happened.
Authentication
All requests require an Authorization: Bearer <api_key> header.
API keys are issued per account from
aislereply.com/dashboard/api-keys. Each key is
scoped to a single AisleReply account; the server enforces multi-tenant isolation
so a key cannot read data outside its account.
Keys can be revoked at any time. Revoked keys return 401 with
API key has been revoked.
Response envelope
Every response is wrapped in:
{
"success": true | false,
"data": {...} | null,
"error": "" | "human readable message"
}
On a successful call, data holds the action-specific payload and
error is an empty string. On failure, data is
null and error describes the problem. The HTTP status
code also reflects the outcome (200 / 400 / 401 / 404 / 429 / 500).
Rate limits
60 requests per minute per API key, with a burst ceiling of 10 requests per second. Three headers are exposed on every response:
X-RateLimit-LimitX-RateLimit-RemainingX-RateLimit-Reset
Exceeding the limit returns 429 with Rate limit exceeded.
Error codes
| HTTP | When | Action |
|---|---|---|
| 400 | Validation failed (missing field, bad format) | Fix the request; the error string says what's wrong. |
| 401 | Missing, invalid, or revoked Bearer token | Re-issue the key from the dashboard. |
| 402 | Action not available on the account's plan | Upgrade plan, or call a different action. |
| 404 | Resource (event, guest, action) not found | Check the path / ID. |
| 429 | Rate limit exceeded | Back off; respect the X-RateLimit-Reset header. |
| 500 | Unexpected server error | Safe to retry once. Persistent 500s: email andrew@validusmedia.com. |
Actions
Full machine-readable schema:
/api/mcp/schema.json.
Summary below; click each action for a worked example.
ping
GET/api/mcp/ping
Health check; returns the authenticated account's identity and the server time. Useful for verifying credentials before destructive calls.
get_event_details
GET/api/mcp/event
Returns the wedding event's name, date, venue, sub-events, languages used and guest count. Without event_id the primary (most recent) event on the account is returned.
curl -H "Authorization: Bearer sk_live_..." \
"https://aislereply.com/api/mcp/event"
{
"success": true,
"data": {
"event_id": "evt_01HZABCDE",
"couple_names": "David & Sarah",
"wedding_date": "2026-09-12",
"venue": "The Old Barn, Cotswolds",
"primary_language": "en-GB",
"languages_used": ["en-GB", "pl-PL", "ur-PK"],
"events": [
{"event_name": "Ceremony", "start_iso": "2026-09-12T13:00:00+01:00", "location": "The Old Barn"},
{"event_name": "Evening Reception", "start_iso": "2026-09-12T18:00:00+01:00", "location": "The Old Barn"}
],
"guest_count": 142,
"plan": "standard"
},
"error": ""
}
update_event_details
PATCH/api/mcp/event
Patch any of couple_names, wedding_date, venue. Returns the full updated event.
get_rsvp_summary
GET/api/mcp/rsvp/summary
The single most useful call for an agent. Returns confirmed / declined / pending counts, per-sub-event breakdown, plus-one total and dietary tally.
{
"success": true,
"data": {
"total_invited": 142,
"confirmed": 98,
"declined": 6,
"pending": 38,
"plus_ones": 22,
"by_event": [
{"event_name": "Ceremony", "confirmed": 92, "declined": 6, "pending": 44},
{"event_name": "Evening Reception", "confirmed": 124, "declined": 4, "pending": 14}
],
"dietary": {"vegetarian": 12, "vegan": 4, "gluten_free": 3},
"last_updated_iso": "2026-06-22T09:14:00Z"
},
"error": ""
}
list_guests
GET/api/mcp/guests
Paginated list of guests with filters: status (confirmed / declined / pending / all), sub_event, has_dietary, page, page_size.
add_guest
POST/api/mcp/guests
Add a new guest. Phone must be E.164 (+447700900111). The assistant will message them on the next batch.
curl -X POST \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"name": "Priya Shah",
"phone": "+447700900222",
"plus_one_allowed": true,
"sub_events": ["Ceremony","Evening Reception"]
}' \
https://aislereply.com/api/mcp/guests
update_rsvp_status
PATCH/api/mcp/guests/{guest_id}/rsvp
Manually override a guest's RSVP for one or more sub-events (use when the answer came outside WhatsApp).
curl -X PATCH \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{"responses": {"Ceremony": "confirmed"}, "note":"Confirmed by phone"}' \
https://aislereply.com/api/mcp/guests/g_01HZ.../rsvp
get_dietary_requirements
GET/api/mcp/dietary
Caterer-shaped report; confirmed guests grouped by dietary requirement, optionally filtered to a specific sub-event.
send_rsvp_reminderStandard / Premium
POST/api/mcp/reminders
Queues polite WhatsApp reminders. Curfewed to 09:00-20:00 UK time. Same guest cannot be reminded more than once per 48 hours. Returns count queued vs skipped.
curl -X POST \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{"target":"pending","tone":"gentle"}' \
https://aislereply.com/api/mcp/reminders
list_recent_messages
GET/api/mcp/messages
Recent inbound/outbound WhatsApp messages with English translations attached.
get_caterer_export
GET/api/mcp/exports/caterer
Caterer-ready confirmed-attendee list. format=json (default) or format=xlsx (returns a signed download URL valid for 60 minutes).
MCP manifest
Machine-readable manifest at
/.well-known/mcp.json.
Agent platforms that discover MCP-style endpoints automatically (Glama, MCP Hub,
future Anthropic / OpenAI agent stores) read this file to learn what AisleReply
can do.
Connecting AI agents
Claude (Anthropic)
Use the Claude tool-use
API. Define each AisleReply action as a tool whose input schema matches the
parameters documented above, and forward calls to https://aislereply.com/api/mcp/<path>
with the user's API key in the Authorization header.
ChatGPT (OpenAI)
Use the OpenAI Custom GPT Actions
with the schema at /api/mcp/schema.json.
Choose "API key" authentication and set the header to
Authorization: Bearer ....
Custom agents
Any HTTP client works. The schema at
/api/mcp/schema.json is a
complete JSON Schema document - paste it into your preferred OpenAPI / function-calling
converter.
Questions? Email andrew@validusmedia.com. AisleReply is operated by Validus Media Ltd, registered in England and Wales, company number 08013355.