Follow Up Boss MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FUB_SYSTEM | No | Registered system name (for system-restricted endpoints) | |
| FUB_API_KEY | Yes | Your Follow Up Boss API key (starts with fka_) | |
| FUB_SAFE_MODE | No | Set to 'false' to enable delete/destructive tools | true |
| FUB_SYSTEM_KEY | No | Registered system key (pair with FUB_SYSTEM) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| listEventsA | List events from FUB. Filter by personId, type, property address, etc. |
| createEventC | Create a new event in FUB (lead event, property inquiry, etc) |
| getEventA | Get a single event by ID |
| listPeopleA | List/search people in FUB. Supports filtering by name, email, phone, tags, stage, source, assignedTo, price range, smart list, and more. For tag filtering use the tags parameter (comma-separated, OR logic). For email lookup use the email parameter. |
| createPersonB | Create a new person/contact in FUB |
| getPersonB | Get a single person by ID |
| updatePersonB | Update an existing person in FUB |
| checkDuplicateB | Check if a person already exists by email or phone |
| listUnclaimedA | List unclaimed people (in ponds, not assigned) |
| claimPersonB | Claim an unclaimed person |
| createPersonAttachmentA | Attach an externally-hosted file to a person. "Restricted - Registered Systems Only": requires FUB_SYSTEM + FUB_SYSTEM_KEY env vars. |
| getPersonAttachmentA | Get a person attachment by ID |
| updatePersonAttachmentC | Update a person attachment |
| listRelationshipsB | List relationships for a person |
| createRelationshipA | Create a relationship contact (Spouse, Brother, Partner, etc.) for an existing person. The relationship is its own contact record linked to personId. |
| getRelationshipB | Get a relationship by ID |
| updateRelationshipC | Update a relationship contact |
| getIdentityA | Get identity/account information for the API key |
| getCurrentUserA | Get the current authenticated user (GET /me) |
| listNotesA | List notes, optionally filtered by personId |
| createNoteB | Create a note on a person |
| getNoteC | Get a note by ID |
| updateNoteC | Update a note |
| listCallsC | List calls |
| createCallA | Log a call for a person. FUB expects isIncoming (boolean) and note (singular). |
| getCallA | Get a call by ID |
| updateCallC | Update a call record |
| listTextMessagesA | List text messages. FUB REQUIRES at least one filter: personId, threadId, phone, toNumber, fromNumber, sharedInboxId, groupTextId, participants, or id list. Unfiltered calls return 400. |
| createTextMessageA | LOG a text message that was already sent by your registered third-party SMS system. This endpoint does NOT actually deliver an SMS — FUB only records it. "Restricted - Registered Systems Only": requires FUB_SYSTEM + FUB_SYSTEM_KEY env vars. |
| getTextMessageA | Get a text message by ID |
| listUsersB | List all users/agents in the account |
| getUserA | Get a user by ID |
| listSmartListsA | List all smart lists. By default only classic FUB smart lists are returned. Pass |
| getSmartListB | Get a smart list by ID |
| listActionPlansC | List all action plans |
| listActionPlansPeopleB | List people assigned to action plans |
| addPersonToActionPlanB | Add a person to an action plan |
| updateActionPlanPersonC | Update a person's action plan status |
| listAutomationsA | List all Automations 2.0 automations. "Restricted - Registered Systems Only": requires FUB_SYSTEM + FUB_SYSTEM_KEY. Account must also be on Automations 2.0. |
| getAutomationB | Get an automation by ID |
| listAutomationsPeopleA | List people in Automations 2.0 automations. "Restricted - Registered Systems Only": requires FUB_SYSTEM + FUB_SYSTEM_KEY. |
| getAutomationPersonA | Get an automation-person entry by ID |
| addPersonToAutomationB | Add a person to an automation |
| updateAutomationPersonB | Update a person's automation status |
| listTemplatesA | List email templates |
| createTemplateC | Create an email template |
| getTemplateA | Get an email template by ID |
| updateTemplateB | Update an email template |
| mergeTemplateB | Merge an email template with a person's data (mail merge) |
| listTextMessageTemplatesB | List text message templates |
| createTextMessageTemplateB | Create a text message template |
| getTextMessageTemplateB | Get a text message template by ID |
| updateTextMessageTemplateB | Update a text message template |
| mergeTextMessageTemplateC | Merge a text message template with person data |
| listEmEventsC | List email marketing events |
| createEmEventC | Create email marketing events |
| listEmCampaignsB | List email marketing campaigns |
| createEmCampaignB | Create an email marketing campaign |
| updateEmCampaignC | Update an email marketing campaign |
| listCustomFieldsA | List all custom fields |
| createCustomFieldC | Create a custom field |
| getCustomFieldB | Get a custom field by ID |
| updateCustomFieldC | Update a custom field |
| listStagesB | List all pipeline stages |
| createStageC | Create a pipeline stage |
| getStageA | Get a stage by ID |
| updateStageC | Update a stage |
| listTasksC | List tasks |
| createTaskB | Create a task |
| getTaskA | Get a task by ID |
| updateTaskC | Update a task |
| listAppointmentsC | List appointments |
| createAppointmentA | Create an appointment. FUB uses start/end (not startTime/endTime), typeId/outcomeId (not appointmentTypeId/appointmentOutcomeId), and invitees:[{type:'person'|'user',id}]. |
| getAppointmentA | Get an appointment by ID |
| updateAppointmentA | Update an appointment. FUB requires |
| listAppointmentTypesA | List appointment types |
| createAppointmentTypeC | Create an appointment type |
| getAppointmentTypeA | Get appointment type by ID |
| updateAppointmentTypeC | Update an appointment type |
| listAppointmentOutcomesB | List appointment outcomes |
| createAppointmentOutcomeA | Create an appointment outcome |
| getAppointmentOutcomeA | Get appointment outcome by ID |
| updateAppointmentOutcomeC | Update an appointment outcome |
| listWebhooksA | List all webhooks |
| createWebhookD | Create a webhook |
| getWebhookA | Get a webhook by ID |
| updateWebhookC | Update a webhook |
| getWebhookEventsC | Get events for a webhook |
| listPipelinesC | List all pipelines |
| createPipelineC | Create a pipeline |
| getPipelineA | Get a pipeline by ID |
| updatePipelineC | Update a pipeline |
| listDealsC | List deals with filtering |
| createDealB | Create a deal. FUB expects peopleIds (array) and price (number). name + stageId required. |
| getDealB | Get a deal by ID |
| updateDealA | Update a deal. Use price (not value) and peopleIds (not personId). |
| createDealAttachmentA | Attach an externally-hosted file to a deal. "Restricted - Registered Systems Only": requires FUB_SYSTEM + FUB_SYSTEM_KEY env vars. |
| getDealAttachmentA | Get a deal attachment by ID |
| updateDealAttachmentC | Update a deal attachment |
| listDealCustomFieldsC | List deal custom fields |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 137 tools
Most tools have a clearly distinct resource+action target, but the sheer number creates some potentially confusing pairs (e.g., listEvents vs listEmEvents, listPeople vs searchPeopleByTag). Descriptions help resolve these, so ambiguity is limited.
The naming pattern is largely consistent: verb_noun with list<resources> for collections and get/create/update for individuals. A few exceptions like 'about', 'help', and 'checkDuplicate' deviate, but they are special-purpose tools and do not break the overall pattern.
With 137 tools, this server is extremely over-scoped. Even for a full CRM API, exposing every endpoint as an MCP tool is unwieldy and far exceeds the recommended 3-15 tool range.
The server covers a wide range of CRM resources with CRUD operations, but delete operations are notably absent for most resource types (people, deals, notes, etc.), creating dead ends that agents cannot work around.