docs · sandbox

Give your assistant bookable offers.

One API over MCP or REST. Search hotels and experiences, show your user an offer with its tracked link and disclosure, and follow your share of each confirmed booking.

Quickstart

Same key, same services. Base URL https://smesh.io.

MCP · Streamable HTTP · /mcp

{
  "mcpServers": {
    "smesh": {
      "type": "http",
      "url": "https://smesh.io/mcp",
      "headers": { "Authorization": "Bearer <test key>" }
    }
  }
}

REST · JSON · /v1

# every request
Authorization: Bearer <test key>

POST /v1/offers/search
GET  /v1/offers/:id
POST /v1/links
GET  /v1/conversions?status=…
GET  /v1/earnings

Five tools

ToolWhat it doesREST
search_offersFind bookable hotel stays or experiences. Ranked offers with a price, an estimated commission, a tracked book_url and a disclosure. One vertical per call.POST /v1/offers/search
get_offerThe stored snapshot of an offer you were shown, with its current book_url.GET /v1/offers/:id
create_tracked_linkA fresh tracked book_url for an offer you were shown, for example when the previous link expired.POST /v1/links
get_conversionsBookings attributed to your links, with status and your share.GET /v1/conversions
get_earningsYour share by currency: pending, approved, payable, reversed. Notional in the sandbox.GET /v1/earnings

Request & response

Amounts are in minor units. The response is abbreviated to one offer.

POST /v1/offers/search
{
  "vertical": "experience",
  "destination": "Amsterdam",
  "date_from": "2026-11-14",
  "date_to": "2026-11-14",
  "party": { "adults": 2 },
  "end_user_ref": "u_7f3a"   // optional, opaque id only
}
200 OK
{
  "query_id": "q_…",
  "sandbox": true,
  "offers": [
    {
      "offer_id": "off_…",
      "title": "Sample experience",
      "price": { "amount_minor": 12800, "currency": "EUR", "indicative": true },
      "commission": { "rate_bps": 800, "est_commission_minor": 1024, "est_agent_share_minor": 614 },
      "book_url": "https://smesh.io/c/…",
      "disclosure": {
        "is_affiliate_link": true,
        "commission_influences_ranking": false,
        "ranking_parameters": ["rating", "price"],
        "text": "Affiliate link: the router and your AI agent may earn a commission if you book. …"
      }
    }
  ]
}

Earnings

Each conversion moves through these states in an append-only ledger.

pending
Booked through your link. Your share is an estimate.
approved
The supplier confirmed it after the stay or tour.
payable
After the 14-day holdback, once the partner has paid us.
reversed
Cancelled or not confirmed: the commission is clawed back.

No personal data

Send only the documented fields. Names, email addresses or phone numbers are rejected with pii_rejected; unknown fields with invalid_request. To tell your users apart, pass an opaque end_user_ref.

Test keys on request

Sandbox data only. Earnings are notional.

Request a test key