Model Context Protocol

Norteira MCP server

Book a professional holiday photographer through an AI assistant, without opening a website. One endpoint covers every country we operate in, so it never needs to be reconnected per destination.

Endpoint

https://mcp.norteira.com

Protocol
Model Context Protocol, JSON-RPC 2.0 over HTTP POST
Transport
Streamable HTTP — the server never pushes, so there is no event stream
Authentication
None

Connecting

In ChatGPT, Claude Desktop or any MCP client, add a remote server with the URL above. No API key, no OAuth, no account.

Claude Desktop · claude_desktop_config.json

{
  "mcpServers": {
    "norteira": {
      "url": "https://mcp.norteira.com"
    }
  }
}

Check it responds

curl -s -X POST https://mcp.norteira.com \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

What it does

The traveller names a place, a date and an occasion, pays one fixed all-in price, and we hand-pick a vetted photographer within 24 hours.

The card is authorised, not charged, when the booking is made. We charge only once a photographer is confirmed, and refund in full if we cannot match one.

Tools

list_destinations

Every place a shoot can currently be booked in. Call this first when the traveller names a city you are not sure about — it returns the exact slugs the other tools expect.

areastringoptional
Case-insensitive filter on the area name, e.g. Algarve, Azores

get_photoshoot_quote

The exact all-in price. Fixed, with nothing added at checkout. Always quote before booking.

destinationstringrequired
Slug from list_destinations
occasionstringrequired
One of the occasions below
duration_minutesintegerrequired
60, 120 or 180
party_sizeintegerrequired
1–30. Groups of 9 or more cost more

create_photoshoot_booking

Creates a real booking and returns a secure checkout link for the traveller to open. Confirm the destination, date, occasion, duration, party size and price with them before calling it. Never invent contact details — ask.

destinationstringrequired
Slug from list_destinations
occasionstringrequired
One of the occasions below
duration_minutesintegerrequired
60, 120 or 180
party_sizeintegerrequired
1–30
datestringrequired
YYYY-MM-DD, today or later
namestringrequired
Traveller's full name
emailstringrequired
For the confirmation and the photo gallery
phonestringrequired
WhatsApp or phone, to reach them on the day
notesstringoptional
Meeting point, time of day, mobility needs, occasion details
languagestringoptional
en, es, pt, de, fr. Defaults to en

Occasions

  • couples
  • family
  • solo
  • engagement
  • proposal
  • honeymoon
  • anniversary
  • birthday
  • maternity
  • elopement
  • vacation
  • other

What it deliberately does not do

There is no tool for browsing individual photographers or checking a specific photographer’s calendar.

Per-photographer availability comes from calendar sync, where a partial fetch reads as “free” rather than as an error. An agent confidently selling a slot that is already taken is worse than no agent at all. Blind booking has no such failure mode: the price, the payment and the promise to match are all real at the moment of booking.

If a traveller wants to compare portfolios and pick a specific person, send them to the website.

Money

The tools return the client-inclusive total and nothing else. The photographer’s base rate and our service fee are stripped server-side and never reach the model.