AGENT INTEGRATIONS

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.

YOUR CONNECTION ADDRESS

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.

CONNECTION STATUS
Ready to run.
No results yet.
  • 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.

0/6 DONE
STEP 1 OF 6

Turn on Developer mode

Open Settings → Connectors → Advanced and switch on Developer mode. Read the risk notice ChatGPT shows there — it appears for every custom connector, not just Route 45. If the toggle is missing, ask your ChatGPT workspace admin to enable it.

The short version

ChatGPT

  1. 1Open chatgpt.com/#settings/Connectors/Advanced and turn on Developer mode (read the risk notice shown there).
  2. 2In the chat box, open the “+” menu and turn on Developer mode.
  3. 3Click Add sources, then Connect more.
  4. 4Name it “Route 45” and paste the address above.
  5. 5Ask ChatGPT to use Route 45.

Claude

  1. 1Open claude.ai/customize/connectors.
  2. 2Name it “Route 45” and paste the address above.
  3. 3Turn the connector on from the chat box, then ask Claude to use Route 45.

Claude Code

  1. 1Run this in a terminal:
  2. 2Start Claude Code and run /mcp to confirm Route 45 is connected — sign in from that menu when prompted.
  3. 3Ask Claude Code to use Route 45.

Other MCP clients

  1. 1Open the assistant's MCP server or custom connector settings.
  2. 2Create a new remote MCP server connection.
  3. 3Name it “Route 45” and paste the address above.
  4. 4Finish the sign-in and approval prompts.
  5. 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…

Sign in
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…

    Open connectors
  • ClaudeSyncingCustom connector on claude.ai

    Checking the Route 45 endpoint and your sign-in…

    Open connectors
  • 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

  1. 1Click Connect (ChatGPT) or Enable (Claude) on the Route 45 connector. A browser window opens on route45.ai.
  2. 2If you're not signed in, the Route 45 admin login appears. Sign in with your admin email and password.
  3. 3An approval screen appears: “Connect ChatGPT (or Claude) to your account.” Confirm the app name shown is the one you're connecting.
  4. 4Click Approve. The window closes and returns you to ChatGPT or Claude.
  5. 5The connector now shows as Connected / Enabled rather than “Requires authentication”.

Prove it actually worked

  1. 1Run the status checker above — all four rows should be green.
  2. 2In a new chat, ask: “Using Route 45, list my prospects.”
  3. 3A real answer (even “no prospects yet”) means the token is valid and acting as you.
  4. 4An “authorization required”, “401”, or “sign in to continue” reply means the approval didn't stick — reconnect and watch for the approval screen.
  5. 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-ONLYIDEMPOTENT

Browse the Route 45 sales pipeline, newest changes first. Optionally narrow it to one stage like Lead, Retainer, or Won.

INPUTS
FieldTypeDescription
stagestring?Pipeline stage filter (Lead, Discovery Booked, Retainer, Won, Lost, …).
limitintegerMax rows returned (1–200, default 50).
OUTPUT

prospects — array of prospect rows (id, name, business, email, phone, stage, monthly_amount, notes, timestamps).

create_prospectCreate prospectWRITE

Add a new prospect to the pipeline. Stage defaults to 'Lead' if you don't set one.

INPUTS
FieldTypeDescription
name *stringProspect / contact name.
businessstring?Business name.
emailemail?Contact email.
phonestring?Contact phone.
stagestring?Pipeline stage (defaults to 'Lead').
notesstring?Free-text notes.
monthly_amountnumberMonthly retainer amount in USD, if applicable.
OUTPUT

prospect — the newly created prospect row.

update_prospect_stageUpdate prospect stageWRITEIDEMPOTENT

Move a prospect to a different pipeline stage and optionally set its monthly retainer amount.

INPUTS
FieldTypeDescription
id *uuidProspect id.
stage *stringNew pipeline stage.
monthly_amountnumberSet / update the monthly retainer amount (USD).
OUTPUT

prospect — the updated prospect row.

list_intake_submissionsList intake submissionsREAD-ONLYIDEMPOTENT

Read Pre-Trip Checklist submissions from prospective clients, newest first.

INPUTS
FieldTypeDescription
limitintegerMax rows returned (1–200, default 25).
OUTPUT

submissions — array of intake rows (name, email, business, team size, revenue range, time sinks, tools, AI experience, etc.).

log_revenueLog revenue entryWRITE

Record a Route 45 revenue entry — an Assessment, Implementation, or Retainer payment.

INPUTS
FieldTypeDescription
client *stringClient / business name.
type *enumOne of: Assessment · Implementation · Retainer.
amount *numberAmount in USD (must be greater than 0).
entry_datestring?ISO date YYYY-MM-DD (defaults to today).
notesstring?Free-text notes.
OUTPUT

entry — the newly recorded revenue entry.

revenue_summaryRevenue summaryREAD-ONLYIDEMPOTENT

Summarize Route 45 revenue: month-to-date collected, monthly recurring revenue from Retainer prospects, and recent entries.

INPUTS
FieldTypeDescription
recent_limitintegerHow many recent entries to include (1–50, default 10).
OUTPUT

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_prospects

Show 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_prospect

Add 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_stage

Change 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_submissions

Pull 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_revenue

Record 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_summary

Month-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.

list_prospects
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.

create_prospect
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.

update_prospect_stage
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.

list_intake_submissions
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.

log_revenue
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.

revenue_summary
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

  1. 1Open ChatGPT's app preferences and pick Route 45 under Enabled apps.
  2. 2Next to Information, click Refresh.
  3. 3If the address above changed, paste the new one.
  4. 4Start a new chat and ask ChatGPT to use Route 45.

Claude

  1. 1Open the Connectors page and select Route 45.
  2. 2Refresh or update the connector's tools.
  3. 3If the address above changed, paste the new one.
  4. 4Ask Claude to use Route 45.

Claude Code

  1. 1Start a new Claude Code session — it picks up the latest Route 45 tools when it connects.
  2. 2If the address above changed, run claude mcp remove route45, then run the install command again with the new address.
  3. 3Ask Claude Code to use Route 45.

Other MCP clients

  1. 1Open the assistant's MCP server or connector settings and select Route 45.
  2. 2Refresh the tool list, reload the server, or reconnect it.
  3. 3If the address above changed, paste the new one.
  4. 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.

Pipeline stage filter (Lead, Discovery Booked, Retainer, Won, Lost, …).

Max rows returned (1–200, default 50).

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 connector

The address didn't resolve. Almost always a typo, a missing /mcp on the end, or the address pasted with a trailing space.

Fix it

  1. 1Copy the address again with the Copy button above — don't retype it.
  2. 2Confirm it ends in /mcp and starts with https://.
  3. 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 connector

The OAuth approval never completed, so the assistant has no token to use.

Fix it

  1. 1Allow popups for chatgpt.com or claude.ai — a blocked popup silently kills approval.
  2. 2Sign in first at route45.ai/auth and leave that tab open.
  3. 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 earlier

Your session expired. Tokens are tied to your admin login, not the connector.

Fix it

  1. 1Check the Authorization status card above — if it says expired or expiring, use Refresh session.
  2. 2If refresh fails, sign in again at route45.ai/auth.
  3. 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 recently

The assistant cached the tool list from the day you connected and hasn't seen the update.

Fix it

  1. 1Follow the Refresh steps above for your assistant.
  2. 2Start a brand-new chat — old chats keep the old tool list.
  3. 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_submissions

Not 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

  1. 1Open your admin dashboard and confirm the records actually exist.
  2. 2Ask again without a stage or date filter.
  3. 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_stage

A required field was missing, or a value wasn't one of the allowed options (stages and revenue types are fixed lists).

Fix it

  1. 1Check the tool's inputs table above — fields marked * are required.
  2. 2Use the exact stage and type wording shown there.
  3. 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, occasionally

A transient network hiccup between the assistant and Route 45.

Fix it

  1. 1Wait a few seconds and ask again — tool calls are cheap to retry.
  2. 2Re-run the status checker to confirm the endpoint is still reachable.
  3. 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 anything

Developer mode is off, or your ChatGPT workspace admin has custom connectors locked down.

Fix it

  1. 1Open Settings → Connectors → Advanced and switch Developer mode on.
  2. 2Reload chatgpt.com afterwards — the option doesn't appear until you do.
  3. 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 Code

The server registered fine, but Claude Code hasn't completed the sign-in handshake yet — Route 45 is a private connector.

Fix it

  1. 1Run /mcp inside Claude Code, select Route 45, and choose the authenticate option.
  2. 2Finish the browser sign-in and click Approve, then return to the terminal.
  3. 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 browser

The approval used whichever Route 45 account was signed into that browser, not necessarily the one you meant.

Fix it

  1. 1Check the Authorization status card above — it shows the exact account the browser is signed in as.
  2. 2Sign out, sign back in as the right admin, and leave that tab open.
  3. 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 assistant

Changing your password or signing out everywhere invalidates the tokens you previously handed out.

Fix it

  1. 1Sign in again at route45.ai/auth with the new password.
  2. 2Remove the connector in your assistant, then add it back and approve once.
  3. 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.