Skip to content

Byway MCP

The full tool surface Byway ships over the Model Context Protocol — endpoint, authentication, every tool's schema, and worked examples. Reads live from https://www.byway.world/api/mcp.

v1.7.110 tools2 require sign-in

Endpoint

https://www.byway.world/api/mcp

Streamable HTTP, stateless — POST only, a plain GET answers 405 by design.

Add it to a client

Claude Desktop, Cursor and most MCP hosts accept a remote server block like this:

{
  "mcpServers": {
    "byway": {
      "url": "https://www.byway.world/api/mcp"
    }
  }
}

List the tools with curl

curl -s -X POST https://www.byway.world/api/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

Public tools

No sign-in. Anonymous calls are metered per IP address; over the limit a tool returns a clean rate_limited error rather than a stack trace.

OAuth-gated tools

Reach a paid provider (routing, planning) and are metered per user, not per IP. A call without a Bearer token receives a 401 with a WWW-Authenticate header that most hosts use to trigger sign-in automatically.

/.well-known/oauth-protected-resource/api/mcp
/.well-known/oauth-authorization-server

search_byways

Search scenic byways

PublicRead-only
ParamTypeRequiredDescription
querystringNoName text to match
statestringNoTwo-letter US state code
countrystringNoISO-2 country (US or a regional territory); a non-US value searches regional routes instead of the federal roster
limitinteger (1–25)NoRows to return
curl -s -X POST https://www.byway.world/api/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_byways","arguments":{"state":"UT","limit":3}}}'

Example result: Found 3 of 33 byways: - Bear Lake Scenic Byway (UT) — https://www.byway.world/byways/bear-lake-scenic-byway?via=mcp - ...

get_byway

Get byway details

PublicRead-only
ParamTypeRequiredDescription
slugstringYesByway slug from search_byways
curl -s -X POST https://www.byway.world/api/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_byway","arguments":{"slug":"bicentennial-highway"}}}'

Example result: Bicentennial Highway — UT, 90.39 mi. 3 scenic lookouts on route. https://www.byway.world/byways/bicentennial-highway?via=mcp

search_lookouts

Search scenic lookouts

PublicRead-only
ParamTypeRequiredDescription
bywaystringNoByway slug — provide this or state
statestringNoTwo-letter US state code — provide this or byway
limitinteger (1–50)NoRows to return
curl -s -X POST https://www.byway.world/api/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_lookouts","arguments":{"byway":"bicentennial-highway"}}}'

Example result: Found 3 lookouts: - Hite Overlook on Bicentennial Highway — https://www.byway.world/lookouts/hite-overlook-a8315eac?via=mcp

get_itinerary

Get road-trip itinerary

PublicRead-only
ParamTypeRequiredDescription
slugstringYesItinerary slug
curl -s -X POST https://www.byway.world/api/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_itinerary","arguments":{"slug":"pacific-coast-highway"}}}'

Example result: Pacific Coast Highway — California, Oregon. 94 waypoints. https://www.byway.world/itineraries/pacific-coast-highway?via=mcp

plan_drive

Plan a byway

OAuthWrite
ParamTypeRequiredDescription
originstringYesStarting point (city or place name)
destinationstringYesWhere the drive ends (city or place name)
budget_mininteger (30–960, default 240)NoTotal minutes for the whole trip, driving plus stops — set well above the direct drive time to leave room for stops
depart_atstring (ISO 8601 with offset, ≤14 days out)NoDeparture time — defaults to now; hours and weather verdicts are real only inside the forecast horizon
interestsstring[]NoTaste categories to weight stops
pacestring (leisurely | balanced | efficient)NoTrip pace
savebooleanNoSave the trip to the connected Byway account
curl -s -X POST https://www.byway.world/api/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -H 'authorization: Bearer <your-oauth-token>' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"plan_drive","arguments":{"origin":"Bozeman, MT","destination":"West Yellowstone, MT","budget_min":300,"pace":"balanced"}}}'

Example result: A real routed plan: verified stops, honest timing, official scenic byways. Requires a connected Byway account (OAuth sign-in) — see Authentication below.

search_places

Search atlas places

PublicRead-only
ParamTypeRequiredDescription
kindenum (place kind)NoPlace type to filter on — see /places for the full kind list
statestring (length 2)NoTwo-letter US state code; requires kind
namestringNoPlace name text
latnumber (-90…90)NoLatitude to search near
lonnumber (-180…180)NoLongitude to search near
radiusMinumberNoMiles around lat/lon
limitintegerNoRows to return
curl -s -X POST https://www.byway.world/api/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_places","arguments":{"kind":"waterfall","state":"OR","limit":3}}}'

Example result: Found 3 places: More exist than are shown. - Multnomah Falls (OR) — 165 m — https://www.byway.world/places/waterfalls/multnomah-falls-fa5bcb0c?via=mcp - ...

get_place

Get place details

PublicRead-only
ParamTypeRequiredDescription
urlstringNoThe place's byway.world /places URL — provide this, or kind + slug
kindenum (place kind)NoPlace type
slugstringNoPlace slug, ending in the row's 8-hex id
curl -s -X POST https://www.byway.world/api/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_place","arguments":{"url":"https://www.byway.world/places/waterfalls/multnomah-falls-fa5bcb0c"}}}'

Example result: Multnomah Falls (OR) — waterfall in the Columbia Gorge in Multnomah County, Oregon, United States. https://www.byway.world/places/waterfalls/multnomah-falls-fa5bcb0c?via=mcp Records: https://en.wikipedia.org/wiki/Multnomah_Falls · https://www.wikidata.org/wiki/Q37319

places_on_byway

Places on a byway

PublicRead-only
ParamTypeRequiredDescription
bywaystringYesByway slug from search_byways
kindenum (place kind)NoPlace type to filter on
bandMinumberNoMiles either side of the route
limitintegerNoRows to return
curl -s -X POST https://www.byway.world/api/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"places_on_byway","arguments":{"byway":"historic-columbia-river","kind":"waterfall"}}}'

Example result: 3 atlas places along Historic Columbia River (3 on the road itself). More exist than are shown. - Bridal Veil Falls (OR) — 0.01 mi, on the byway — 36 m — https://www.byway.world/places/waterfalls/bridal-veil-falls-d52a674c?via=mcp

search_destinations

Search destinations

PublicRead-only
ParamTypeRequiredDescription
qstring (min length 2)NoCity name text to match — provide this or state
statestring (two letters)NoTwo-letter US state code — provide this or q
limitinteger (1–25, default 10)NoRows to return
curl -s -X POST https://www.byway.world/api/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_destinations","arguments":{"q":"Bozeman"}}}'

Example result: Found 1 destinations: - Bozeman, Montana — 4 byways · 2 national parks · 6 campgrounds within 30 mi — https://www.byway.world/destinations/bozeman-montana?via=mcp Byways within 30 mi of Bozeman: Paradise Valley Scenic Byway (12 mi) · ...

places_along_route

Places along a route

OAuthRead-only
ParamTypeRequiredDescription
originstringYesWhere the drive starts (city or place name)
destinationstringYesWhere it ends (city or place name)
kindenum (place kind)NoPlace type to filter on
bandMinumberNoMiles either side of the corridor
limitintegerNoRows to return
curl -s -X POST https://www.byway.world/api/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -H 'authorization: Bearer <your-oauth-token>' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"places_along_route","arguments":{"origin":"Bozeman, MT","destination":"West Yellowstone, MT","kind":"waterfall"}}}'

Example result: 3 atlas places along Bozeman, Montana to West Yellowstone, Montana (2 on the road itself). - ...

v1.7.12026-08-26

Server description now names the products an assistant is calling — Byway MCP, Byway Engine and Byway Atlas. No tool-surface change: the fingerprint is unchanged, and the bump exists only because the registry is keyed on version, so text at a live version cannot land.

v1.7.02026-08-18

Every tool now advertises whether it needs sign-in (securitySchemes), and a gated tool refused for an expired token returns a challenge a host can act on instead of a dead-end error. No tool added or removed.

v1.6.02026-08-18

Server description refreshed for the category flip. No tool-surface change.

v1.5.02026-08-17

search_destinations ships (brief 31) — 10 tools.

v1.4.02026-08-16

search_byways reports total/truncated on a capped page. plan_drive gains budget_min and depart_at. Places carry verdictDetail, headliner, and an operational block (openingHours, condition, dwellMin).

v1.3.02026-08-11

The atlas ships over MCP: search_places, get_place, places_on_byway, and the OAuth-gated places_along_route. Every place result carries a citable url; the two corridor tools report distanceFromRouteMi. 9 tools.

v1.2.02026-08-10

Every lookout result carries a citable url to its own byway.world page.

v1.1.02026-08-03

Tool-surface vocabulary normalized to one noun.

v1.0.02026-07-11

Initial publish — search_byways, get_byway, search_lookouts, get_itinerary.

This page is generated from the live tool registry — every tool, schema and version above reads directly from the code that runs at https://www.byway.world/api/mcp. Looking for the consumer pitch instead? See Byway in ChatGPT & Claude.