Add Lanesurf to your app
- Claude
- ChatGPT
- Claude Code
- Cursor and others
In Claude (web, desktop or Cowork), on Free, Pro, Max and Ultra plans:
- Open Customize → Connectors, choose + Add, then Add custom connector.
- Name it
Lanesurf, pastehttps://agent.lanesurf.com/mcpas the URL and choose Continue. Keep the sign-in settings Claude detects (OAuth, no client ID or API key needed) and choose Add. - Choose Connect. Claude opens the Lanesurf sign-in page; sign in or sign up, then allow access.
- In a chat, open + → Connectors, turn on Lanesurf, and ask, for example, “Post a load on Lanesurf”.
/mcp needs credentials: an API key or an OAuth token. A request without either gets 401 with a
WWW-Authenticate header pointing at /.well-known/oauth-protected-resource/mcp, which is how an app
finds the sign-in page.Keys
- No key:
/mcpanswers401. An app that supports MCP sign-in opens the Lanesurf sign-in page, where an existing customer signs in and a new carrier or brokerage signs up. An agent without MCP sign-in signs up over plain HTTP (POST /v1/signup, no key needed), then connects with the key. See Carrier sign up and Sign up your brokerage. - Broker key:
whoami, the load tools and the setup tools. - Carrier key:
whoamiand the carrier tools. Carriers under review (needs_review) getverification_requiredon search, load details, matches, outreach and bids. - A wrong key gets HTTP
401; another role’s tool getswrong_role.
Tools
Tool inputs follow the REST fields in the API reference, with the same limits. Numbers such
as
limit or rate may also be sent as strings ("1250", "$1,250"); one that isn’t a number is refused
with invalid_request, never ignored. Where a tool differs from its route:
- Path and header values are arguments:
load_id,truck_id,session_id,idempotency_key. list_truckstakesinclude_inactive(truealso lists removed and expired trucks) instead of?active=false.remove_truckandremove_lanereturn{"removed": true, "truck_id": "…"}(orlane_id) instead of an empty204.
Errors
A failed tool returns an error result whose text is the same JSON body as the REST API ({"error": "...", "code": "...", "next_step": "...", "request_id": "..."}), so branch on code exactly as in Errors. Some failures come
back as HTTP errors on the request instead, before any tool runs:
A successful result carries its request id in
_meta["lanesurf/request_id"]. Quote it to
support@lanesurf.com when something keeps failing. See Request IDs.
Rules the server gives the agent
- Confirm with the person before
accept_offer,decline_offer,mark_covered,edit_load,pause_load,resume_load,reopen_load,delete_loadorbid_on_load.resume_loadandreopen_loadrestart carrier outreach. - To change, pause, cancel or reopen a load, use those tools. Never post it again or mark it covered instead.
post_loadneedsidempotency_key: a new UUID per load, sent unchanged on any retry of that load.accept_offerneeds theratethe person agreed to.offer_changed: the carrier changed its rate (current_rate); ask the person again before accepting.load_rejected: don’t send the same load again; check its stops and dates with the person.existing_customer: the brokerage already uses Lanesurf. Don’t sign up; their Lanesurf admin gives them access.- When something keeps failing, tell the person to quote the
request_idto support@lanesurf.com. - Never reveal the API key, and never show broker contact details to a carrier. (
search_loads,get_carrier_loadandtruck_matcheshide broker identity;my_outreachnames the brokerage that contacted the carrier, with no contacts.) stalledon a load means nobody has been contacted (or a new brokerage’s outreach starts after Lanesurf’s review): tell the personstatus_reasonand slow down or stop polling.- Follow
next_stepon signup,post_loadandget_loadanswers.