Help centre

Connect Claude to CityRadar

Step-by-step setup for the CityRadar MCP server in Claude Code and in Claude Desktop or claude.ai, the six tools it exposes, example questions, and the request limit.

What this gives you

CityRadar runs an MCP server — a standard way for an AI assistant to call a data source directly. Once it is connected, Claude can answer questions about newly licensed Calgary businesses using the live database instead of guessing: who opened in a community last week, which of them have a phone number, what a given business is likely to need.

It is read-only. The server answers questions; it does not send email, write to a CRM, or remember your outreach. Contact values come back with the source and date attached, and a good assistant will repeat those when it quotes a number.

Video — to be added

Walkthrough: connecting Claude to CityRadar and asking the first question. Owner's screen recording — embed here once recorded.

Video slot — Batch L, to be recorded

Before you start

You need a CityRadar API key. Keys look like cr_live_… and are issued by hand while we are launching — ask us for one and we will send it to you. One key works for every client below; each key has its own request allowance.

Claude Code

Claude Code accepts an authorization header, so the key never appears in a URL. One command, run in your terminal:

Add the connector

claude mcp add --transport http cityradar https://www.cityradar.io/api/mcp --header "Authorization: Bearer cr_live_..."

Replace cr_live_... with your own key. Then check it took:

claude mcp list

cityradar should be listed as connected. Ask it something — the six tools below are available immediately.

Claude Desktop and claude.ai

The connector dialog in Claude Desktop and on claude.ai takes a URL and nothing else — there is no field for a header. So CityRadar exposes a second endpoint where the key is part of the address.

  1. Open Settings → Connectors → Add custom connector

    Same dialog in the desktop app and on claude.ai.

  2. Name it CityRadar

    The name is only a label; CityRadar is what the screenshots and examples here use.

  3. Paste the URL, with your key in it

    Connector URL

    https://www.cityradar.io/api/mcp/k/cr_live_<your-key>

    The key is the last path segment. Substitute the whole thing, including the cr_live_ prefix.

  4. Leave both OAuth fields empty

    Client ID and client secret stay blank. CityRadar does not use OAuth — the key in the URL is the whole credential, and filling those fields will send the connection down a sign-in path that does not exist.

  5. Approve the tools

    Claude lists the six CityRadar tools and asks whether it may use them. Approve them and ask your first question.

That URL is your password

Anyone who has the connector URL has your key, because the key is in it. Do not paste it into a shared document, a screenshot, or a support ticket. If it does get out, tell us — we will revoke that key and issue a new one, which takes a minute and breaks nothing else.

Screenshot — to be added

Claude Desktop: Settings → Connectors → Add custom connector, with the CityRadar name and URL filled in and both OAuth fields empty.

/help/claude-desktop-connector.png

Screenshot — to be added

The tool-permissions prompt listing the six CityRadar tools.

/help/claude-desktop-tools.png

Screenshot — to be added

A real answer: Claude reporting new Food & Hospitality licences from the last two weeks, with how many carry phone numbers.

/help/claude-desktop-answer.png

The six tools, and what to ask

get_new_businesses

the usual starting point

Recently licensed businesses, newest first, with contacts where we have them. Optionally narrowed by category, community and look-back window.

“Which businesses were licensed in Beltline in the last two weeks, and which of them have a phone number?”

get_signals

filter by what happened

The same data as events: opened, opening soon, permit activity, category growth. Each signal carries its confidence and its ranked service needs, so it says what to pitch as well as who.

“Show me restaurants that are fitting out but not open yet, and what they typically need first.”

get_business_profile

one business, in full

Licence details, contacts with provenance, every signal with its evidence, ranked service needs, and similar businesses nearby. Takes a slug from an earlier result.

“Tell me everything you have on that second one, and draft what I’d say to them.”

get_community_stats

is this area worth my time?

Active businesses, new licences in the last 30 and 90 days, year-over-year change, a 24-month series and the category mix — for one community.

“How has Seton been trending compared with a year ago?”

get_category_trends

is this sector growing?

The same figures for one category, plus the communities where it concentrates.

“Is Construction & Trades growing in Calgary, and where should I focus?”

search_businesses

find one by name

Name search across the whole licence history, including chain locations and numbered companies — a search for a name you know should find it.

“Look up the licence record for Thai Siam.”

Category and community arguments accept either spelling — Food & Hospitality or food-and-hospitality. A value that matches nothing comes back as an explicit error listing the valid ones, never as an empty result that reads like “nothing opened”.

Request limit

Each key has a daily allowance — 500 requests per UTC day by default, which is far more than a day of conversation uses. Past it the server replies with the limit, how much you have used, and the seconds until it resets at 00:00 UTC, so the assistant can tell you rather than failing silently. Refused requests do not count against the allowance.

Everything is Calgary-only today, and every answer is drawn from the same records the website shows — see data sources and methodology.

If it does not connect

  • “Unauthorized” / 401. The key is wrong, mistyped, or has been revoked. Check that the URL ends with the full key including the cr_live_ prefix, and that nothing was truncated on paste.
  • Claude asks you to sign in. Something has been entered in the OAuth fields. Remove the connector, re-add it with only the URL, and leave client ID and secret blank.
  • Claude Code cannot reach it. Confirm the header is exactly Authorization: Bearer cr_live_… and that the URL is https://www.cityradar.io/api/mcp — the header endpoint has no /k/ segment.