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

  1. Quick start (curl in 60 seconds)
  2. Authentication
  3. Response envelope
  4. Rate limits
  5. Error codes
  6. Actions
  7. MCP manifest
  8. Connecting AI agents (Claude, ChatGPT, custom)

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:

Exceeding the limit returns 429 with Rate limit exceeded.

Error codes

HTTPWhenAction
400Validation failed (missing field, bad format)Fix the request; the error string says what's wrong.
401Missing, invalid, or revoked Bearer tokenRe-issue the key from the dashboard.
402Action not available on the account's planUpgrade plan, or call a different action.
404Resource (event, guest, action) not foundCheck the path / ID.
429Rate limit exceededBack off; respect the X-RateLimit-Reset header.
500Unexpected server errorSafe 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.