Getting started
The Claude connector
A remote MCP server that gives Claude the agency workspace’s own tools — the same handlers its screens call, authorised the same way, scoped to one workspace and one member.
The address#
One address. Register it exactly as written — including the www.
The MCP endpoint
https://www.brellapartners.com/mcpWhy the www matters
The apex domain brellapartners.com answers with a 308 to www.brellapartners.com, and a redirect across hosts drops the Authorization header — so a client registered against the apex signs in, gets a token, and is then told it has none. If connecting loops, check the host first.
What it speaks#
Model Context Protocol, over the Streamable HTTP transport, stateless. There is no session to resume and no server-sent stream to hold open: every request carries everything it needs, which is what lets it run as one serverless function and never leave a connection hanging.
POST /mcp— the one door. JSON-RPC in, JSON out.GETandDELETEanswer405, which is the protocol’s own answer for a server offering neither a stream nor a session.OPTIONSis answered for CORS, exposingWWW-Authenticateso a browser-based client can read the challenge that starts the sign-in.
What it exposes#
102 tools, five prompts, and a set of server instructions describing how Brella models an agency — policies and leads under one lifecycle, locations and buildings under a policy, the reference code on everything. The tools are not a separate API written for Claude: they are the same registry Bird, the agent inside Brella OS, already runs on, so the two cannot drift apart or authorise differently.
- The book
What it covers
Search it, open any policy and its activity, today’s work, and the before-you-send report.Tools
7- Addresses & property data
What it covers
Addresses resolved to real ones, and the public record for the building.Tools
2- The record
What it covers
Stage, policy facts, locations and buildings, general liability, workers’ comp, questionnaires.Tools
35- Documents & forms
What it covers
Read any file on the policy; generate the ACORD forms and the Schedule of Values.Tools
6- Certificates
What it covers
Holders and what their contracts require, the endorsement on file, issuing and reissuing.Tools
8- Claims
What it covers
Report a claim, record the carrier and the adjuster, move its status, add notes.Tools
5- Mid-term changes
What it covers
Draft a change request, answer its questions, record where it stands.Tools
5- The E&O advisory record
What it covers
What was offered and declined this term, and the letter that confirms it.Tools
4- Producer licensing
What it covers
Producers, licences, carrier appointments and continuing education.Tools
12- Surplus lines
What it covers
Non-admitted filings, their obligations, and the agency’s own deadline rules.Tools
11- The policyholder
What it covers
Read the conversation on a policy, and send a message into it.Tools
2- Reminders
What it covers
Your own reminders on a lead or policy, on your clock.Tools
5
The full list, tool by tool, is the tool reference. Every entry there is generated from the connector’s own registry.
What is held back
Six of Bird’s tools are not exposed, each for a stated reason: the two that render Bird’s own question card and file drop (Claude has its own way to ask, and no Bird upload to point at), the one that drafts with Brella’s model rather than with Claude, and the three that hold Bird’s standing instructions for the agency — a connector must not hand a client instructions to follow, so that memory stays Bird’s.
One tool exists only here: get_workspace_context, which returns who is signed in, which workspace this connection acts in, today’s date and time zone, and an overview of the book. Bird gets that from its own system prompt; a connector has to be able to answer it out loud.
How a call is authorised#
In order, before the MCP layer sees a byte:
- Method. Anything but
POSTis a 405. - Token. The bearer token must be one we issued, still live, bound to this resource, and held by somebody who is still a member of that agency. No token, or a bad one, is a transport-level
401with aWWW-Authenticateheader pointing at the protected-resource metadata — that header is what makes a client run OAuth. A 200 carrying a polite “please sign in” would not. - Scope. A call to a tool the token’s scopes do not cover is a
403insufficient_scope, naming the scope to ask for — step-up authorization, which Claude turns into a re-consent. Batched calls are checked element by element. - Burst. A per-connection rate limit, against a runaway loop rather than against you.
Then the tool runs — under the member’s own session, through the same handler the workspace screen calls, with the same agencyCanAccess check in front of it. Nothing re-implements authorisation for Claude.
An unauthenticated call
POST /mcp HTTP/1.1Host: www.brellapartners.comHTTP/1.1 401 UnauthorizedWWW-Authenticate: Bearer resource_metadata="https://www.brellapartners.com/.well-known/oauth-protected-resource/mcp"
One workspace per connection#
A connection holds exactly one agency workspace — the one picked on the consent page. A person who works at two agencies connects twice and keeps two connections, and neither can see the other’s book. This is not a filter applied to a wider token: the grant itself names one org, and every query underneath filters by it.
What it deliberately does not carry#
- No carrier transport. Brella does not send anything to a carrier, so neither does Claude. Recording a change request as submitted records that a human sent it, elsewhere, on the date they state.
- No binding and no money. A stage of “bound” is a record of what a person did, not a binder.
- No instructions from us to your client. Tool descriptions describe; they do not steer. The server’s instructions explain the model of the workspace and stop there.
Where it runs#
The connector runs in production only. A preview deployment refuses to serve it — previews share one database with production, so a token minted on a preview would be a valid production token, which is not a risk worth the convenience. The issuer and the resource identifier come from configuration, never from the Host header, so they cannot be moved by a request.
Live availability of the connector and everything behind it is on the status page, which checks the connector’s own tables by name rather than pinging a URL.