Follow Up Boss MCP server
156 operations0 webhooks
Real-estate CRM with Follow Up Boss - manage people, deals, appointments, calls, texts, notes and tasks, push lead events into its routing, read smart lists and automations data, manage webhook subscriptions, and read delivered webhook events by ID.
Try Follow Up Boss with your agent
Connect Follow Up Boss, then paste this into Claude, ChatGPT or Cursor. For ideas from other apps, see the use cases.
Using Corsair, show me what you can do in Follow Up Boss on my account, then run one read-only example and show me the result.
Follow Up Boss tools and triggers
Tools are what your agent can do in Follow Up Boss through Corsair's MCP server. Triggers are the Follow Up Boss events a routine can start from.
Inbox Apps
- Add MessageWrite
Deliver a message from your system into an inbox app conversation
inboxApps.addMessage
- Add NoteWrite
Add an internal note to an inbox app conversation
inboxApps.addNote
- Add System Confirmation MessageWrite
Add a system confirmation message to an inbox app conversation
inboxApps.addSystemConfirmationMessage
- Create ParticipantWrite
Add a participant to an inbox app conversation
inboxApps.createParticipant
- DeactivateDestructive
Deactivate an inbox app so it stops receiving conversations
inboxApps.deactivate
- Delete ParticipantDestructive
Remove a participant from an inbox app conversation
inboxApps.deleteParticipant
- Get ParticipantsRead-only
List the participants of an inbox app conversation
inboxApps.getParticipants
- InstallWrite
Install a published inbox app for a user with a subscription URL
inboxApps.install
- Installed AppRead-only
Read the installation details of a published inbox app
inboxApps.installedApp
- Update ConversationWrite
Update an inbox app conversation's subject or state
inboxApps.updateConversation
- Update MessageWrite
Update a message previously delivered to an inbox app conversation
inboxApps.updateMessage
People
- Check DuplicateRead-only
Check whether a person with this email address or phone number already exists, and who they are assigned to, before creating a new lead
people.checkDuplicate
- ClaimWrite
Claim an unclaimed lead so it becomes the user's contact
people.claim
- CreateWrite
Create a person, optionally merging into an existing duplicate instead of creating a new lead
people.create
- DeleteDestructive
Permanently delete a person from the account
people.delete
- GetRead-only
Get one person by ID with their contact details, stage, source, tags and timeframes
people.get
- Ignore UnclaimedWrite
Ignore an unclaimed lead so it is no longer offered to the user; the lead answers 204 and is not deleted
people.ignoreUnclaimed
- ListRead-only
List people with filters such as name, email, phone, stage, source, tags or assignment, sorted and paged
people.list
- UnclaimedRead-only
List the unclaimed leads currently offered to the user
people.unclaimed
- UpdateWrite
Update one person's contact details, stage, price, assignment, tags, timeframes or custom fields
people.update
Groups
- CreateWrite
Create a routing group of users with a distribution strategy
groups.create
- DeleteDestructive
Permanently delete a routing group
groups.delete
- GetRead-only
Get one routing group by ID
groups.get
- ListRead-only
List the routing groups with their distribution strategy
groups.list
- Round RobinRead-only
Read the round-robin rotation state of the routing groups
groups.roundRobin
- UpdateWrite
Update a routing group's name, members or distribution
groups.update
Templates
- CreateWrite
Create an email template with subject and body, optionally shared
templates.create
- DeleteDestructive
Permanently delete an email template
templates.delete
- GetRead-only
Get one email template by ID
templates.get
- ListRead-only
List the email message templates, paged
templates.list
- MergeWrite
Render an email template for a person, merging their fields into the body
templates.merge
- UpdateWrite
Replace an email template's name, subject and body
templates.update
Text Message Templates
- CreateWrite
Create a text message template, optionally shared
textMessageTemplates.create
- DeleteDestructive
Permanently delete a text message template
textMessageTemplates.delete
- GetRead-only
Get one text message template by ID
textMessageTemplates.get
- ListRead-only
List the text message templates, paged
textMessageTemplates.list
- MergeWrite
Render a text message template for a person, merging their fields into the message
textMessageTemplates.merge
- UpdateWrite
Update a text message template's name or message
textMessageTemplates.update
Appointment Outcomes
- CreateWrite
Create an appointment outcome with an optional sort order
appointmentOutcomes.create
- DeleteDestructive
Delete an appointment outcome after reassigning its appointments to another outcome
appointmentOutcomes.delete
- GetRead-only
Get one appointment outcome by ID
appointmentOutcomes.get
- ListRead-only
List the outcomes that appointments can be closed with
appointmentOutcomes.list
- UpdateWrite
Update an appointment outcome's name or sort order
appointmentOutcomes.update
Appointment Types
- CreateWrite
Create an appointment type with an optional sort order
appointmentTypes.create
- DeleteDestructive
Delete an appointment type after reassigning its appointments to another type
appointmentTypes.delete
- GetRead-only
Get one appointment type by ID
appointmentTypes.get
- ListRead-only
List the appointment types, sorted and paged
appointmentTypes.list
- UpdateWrite
Update an appointment type's name or sort order
appointmentTypes.update
Appointments
- CreateWrite
Create an appointment with invitees, optionally sending them invitations
appointments.create
- DeleteDestructive
Permanently delete an appointment
appointments.delete
- GetRead-only
Get one appointment by ID
appointments.get
- ListRead-only
List appointments, filtered by person, user or date range, paged
appointments.list
- UpdateWrite
Update an appointment's time, place, type or invitees
appointments.update
Custom Fields
- CreateWrite
Create a custom field definition for people, with choices for dropdown types
customFields.create
- DeleteDestructive
Permanently delete a person custom field definition
customFields.delete
- GetRead-only
Get one person custom field definition by ID
customFields.get
- ListRead-only
List the custom fields available on people
customFields.list
- UpdateWrite
Update a person custom field's label, choices or visibility
customFields.update
Deal Custom Fields
- CreateWrite
Create a custom field definition for deals, with choices for dropdown types
dealCustomFields.create
- DeleteDestructive
Permanently delete a deal custom field definition
dealCustomFields.delete
- GetRead-only
Get one deal custom field definition by ID
dealCustomFields.get
- ListRead-only
List the custom fields available on deals
dealCustomFields.list
- UpdateWrite
Update a deal custom field's label, choices or visibility
dealCustomFields.update
Deals
- CreateWrite
Create a deal on a pipeline stage with a value and description
deals.create
- DeleteDestructive
Permanently delete a deal
deals.delete
- GetRead-only
Get one deal by ID with its stage, value and associated people
deals.get
- ListRead-only
List deals with their stage, price and people, sorted and paged
deals.list
- UpdateWrite
Update a deal's stage, value, commission or associated people
deals.update
People Relationships
- CreateWrite
Create a partner relationship attached to a person
peopleRelationships.create
- DeleteDestructive
Permanently delete a partner relationship
peopleRelationships.delete
- GetRead-only
Get one partner relationship by ID
peopleRelationships.get
- ListRead-only
List the partner relationships of people, filtered by person or name
peopleRelationships.list
- UpdateWrite
Update the name, type or contact details of a relationship
peopleRelationships.update
Pipelines
- CreateWrite
Create a deal pipeline with an optional stage list
pipelines.create
- DeleteDestructive
Permanently delete a deal pipeline
pipelines.delete
- GetRead-only
Get one deal pipeline by ID
pipelines.get
- ListRead-only
List the deal pipelines with their stages and order
pipelines.list
- UpdateWrite
Update a pipeline's name, description or stage order
pipelines.update
Ponds
- CreateWrite
Create a pond with the users whose leads land in it
ponds.create
- DeleteDestructive
Permanently delete a pond
ponds.delete
- GetRead-only
Get one pond by ID with its assigned users
ponds.get
- ListRead-only
List the ponds, the lead pools that distribute new contacts to agents
ponds.list
- UpdateWrite
Update a pond's name or assigned users
ponds.update
Stages
- CreateWrite
Create a deal stage with an optional sort order
stages.create
- DeleteDestructive
Delete a deal stage after reassigning its action plans to another stage
stages.delete
- GetRead-only
Get one deal stage by ID
stages.get
- ListRead-only
List the deal stages across pipelines with their order weight
stages.list
- UpdateWrite
Update a deal stage's name or sort order
stages.update
Tasks
- CreateWrite
Create a task such as a follow-up on a person
tasks.create
- DeleteDestructive
Permanently delete a task
tasks.delete
- GetRead-only
Get one task by ID with its type, due date and completion status
tasks.get
- ListRead-only
List tasks, filtered by person, assignee, type or due range, paged
tasks.list
- UpdateWrite
Update a task's name, type, due date or completion
tasks.update
Teams
- CreateWrite
Create a team with members and leaders
teams.create
- DeleteDestructive
Permanently delete a team
teams.delete
- GetRead-only
Get one team by ID with its members and leaders
teams.get
- ListRead-only
List the teams in the account with their members
teams.list
- UpdateWrite
Update a team's name, members or leaders
teams.update
Webhooks
- CreateWrite
Subscribe a URL to one Follow Up Boss event
webhooks.create
- DeleteDestructive
Permanently delete a webhook subscription
webhooks.delete
- GetRead-only
Get one webhook subscription by ID
webhooks.get
- ListRead-only
List the webhook subscriptions of the account
webhooks.list
- UpdateWrite
Update a webhook subscription's URL or event type
webhooks.update
Automations People
- CreateWrite
Enroll a person into an automation
automationsPeople.create
- GetRead-only
Get one automation enrollment by ID
automationsPeople.get
- ListRead-only
List the people enrolled in automations, filtered by automation
automationsPeople.list
- UpdateWrite
Update an automation enrollment, such as finishing it
automationsPeople.update
Calls
- CreateWrite
Log a call on a person with its direction, duration, outcome and note
calls.create
- GetRead-only
Get one logged call by ID
calls.get
- ListRead-only
List logged calls, filtered by person or phone number, paged
calls.list
- UpdateWrite
Update a logged call's note, outcome or duration
calls.update
Deal Attachments
- CreateWrite
Attach an externally hosted file to a deal
dealAttachments.create
- DeleteDestructive
Permanently delete a file attachment from a deal
dealAttachments.delete
- GetRead-only
Get one file attachment of a deal by ID
dealAttachments.get
- UpdateWrite
Update the file URI, name or size of a deal attachment
dealAttachments.update
Notes
- CreateWrite
Add a note to a person
notes.create
- DeleteDestructive
Permanently delete a note
notes.delete
- GetRead-only
Get one note by ID, optionally with its threaded replies and reactions
notes.get
- UpdateWrite
Update a note's subject, body or person
notes.update
Person Attachments
- CreateWrite
Attach an externally hosted file to a person
personAttachments.create
- DeleteDestructive
Permanently delete a file attachment from a person
personAttachments.delete
- GetRead-only
Get one file attachment of a person by ID
personAttachments.get
- UpdateWrite
Update the file URI, name or size of a person attachment
personAttachments.update
Action Plans People
- CreateWrite
Enroll a person into an action plan
actionPlansPeople.create
- ListRead-only
List the people enrolled in action plans, filtered by person
actionPlansPeople.list
- UpdateWrite
Update an action plan enrollment, such as finishing it
actionPlansPeople.update
Em Campaigns
- CreateWrite
Create an email marketing campaign with subject and HTML body
emCampaigns.create
- ListRead-only
List the email marketing campaigns, filtered by origin
emCampaigns.list
- UpdateWrite
Update an email marketing campaign's name, subject or body
emCampaigns.update
Events
- CreateWrite
Push a lead event into Follow Up Boss's routing, which creates or matches the person and runs their action plans
events.create
- GetRead-only
Get one lead event by ID
events.get
- ListRead-only
List lead events, filtered by person, type or property, paged with the keyset cursor FUB enforces on deep pages
events.list
Reactions
- CreateWrite
Add a reaction to a note or other reference
reactions.create
- DeleteDestructive
Remove a reaction, sending the documented delete body
reactions.delete
- GetRead-only
Get the reactions attached to a note
reactions.get
Text Messages
- CreateWrite
Log a text message on a person with its direction and byline details
textMessages.create
- GetRead-only
Get one text message by ID
textMessages.get
- ListRead-only
List text messages, filtered by person or phone number, paged
textMessages.list
Users
- DeleteDestructive
Permanently remove a user from the account
users.delete
- GetRead-only
Get one user by ID with their role and contact details
users.get
- ListRead-only
List the users of the account with their roles
users.list
Account
- IdentityRead-only
Get the account identity information behind the authenticated API key
account.identity
- MeRead-only
Get the authenticated user's profile and role
account.me
Automations
- GetRead-only
Get one automation by ID
automations.get
- ListRead-only
List the account's automations
automations.list
Em Events
- CreateWrite
Record email marketing events against subscriber email addresses
emEvents.create
- ListRead-only
List email marketing events such as sends, opens and clicks
emEvents.list
Rate Limit
- LimitsRead-only
Read the rate-limit levels currently configured for this system
rateLimit.limits
- UsageRead-only
Read this system's 24-hour API usage totals and rate-limit statistics
rateLimit.usage
Smart Lists
- GetRead-only
Get one smart list by ID
smartLists.get
- ListRead-only
List the account smart lists, paged
smartLists.list
Action Plans
- ListRead-only
List the account's action plans
actionPlans.list
Team Inboxes
- ListRead-only
List the team inboxes available in the account
teamInboxes.list
Threaded Replies
- GetRead-only
Get the threaded replies of a note
threadedReplies.get
Timeframes
- ListRead-only
List the named timeframes available for people
timeframes.list
Webhook Events
- GetRead-only
List the delivery events recorded for one webhook subscription
webhookEvents.get
Connect Follow Up Boss to Claude, ChatGPT or Cursor
- 1
Connect Follow Up Boss in Corsair
Add your Follow Up Boss API key once in Corsair. Corsair stores the credential encrypted and makes the Follow Up Boss API calls for your agent, so it never goes into a prompt or a config file. Connect Follow Up Boss
If your link lets the agent add apps, you can skip this: it gives you a sign-in link the first time it needs Follow Up Boss. On a ChatGPT personal plan, connect Follow Up Boss here first.
- 2
Add Corsair's MCP server to your agent
Every client uses the same address:
https://mcp.corsair.dev/mcpOpen Customize → Connectors → Add custom connector, paste the address, then select Connect.Add a custom MCP server with the address and choose OAuth. Personal plans get read tools only.Add to CursorOr add this to~/.cursor/mcp.json. Cursor opens Corsair to sign in the first time it connects.{ "mcpServers": { "corsair": { "url": "https://mcp.corsair.dev/mcp" } } }Run this, then run/mcpin Claude Code to sign in.claude mcp add --transport http corsair https://mcp.corsair.dev/mcpCodex, Gemini CLI, VS Code, Zed and other clients with OAuth sign-in work the same way. Clients without it, such as GitHub Copilot's coding agent, use a link's own address and an API key. Setup for every client
- 3
Sign in and choose what needs your approval
Your client opens Corsair to sign in. Pick a link: the apps your agent can use and a mode that decides what it may do without asking. In the default Cautious mode, Follow Up Boss's read and write operations run right away and its 24 destructive operations wait for your approval. Strict mode asks before every write and refuses destructive operations, and Read mode allows reads only.
FAQ
Install corsair and @corsair-dev/followupboss, add the Follow Up Boss plugin, and connect with an API key. Then call methods like corsair.followupboss.api.account.identity() from your app. Corsair keeps each tenant isolated.
Yes. Follow Up Boss requires an API key from your Follow Up Boss account or developer dashboard. Create credentials with access that matches what you automate, then paste them into Corsair or connect through managed auth in Hub.
Yes. One Corsair client can hit Follow Up Boss, GitHub, Notion, Stripe, and the rest. Trigger Follow Up Boss from a webhook, push updates to Slack, or chain actions across plugins. Same tenant context across integrations, plain TypeScript.
Teams use Corsair for real-estate crm with follow up boss - manage people, deals, appointments, calls, texts, notes and tasks, push lead events into its routing, read smart lists and automations data, manage webhook subscriptions, and read delivered webhook events by id. Common builds include sync jobs, admin tooling, and agents that call Follow Up Boss APIs from your backend.
The SDK is open source. Self-host and you pay Corsair nothing for the integration layer. Hub bills for hosted auth and execution, not per Follow Up Boss API call. Hub has a generous free tier. For hobby projects you can probably run the whole thing on free. Paid plans start to matter with more tenants or heavier traffic.
We maintain @corsair-dev/followupboss in the open repo. When Follow Up Boss ships API changes, upgrade the package. Your call sites stay typed. You should not need to rewrite the integration layer each time.
No. Corsair does not read your Follow Up Boss data or hold individual access credentials. Credentials stay in your database. API calls run on your instance. We do not store Follow Up Boss data on your behalf.
Yes. Add https://mcp.corsair.dev/mcp as a custom connector or MCP server in Claude, ChatGPT, Cursor, VS Code, Claude Code, Codex or any client that supports remote MCP servers with OAuth sign-in, then sign in to Corsair. On ChatGPT personal plans, custom servers currently get read tools only.
Yes. Put Follow Up Boss on a link in Strict mode and every write waits for your approval, while destructive actions are refused. The default Cautious mode asks only before the 24 destructive Follow Up Boss operations. You can change a link's mode at hub.corsair.dev/me.