
TourScanner
io.github.TourScanner-orgPublished by GitHub account TourScanner-orgv1.0.0Updated Oct 30, 2026
Search, check availability and book tours and activities worldwide.
Overview
Remote TourScanner MCP server that lets an assistant search tours and activities worldwide, check live availability, and start bookings via Stripe checkout…
- What you can do
- Search a catalog of about a million tours, activities and attractions across 14 providers, with facets and paging
- Check live availability slots and prices for a specific activity and date
- Retrieve ticket variants and booking questions for an activity
- Create a hold that returns a Stripe checkout link, and check booking status
- Report per activity whether it is bookable directly or must be handed off to a partner
- When to use it
- Useful when an assistant should help travellers find things to do in a city, compare live prices and slots, and prepare a booking with a payment link. Also handy for travel or itinerary tools that need supplier-side availability rather than static catalog data.
- Requirements
- A TourScanner API key sent in the X-API-Key header on every request; keys are issued by hand after emailing the provider. The server is a remote endpoint, so no local runtime or package is needed. Network access to the TourScanner host is required.
Installation
In SourceWeft
- Open TourScanner in the dashboard and add it to a workspace.
- Connect X-API-Key credentials. They are stored privately and never shown on public pages.
- Enable the server for the chats that should use its tools.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Use with an agent
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/io.github.TourScanner-org%2Ftourscanner/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Other MCP clients
Add this to your client's mcpServers config.
{
"mcpServers": {
"tourscanner": {
"type": "http",
"url": "https://tourscanner.ai/api/mcp",
"headers": {
"X-API-Key": "<YOUR_API_KEY>"
}
}
}
}README
TourScanner AI guide
How to use the TourScanner API: search tours and activities, check live availability, and book them. It also covers the MCP server, if you want an AI agent to do the same thing.
It's a REST API (JSON over HTTPS, OpenAPI 3.1) for tours, activities and attractions worldwide. The catalog is about a million activities from 14 providers, behind one set of endpoints. This repo is the practical side of the docs: what to call, in what order, and the mistakes that cost people an afternoon.
Reference docs live at tourscanner.ai/docs, and the machine-readable spec is at tourscanner.ai/openapi.json.
Get a key
Keys are issued by hand. Email [email protected] with what you're building and which cities matter to you. Send it in the X-API-Key header on every request. Without one you get a 401.
First request
You get back activities, plus total, page and some facets. Each activity has an id, a name, a rating, and a price of the form { "currency": "EUR", "price": 5400 }.
Prices are integers in minor units, so 5400 is 54.00. This applies to the min_price and max_price filters too.
The booking flow
Five calls, in this order:
GET /api/search/activitiesto find something.POST /api/availability/slotsfor the real slots and prices on a date.POST /api/booking/optionsfor the ticket variants and booking questions.POST /api/booking/holdreserves the slot and returns a StripecheckoutUrl. The card is authorized, not charged.POST /api/booking/confirmafter the customer pays. This confirms with the supplier and captures the payment.
Details and request bodies are in docs/booking.md. A runnable version of steps 1 to 4 is in examples/node/book.mjs.
Examples
Node, Python, Ruby, Go and curl. Each does the same three things: search, check availability, and run the booking flow up to the Stripe link. None needs a package beyond the language's standard library (Node 18 or newer).
Run the Go ones from examples/go. The curl scripts are in examples/curl.
They read your key from TOURSCANNER_API_KEY. Set TOURSCANNER_BASE_URL to point them at a different host. Run book without OPTION_CODE first: it prints the options and stops, so you can pick a code. On the production host a full book run places a real hold and creates a real Stripe checkout.
Missing your language? The API is plain JSON over HTTPS, so any HTTP client works. The OpenAPI spec above will generate a client for most languages.
For AI agents
There's a remote MCP server at https://tourscanner.ai/api/mcp. It exposes 12 tools covering search, availability, checkout links, and booking status. Setup for Claude, Cursor, VS Code and others is in docs/mcp.md.
Things that trip people up
- Cents, not euros. Every price field is in minor units.
productOptionCodecomes frombooking/options. The hold fails without it, and the codes differ per activity.adultsis required inpassengers, and it has to be at least 1.- Phone numbers need the country code, like
+442079460000. Anything else is rejected. - Stripe sessions expire after 30 minutes. After that the hold is released.
- Check availability right before booking. Search results come from our catalog, and slots come live from the supplier. They can disagree.
- Not every provider books in-house. For the others you hand the traveller off to the partner instead. Adding
providers=2,3,7to a search limits it to the ones we book directly. The MCPget_activitytool reports this per activity asbookableByUs. - Rate limits return
429with aRetry-Afterheader. Honor it.
Environments
The production host places real holds and real Stripe checkouts. If you want a sandbox on provider test rails, ask for one when you get your key.
License
MIT for the code in this repo. The catalog content you get from the API is covered by the terms.
Source: README.md at commit 534e327
Tools
0Version history
1- v1.0.0LatestOct 30, 2026
Score
85% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 daysRequired25 pts
- Auth declaredRequired10 pts
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts