Connect an AI assistant to Route 45
Hook up ChatGPT or Claude and just ask for what you need — add a prospect, check this month's revenue, or read the latest checklist. Takes about two minutes.
…Paste this address into ChatGPT or Claude. You'll sign in with your Route 45 admin login, and the assistant can then help with your pipeline, Pre-Trip Checklist submissions, and revenue.
- MCP endpoint mounted at /mcp
- MCP server answers a protocol handshake
- OAuth resource metadata published
- Authorization server reachable
- You are signed in as admin
This runs entirely in your browser. Reachability confirms the MCP endpoint is mounted; the session check confirms you're signed in so a connecting assistant can be granted access as you.
Connect it
Pick your assistant and follow the walkthrough one step at a time — it remembers where you left off. Prefer the whole checklist at a glance? It's right below.
About 3 minutes. You'll need Developer mode switched on once.
Turn on Developer mode
The short version
ChatGPT
- 1Open chatgpt.com/#settings/Connectors/Advanced and turn on Developer mode (read the risk notice shown there).
- 2In the chat box, open the “+” menu and turn on Developer mode.
- 3Click Add sources, then Connect more.
- 4Name it “Route 45” and paste the address above.
- 5Ask ChatGPT to use Route 45.
Claude
- 1Open claude.ai/customize/connectors.
- 2Name it “Route 45” and paste the address above.
- 3Turn the connector on from the chat box, then ask Claude to use Route 45.
Claude Code
- 1Run this in a terminal:
… - 2Start Claude Code and run
/mcpto confirm Route 45 is connected — sign in from that menu when prompted. - 3Ask Claude Code to use Route 45.
Other MCP clients
- 1Open the assistant's MCP server or custom connector settings.
- 2Create a new remote MCP server connection.
- 3Name it “Route 45” and paste the address above.
- 4Finish the sign-in and approval prompts.
- 5Turn the connection on, then ask the assistant to use Route 45.
Authorization status
Your assistant connects as you. This shows whether that authorization is live right now, and when you'll need to sign in again.
Checking your authorization…
- ACCOUNT
- Signed out
- SESSION EXPIRES
- —
- TIME LEFT
- —
An assistant can only reach Route 45 while you have an account to authorize it. Sign in here, then re-run the connect flow in ChatGPT or Claude.
Reconnect when: you change your password, you sign out everywhere, or your assistant reports a 401 / “needs authorization” error.
Connection status by assistant
One row per assistant, showing whether it's connected, still syncing its checks, or needs you to re-authorize.
Your assistants
Assistants hold their own tokens, so Route 45 can't read their screens. This board combines what it can see — the endpoint and your authorization — with the connections you've marked, so you know which ones to go fix.
- ChatGPTSyncingCustom connector in Developer mode
Checking the Route 45 endpoint and your sign-in…
- ClaudeSyncingCustom connector on claude.ai
Checking the Route 45 endpoint and your sign-in…
- Claude CodeSyncingInstalled with claude mcp add
Checking the Route 45 endpoint and your sign-in…
- Other assistantSyncingAny remote-MCP client
Checking the Route 45 endpoint and your sign-in…
Endpoint: checking… · Authorization: signed out or expired
Confirm you're authorized
Route 45 is a private connector. The first time an assistant uses it, you'll be sent through a sign-in and approval screen. Here's exactly what that looks like, and how to prove the connection is authorized.
What you'll see when you authorize
- 1Click Connect (ChatGPT) or Enable (Claude) on the Route 45 connector. A browser window opens on
route45.ai. - 2If you're not signed in, the Route 45 admin login appears. Sign in with your admin email and password.
- 3An approval screen appears: “Connect ChatGPT (or Claude) to your account.” Confirm the app name shown is the one you're connecting.
- 4Click Approve. The window closes and returns you to ChatGPT or Claude.
- 5The connector now shows as Connected / Enabled rather than “Requires authentication”.
Prove it actually worked
- 1Run the status checker above — all four rows should be green.
- 2In a new chat, ask: “Using Route 45, list my prospects.”
- 3A real answer (even “no prospects yet”) means the token is valid and acting as you.
- 4An “authorization required”, “401”, or “sign in to continue” reply means the approval didn't stick — reconnect and watch for the approval screen.
- 5Optional: add a test prospect by name, then confirm it appears in your admin dashboard. Same data, same account.
If authorization fails
- No approval screen appeared. Your browser likely blocked the popup. Allow popups for chatgpt.com or claude.ai and reconnect.
- You landed on the Route 45 home page instead of the approval screen. Sign in first at route45.ai/auth, leave that tab open, then start the connection again.
- The assistant keeps asking you to authenticate. Remove the connector entirely, then add it back with the address above — a stale half-finished approval can't be repaired in place.
- Tools return “not authenticated”. Your session expired. Sign in again at route45.ai/auth and reconnect the assistant.
Approval is per person. Anyone you connect grants access only to what their own Route 45 login can see — the assistant never gets more access than you have.
What your assistant can do
Route 45 exposes six tools to a connected assistant. Each one acts as your signed-in admin, so it can only see and change what you can. Here's the full reference — what each tool does, what it asks for, and what it hands back.
list_prospectsList prospectsREAD-ONLYIDEMPOTENTBrowse the Route 45 sales pipeline, newest changes first. Optionally narrow it to one stage like Lead, Retainer, or Won.
| Field | Type | Description |
|---|---|---|
| stage | string? | Pipeline stage filter (Lead, Discovery Booked, Retainer, Won, Lost, …). |
| limit | integer | Max rows returned (1–200, default 50). |
prospects — array of prospect rows (id, name, business, email, phone, stage, monthly_amount, notes, timestamps).
create_prospectCreate prospectWRITEAdd a new prospect to the pipeline. Stage defaults to 'Lead' if you don't set one.
| Field | Type | Description |
|---|---|---|
| name * | string | Prospect / contact name. |
| business | string? | Business name. |
| email? | Contact email. | |
| phone | string? | Contact phone. |
| stage | string? | Pipeline stage (defaults to 'Lead'). |
| notes | string? | Free-text notes. |
| monthly_amount | number | Monthly retainer amount in USD, if applicable. |
prospect — the newly created prospect row.
update_prospect_stageUpdate prospect stageWRITEIDEMPOTENTMove a prospect to a different pipeline stage and optionally set its monthly retainer amount.
| Field | Type | Description |
|---|---|---|
| id * | uuid | Prospect id. |
| stage * | string | New pipeline stage. |
| monthly_amount | number | Set / update the monthly retainer amount (USD). |
prospect — the updated prospect row.
list_intake_submissionsList intake submissionsREAD-ONLYIDEMPOTENTRead Pre-Trip Checklist submissions from prospective clients, newest first.
| Field | Type | Description |
|---|---|---|
| limit | integer | Max rows returned (1–200, default 25). |
submissions — array of intake rows (name, email, business, team size, revenue range, time sinks, tools, AI experience, etc.).
log_revenueLog revenue entryWRITERecord a Route 45 revenue entry — an Assessment, Implementation, or Retainer payment.
| Field | Type | Description |
|---|---|---|
| client * | string | Client / business name. |
| type * | enum | One of: Assessment · Implementation · Retainer. |
| amount * | number | Amount in USD (must be greater than 0). |
| entry_date | string? | ISO date YYYY-MM-DD (defaults to today). |
| notes | string? | Free-text notes. |
entry — the newly recorded revenue entry.
revenue_summaryRevenue summaryREAD-ONLYIDEMPOTENTSummarize Route 45 revenue: month-to-date collected, monthly recurring revenue from Retainer prospects, and recent entries.
| Field | Type | Description |
|---|---|---|
| recent_limit | integer | How many recent entries to include (1–50, default 10). |
summary — { month_start, collected_mtd, mrr, recent_entries[] }.
Try these requests
Copy a ready-made JSON-RPC call for each common task, or just say the plain-English version to your connected assistant. Every request runs as your signed-in admin.
List your prospects
list_prospectsShow the current pipeline, newest changes first. Filter by stage if you like.
Or just ask your assistant in plain English: "Show me my prospects in the Lead stage."
REQUEST
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_prospects",
"arguments": {
"stage": "Lead",
"limit": 50
}
}
}EXAMPLE RESPONSE
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": "{\"prospects\":[{\"id\":\"8f2c1d64-77a1-4f2b-9d0e-3a51b9c7e410\",\"name\":\"Maria Alvarez\",\"business\":\"Alvarez Auto Detailing\",\"email\":\"maria@alvarezdetail.com\",\"phone\":\"(480) 555-0142\",\"stage\":\"Lead\",\"monthly_amount\":null,\"notes\":\"Heard about us from the Chandler Chamber event.\",\"created_at\":\"2026-07-24T16:12:08.442Z\",\"updated_at\":\"2026-07-24T16:12:08.442Z\"}]}"
}
],
"structuredContent": {
"prospects": [
{
"id": "8f2c1d64-77a1-4f2b-9d0e-3a51b9c7e410",
"name": "Maria Alvarez",
"business": "Alvarez Auto Detailing",
"email": "maria@alvarezdetail.com",
"phone": "(480) 555-0142",
"stage": "Lead",
"monthly_amount": null,
"notes": "Heard about us from the Chandler Chamber event.",
"created_at": "2026-07-24T16:12:08.442Z",
"updated_at": "2026-07-24T16:12:08.442Z"
}
]
}
}
}Create a new prospect
create_prospectAdd someone to the top of the pipeline. Stage defaults to 'Lead'.
Or just ask your assistant in plain English: "Add Maria Alvarez from Alvarez Auto Detailing to the pipeline."
REQUEST
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_prospect",
"arguments": {
"name": "Maria Alvarez",
"business": "Alvarez Auto Detailing",
"email": "maria@alvarezdetail.com",
"phone": "(480) 555-0142",
"notes": "Heard about us from the Chandler Chamber event."
}
}
}EXAMPLE RESPONSE
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": "{\"prospect\":{\"id\":\"8f2c1d64-77a1-4f2b-9d0e-3a51b9c7e410\",\"name\":\"Maria Alvarez\",\"business\":\"Alvarez Auto Detailing\",\"email\":\"maria@alvarezdetail.com\",\"phone\":\"(480) 555-0142\",\"stage\":\"Lead\",\"monthly_amount\":null,\"notes\":\"Heard about us from the Chandler Chamber event.\",\"created_at\":\"2026-07-24T16:12:08.442Z\",\"updated_at\":\"2026-07-24T16:12:08.442Z\"}}"
}
],
"structuredContent": {
"prospect": {
"id": "8f2c1d64-77a1-4f2b-9d0e-3a51b9c7e410",
"name": "Maria Alvarez",
"business": "Alvarez Auto Detailing",
"email": "maria@alvarezdetail.com",
"phone": "(480) 555-0142",
"stage": "Lead",
"monthly_amount": null,
"notes": "Heard about us from the Chandler Chamber event.",
"created_at": "2026-07-24T16:12:08.442Z",
"updated_at": "2026-07-24T16:12:08.442Z"
}
}
}
}Move a prospect down the road
update_prospect_stageChange a prospect's stage — and set the monthly amount when they sign on for Cruise Control.
Or just ask your assistant in plain English: "Move Maria Alvarez to Retainer at $1,500 a month."
REQUEST
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "update_prospect_stage",
"arguments": {
"id": "8f2c1d64-77a1-4f2b-9d0e-3a51b9c7e410",
"stage": "Retainer",
"monthly_amount": 1500
}
}
}EXAMPLE RESPONSE
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": "{\"prospect\":{\"id\":\"8f2c1d64-77a1-4f2b-9d0e-3a51b9c7e410\",\"name\":\"Maria Alvarez\",\"business\":\"Alvarez Auto Detailing\",\"stage\":\"Retainer\",\"monthly_amount\":1500,\"updated_at\":\"2026-07-27T14:03:51.019Z\"}}"
}
],
"structuredContent": {
"prospect": {
"id": "8f2c1d64-77a1-4f2b-9d0e-3a51b9c7e410",
"name": "Maria Alvarez",
"business": "Alvarez Auto Detailing",
"stage": "Retainer",
"monthly_amount": 1500,
"updated_at": "2026-07-27T14:03:51.019Z"
}
}
}
}Read Pre-Trip Checklist submissions
list_intake_submissionsPull the latest intake form submissions from the /intake page.
Or just ask your assistant in plain English: "Show me the newest intake submissions."
REQUEST
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_intake_submissions",
"arguments": {
"limit": 25
}
}
}EXAMPLE RESPONSE
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": "{\"submissions\":[{\"id\":\"c41b7e90-2f55-4a8c-8b31-6de2a0f5c777\",\"name\":\"Dale Whitmore\",\"email\":\"dale@whitmoreplumbing.com\",\"business_one_liner\":\"Family plumbing shop serving the East Valley since 1998.\",\"team_size\":\"6-10\",\"revenue_range\":\"$1M–$2.5M\",\"time_sinks\":\"Quoting, scheduling callbacks, chasing invoices\",\"dreaded_task\":\"Retyping job details into two systems\",\"current_tools\":\"QuickBooks, Jobber, Gmail\",\"ai_experience\":\"Tried ChatGPT a couple times\",\"five_hours_back\":\"Actually take Saturdays off\",\"hourly_value\":\"$150\",\"created_at\":\"2026-07-26T19:41:02.118Z\"}]}"
}
],
"structuredContent": {
"submissions": [
{
"id": "c41b7e90-2f55-4a8c-8b31-6de2a0f5c777",
"name": "Dale Whitmore",
"email": "dale@whitmoreplumbing.com",
"business_one_liner": "Family plumbing shop serving the East Valley since 1998.",
"team_size": "6-10",
"revenue_range": "$1M–$2.5M",
"time_sinks": "Quoting, scheduling callbacks, chasing invoices",
"dreaded_task": "Retyping job details into two systems",
"current_tools": "QuickBooks, Jobber, Gmail",
"ai_experience": "Tried ChatGPT a couple times",
"five_hours_back": "Actually take Saturdays off",
"hourly_value": "$150",
"created_at": "2026-07-26T19:41:02.118Z"
}
]
}
}
}Log a revenue entry
log_revenueRecord a paid Assessment, Implementation, or monthly Retainer.
Or just ask your assistant in plain English: "Log a $999 Assessment from Alvarez Auto Detailing today."
REQUEST
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "log_revenue",
"arguments": {
"client": "Alvarez Auto Detailing",
"type": "Assessment",
"amount": 999,
"entry_date": "2026-07-27",
"notes": "Route Map — paid on discovery call."
}
}
}EXAMPLE RESPONSE
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": "{\"entry\":{\"id\":\"1d7f4a22-9c08-49e6-a0a4-b7f2c3d51e88\",\"client\":\"Alvarez Auto Detailing\",\"type\":\"Assessment\",\"amount\":999,\"entry_date\":\"2026-07-27\",\"notes\":\"Route Map — paid on discovery call.\",\"created_at\":\"2026-07-27T14:07:22.501Z\"}}"
}
],
"structuredContent": {
"entry": {
"id": "1d7f4a22-9c08-49e6-a0a4-b7f2c3d51e88",
"client": "Alvarez Auto Detailing",
"type": "Assessment",
"amount": 999,
"entry_date": "2026-07-27",
"notes": "Route Map — paid on discovery call.",
"created_at": "2026-07-27T14:07:22.501Z"
}
}
}
}Check the numbers
revenue_summaryMonth-to-date collected, recurring revenue from retainer clients, and the latest entries.
Or just ask your assistant in plain English: "How much have we collected this month, and what's our MRR?"
REQUEST
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "revenue_summary",
"arguments": {
"recent_limit": 10
}
}
}EXAMPLE RESPONSE
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": "{\"summary\":{\"month_start\":\"2026-07-01\",\"collected_mtd\":4497,\"mrr\":4500,\"recent_entries\":[{\"id\":\"1d7f4a22-9c08-49e6-a0a4-b7f2c3d51e88\",\"client\":\"Alvarez Auto Detailing\",\"type\":\"Assessment\",\"amount\":999,\"entry_date\":\"2026-07-27\"},{\"id\":\"b90e5c17-3a44-4d21-9f6b-0c8e7a1d2f33\",\"client\":\"Whitmore Plumbing\",\"type\":\"Retainer\",\"amount\":1500,\"entry_date\":\"2026-07-05\"}]}}"
}
],
"structuredContent": {
"summary": {
"month_start": "2026-07-01",
"collected_mtd": 4497,
"mrr": 4500,
"recent_entries": [
{
"id": "1d7f4a22-9c08-49e6-a0a4-b7f2c3d51e88",
"client": "Alvarez Auto Detailing",
"type": "Assessment",
"amount": 999,
"entry_date": "2026-07-27"
},
{
"id": "b90e5c17-3a44-4d21-9f6b-0c8e7a1d2f33",
"client": "Whitmore Plumbing",
"type": "Retainer",
"amount": 1500,
"entry_date": "2026-07-05"
}
]
}
}
}
}Call it from your own code
Wiring Route 45 into a script or another app? Here's a ready-to-run curl command and a dependency-free Node.js snippet for every tool — filled in with realistic values.
BEFORE YOU RUN THESE
Route 45 requires an OAuth access token. Set it once in your shell as ROUTE45_TOKEN — your assistant gets one automatically when you connect, and for scripts you can copy the token your browser session holds after signing in to the dashboard. Never commit it.
List prospects
Browse the Route 45 sales pipeline, newest changes first. Optionally narrow it to one stage like Lead, Retainer, or Won.
curl -X POST https://route45.ai/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer $ROUTE45_TOKEN" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_prospects",
"arguments": {
"stage": "Lead",
"limit": 50
}
}
}'Create prospect
Add a new prospect to the pipeline. Stage defaults to 'Lead' if you don't set one.
curl -X POST https://route45.ai/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer $ROUTE45_TOKEN" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_prospect",
"arguments": {
"name": "Maria Alvarez",
"business": "Alvarez Auto Detailing",
"email": "maria@alvarezdetail.com",
"phone": "(480) 555-0142",
"notes": "Heard about us from the Chandler Chamber event."
}
}
}'Update prospect stage
Move a prospect to a different pipeline stage and optionally set its monthly retainer amount.
curl -X POST https://route45.ai/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer $ROUTE45_TOKEN" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "update_prospect_stage",
"arguments": {
"id": "8f2c1d64-77a1-4f2b-9d0e-3a51b9c7e410",
"stage": "Retainer",
"monthly_amount": 1500
}
}
}'List intake submissions
Read Pre-Trip Checklist submissions from prospective clients, newest first.
curl -X POST https://route45.ai/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer $ROUTE45_TOKEN" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_intake_submissions",
"arguments": {
"limit": 25
}
}
}'Log revenue entry
Record a Route 45 revenue entry — an Assessment, Implementation, or Retainer payment.
curl -X POST https://route45.ai/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer $ROUTE45_TOKEN" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "log_revenue",
"arguments": {
"client": "Alvarez Auto Detailing",
"type": "Assessment",
"amount": 999,
"entry_date": "2026-07-27",
"notes": "Route Map Assessment — paid in full."
}
}
}'Revenue summary
Summarize Route 45 revenue: month-to-date collected, monthly recurring revenue from Retainer prospects, and recent entries.
curl -X POST https://route45.ai/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer $ROUTE45_TOKEN" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "revenue_summary",
"arguments": {
"recent_limit": 10
}
}
}'Refresh after we update the app
Assistants remember what Route 45 could do the day you connected. After an update, refresh the connection so it picks up the latest.
ChatGPT
- 1Open ChatGPT's app preferences and pick Route 45 under Enabled apps.
- 2Next to Information, click Refresh.
- 3If the address above changed, paste the new one.
- 4Start a new chat and ask ChatGPT to use Route 45.
Claude
- 1Open the Connectors page and select Route 45.
- 2Refresh or update the connector's tools.
- 3If the address above changed, paste the new one.
- 4Ask Claude to use Route 45.
Claude Code
- 1Start a new Claude Code session — it picks up the latest Route 45 tools when it connects.
- 2If the address above changed, run
claude mcp remove route45, then run the install command again with the new address. - 3Ask Claude Code to use Route 45.
Other MCP clients
- 1Open the assistant's MCP server or connector settings and select Route 45.
- 2Refresh the tool list, reload the server, or reconnect it.
- 3If the address above changed, paste the new one.
- 4Start a new chat and ask the assistant to use Route 45.
Test it before you trust it
A quick self-check: confirm the server is advertising its tools, then validate the exact fields you plan to send before an assistant sends them for you.
Tool availability
Not checked yet
Check your inputs
Pick a tool, fill in what you'd send, and we'll validate it against the same rules the server uses — then hand you a ready-to-paste request. Nothing is sent or saved.
Troubleshooting
The errors you're most likely to hit, what they actually mean, and the exact steps to get moving again.
“Couldn't reach the server” / connector won't save
While adding the connectorThe address didn't resolve. Almost always a typo, a missing /mcp on the end, or the address pasted with a trailing space.
Fix it
- 1Copy the address again with the Copy button above — don't retype it.
- 2Confirm it ends in /mcp and starts with https://.
- 3Run the status checker above: the “MCP endpoint mounted at /mcp” row must be green.
Then retry: Delete the half-added connector, paste the copied address, and save again.
“Requires authentication” or the connector never turns on
Right after adding the connectorThe OAuth approval never completed, so the assistant has no token to use.
Fix it
- 1Allow popups for chatgpt.com or claude.ai — a blocked popup silently kills approval.
- 2Sign in first at route45.ai/auth and leave that tab open.
- 3Remove the connector completely, then add it again and watch for the approval screen.
Then retry: After approving, reload the connector list; it should read Connected / Enabled.
“401 Unauthorized” or “not authenticated” from a tool
Mid-conversation, after it worked earlierYour session expired. Tokens are tied to your admin login, not the connector.
Fix it
- 1Check the Authorization status card above — if it says expired or expiring, use Refresh session.
- 2If refresh fails, sign in again at route45.ai/auth.
- 3Then reconnect (or re-enable) the connector so it picks up a fresh token.
Then retry: Ask “Using Route 45, list my prospects.” A real answer means the token is good.
“Tool not found” / the assistant says it can't do that
When asking for something we shipped recentlyThe assistant cached the tool list from the day you connected and hasn't seen the update.
Fix it
- 1Follow the Refresh steps above for your assistant.
- 2Start a brand-new chat — old chats keep the old tool list.
- 3Compare against the six tools listed in “What your assistant can do”.
Then retry: Ask “What Route 45 tools do you have?” and check the list matches this page.
A tool runs but returns nothing / an empty list
Reads like list_prospects or list_intake_submissionsNot an error. The assistant only sees what your own login sees, so an empty result usually means there's genuinely no data yet — or a filter was too narrow.
Fix it
- 1Open your admin dashboard and confirm the records actually exist.
- 2Ask again without a stage or date filter.
- 3If admin shows data but the tool doesn't, you're signed into a different account than the one you approved.
Then retry: Sign out of the wrong account, sign in as your admin, and reconnect.
“Invalid arguments” or the tool rejects your request
Writes like create_prospect, log_revenue, update_prospect_stageA required field was missing, or a value wasn't one of the allowed options (stages and revenue types are fixed lists).
Fix it
- 1Check the tool's inputs table above — fields marked * are required.
- 2Use the exact stage and type wording shown there.
- 3Copy the matching example request and edit the values rather than composing from scratch.
Then retry: Re-send the corrected call; a successful write returns the created row.
The request hangs or times out
Any tool, occasionallyA transient network hiccup between the assistant and Route 45.
Fix it
- 1Wait a few seconds and ask again — tool calls are cheap to retry.
- 2Re-run the status checker to confirm the endpoint is still reachable.
- 3Avoid re-sending a write twice in a row without checking admin first, so you don't double-log revenue.
Then retry: If it fails three times running, remove and re-add the connector.
No “Add custom connector” option in ChatGPT
Before you can add anythingDeveloper mode is off, or your ChatGPT workspace admin has custom connectors locked down.
Fix it
- 1Open Settings → Connectors → Advanced and switch Developer mode on.
- 2Reload chatgpt.com afterwards — the option doesn't appear until you do.
- 3On a Team or Enterprise plan, ask your workspace admin to allow custom connectors.
Then retry: Reopen the new-connector form from the walkthrough above; the URL field should now be there.
claude mcp add succeeds but /mcp shows “failed” or “needs auth”
Claude CodeThe server registered fine, but Claude Code hasn't completed the sign-in handshake yet — Route 45 is a private connector.
Fix it
- 1Run /mcp inside Claude Code, select Route 45, and choose the authenticate option.
- 2Finish the browser sign-in and click Approve, then return to the terminal.
- 3If it still fails, run claude mcp remove route45 and re-run the install command from the walkthrough.
Then retry: Run /mcp again — Route 45 should read connected.
You approved, but the assistant sees a different account's data
After connecting on a shared or second browserThe approval used whichever Route 45 account was signed into that browser, not necessarily the one you meant.
Fix it
- 1Check the Authorization status card above — it shows the exact account the browser is signed in as.
- 2Sign out, sign back in as the right admin, and leave that tab open.
- 3Remove the connector on the assistant's side and add it again so a new approval is issued.
Then retry: Ask for a record you know only the correct account can see.
It worked yesterday and stopped after a password change
Any assistantChanging your password or signing out everywhere invalidates the tokens you previously handed out.
Fix it
- 1Sign in again at route45.ai/auth with the new password.
- 2Remove the connector in your assistant, then add it back and approve once.
- 3Repeat for every assistant you'd connected — each holds its own token.
Then retry: Ask “Using Route 45, list my prospects.” in a fresh chat.
Still stuck? Email hello@route45.ai with the tool name, what you asked, and the exact error text — that's usually enough for us to spot it.