# io.usefulapi/follow-up-boss (remote · follow-up-boss.usefulapi.io)

Search Follow Up Boss leads, review calls and deals, and add notes, tasks and deal updates.

- Trust score: 75/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-04

## Components

- remote · `follow-up-boss.usefulapi.io`: 75/100 (this document), [markdown](https://verifymcp.io/servers/io-usefulapi-follow-up-boss/follow-up-boss.md), [page](https://verifymcp.io/servers/io-usefulapi-follow-up-boss/follow-up-boss)

## Channel facts

- Endpoint: `https://follow-up-boss.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-04.

- **Endpoint Security**: 89/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
  - The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 68/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 3566 tokens (~162/item across 22 items; 22 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 13/100
  - Stability observed for 4 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 92/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 75% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 22 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### How do I install the io.usefulapi/follow-up-boss MCP server?

io.usefulapi/follow-up-boss is a hosted endpoint at https://follow-up-boss.usefulapi.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http io-usefulapi-follow-up-boss 'https://follow-up-boss.usefulapi.io/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "io-usefulapi-follow-up-boss": {
      "url": "https://follow-up-boss.usefulapi.io/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "io-usefulapi-follow-up-boss": {
      "type": "http",
      "url": "https://follow-up-boss.usefulapi.io/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.io-usefulapi-follow-up-boss]
url = "https://follow-up-boss.usefulapi.io/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-usefulapi-follow-up-boss": {
      "type": "remote",
      "url": "https://follow-up-boss.usefulapi.io/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-usefulapi-follow-up-boss --url 'https://follow-up-boss.usefulapi.io/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-usefulapi-follow-up-boss:
    url: "https://follow-up-boss.usefulapi.io/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "io-usefulapi-follow-up-boss": {
      "Transport": "http",
      "Url": "https://follow-up-boss.usefulapi.io/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add io-usefulapi-follow-up-boss -t streamable-http -u 'https://follow-up-boss.usefulapi.io/mcp'
```

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-follow-up-boss": {
      "type": "http",
      "url": "https://follow-up-boss.usefulapi.io/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-02 (score 75, +1)

- [functional] Server version: 1.3.0 → 1.5.1

### 2026-10-01 (score 74, +5)

- [security improvement] HTTPS: unverified → pass
- [functional improvement] Stability: unverified → 0.03
- [functional] Server version: 1.0.0 → 1.3.0

### 2026-09-30 (score 69, +51)

- [security improvement] Authorization: unverified → pass
- [security improvement] Injection markers: unverified → pass
- [security improvement] Transport: fail → pass
- [security] First check of Judged manipulation: pass
- [security] First check of Authorization: partial
- [functional regression] MCP protocol: unverified → fail
- [functional improvement] Tool coverage: unverified → 100
- [functional] First check of Schema quality: fail
- [functional] First check of Schema quality: excellent
- [functional] First check of Tool coverage: 75
- [functional] First check of Schema quality: fail
- [functional] First check of Destructive annotations: 100

### 2026-09-29 (score 18)

First indexed and scored.

## MCP tools (22)

### `fub_get_identity` (~50 tokens)

Get identity

Who the credential belongs to: the account (id, domain, owner) and the authenticated user. A cheap way to confirm the API key works. FUB: GET /v1/identity.

### `fub_search_people` (~508 tokens)

Search people (contacts/leads)

Search contacts and leads. Criteria combine with AND. Name filters are partial matches. Newest first by default. People in the Trash stage are excluded unless includeTrash is true. Not every field is returned by default — pass `fields` (e.g. "allFields" or a comma list) for more. FUB: GET /v1/people.

Input parameters:

- `assignedPondId` (integer): Assigned pond id.
- `assignedTo` (string): Full name of the assigned agent.
- `assignedUserId` (integer): Assigned agent's user id.
- `contacted` (boolean): Whether they have been contacted.
- `createdAfter` (string): ISO-8601 UTC, e.g. 2026-07-01T00:00:00Z.
- `email` (string): Exact email address.
- `fields` (string): Comma-separated fields to return, or "allFields" / "allCustom".
- `firstName` (string): Partial match on first name.
- `includeTrash` (boolean): Include people in the Trash stage.
- `lastActivityAfter` (string): e.g. "2026-01-31 00:00:00".
- `lastActivityBefore` (string): e.g. "2026-01-31 00:00:00".
- `lastName` (string): Partial match on last name.
- `limit` (integer): Page size, 1-100 (FUB default 10).
- `name` (string): Partial match on full name.
- `next` (string): Cursor from the previous page's _metadata.next. Recommended over offset.
- `offset` (integer): Rows to skip. For deep paging prefer `next`.
- `phone` (string): Phone number.
- `priceAbove` (integer): Price above this value.
- `priceBelow` (integer): Price below this value.
- `smartListId` (integer): Only people matching this Smart List.
- `sort` (string): Sort field, e.g. "created", "lastActivity", "name"; prefix "-" for descending.
- `source` (string): Lead source, e.g. "Zillow".
- `stage` (string): Stage name, e.g. "Lead", "Past Client" (see fub_list_stages).
- `tags` (string): Comma-separated tags; matches ANY ("Foo,Bar").
- `updatedAfter` (string): ISO-8601 UTC.

### `fub_get_person` (~75 tokens)

Get one person

Fetch one contact by id. Pass fields="allFields" to include custom fields and everything else. FUB: GET /v1/people/{id}.

Input parameters:

- `fields` (string): Comma-separated fields to return, or "allFields" / "allCustom".
- `id` (integer, required): The person id.

### `fub_check_duplicate_person` (~83 tokens)

Check whether a person exists

Check if a contact with this email or phone already exists anywhere in the account (even ones this user cannot see) and who it is assigned to. Use before adding a lead. FUB: GET /v1/people/checkDuplicate.

Input parameters:

- `email` (string): Email address to look for.
- `phone` (string): Phone number to look for.

### `fub_list_events` (~224 tokens)

List lead events

Lead activity: registrations, inquiries, viewed/saved properties, website visits, etc. Filter by person or type. Some events are only visible in the FUB app. FUB: GET /v1/events.

Input parameters:

- `hasProperty` (boolean): Only events with (or without) a property attached.
- `limit` (integer): Page size, 1-100 (FUB default 10).
- `next` (string): Cursor from the previous page's _metadata.next. Recommended over offset.
- `offset` (integer): Rows to skip. For deep paging prefer `next`.
- `personId` (integer): Only events for this person.
- `propertyAddress` (string): Partial match on the property address.
- `type` (string): Comma-separated event types, e.g. "Registration,Property Inquiry". One of: Registration, Inquiry, Seller Inquiry, Property Inquiry, General Inquiry, Viewed Property, Saved Property, Visited Website,…

### `fub_list_calls` (~124 tokens)

List calls

Logged phone calls with outcome, direction and duration. Filter by person or number. FUB: GET /v1/calls.

Input parameters:

- `fromNumber` (string): Calls from this number.
- `limit` (integer): Page size, 1-100 (FUB default 10).
- `offset` (integer): Rows to skip. For deep paging prefer `next`.
- `personId` (integer): Only calls with this person.
- `phone` (string): Calls to or from this person's number.
- `toNumber` (string): Calls to this number.

### `fub_list_text_messages` (~120 tokens)

List text messages

Text messages for a person or a phone number (message bodies may be hidden by FUB for privacy). FUB: GET /v1/textMessages.

Input parameters:

- `fromNumber` (string): Texts sent from this number.
- `limit` (integer): Page size, 1-100 (FUB default 10).
- `offset` (integer): Rows to skip. For deep paging prefer `next`.
- `personId` (integer): Only texts with this person.
- `toNumber` (string): Texts sent to this number.

### `fub_list_tasks` (~234 tokens)

List tasks

Tasks (follow-ups, calls, showings…). Filter by person, assignee, type, completion, or due window (due="today"|"overdue"|"upcoming"). FUB: GET /v1/tasks.

Input parameters:

- `assignedTo` (string): Only tasks assigned to this user (full name).
- `assignedUserId` (integer): Only tasks assigned to this user id.
- `due` (string): Due window.
- `dueEnd` (string): Due at or before this time.
- `dueStart` (string): Due at or after this time.
- `isCompleted` (boolean): Completed or not.
- `limit` (integer): Page size, 1-100 (FUB default 10).
- `name` (string): Partial match on task name.
- `offset` (integer): Rows to skip. For deep paging prefer `next`.
- `personId` (integer): Only tasks for this person.
- `type` (string): Comma-separated types. One of: Follow Up, Call, Text, Email, Appointment, Showing, Closing, Open House, Thank You.

### `fub_list_appointments` (~156 tokens)

List appointments

Calendar appointments with invitees, type and outcome. Filter by person, user, or a start+end window (both required together). FUB: GET /v1/appointments.

Input parameters:

- `end` (string): Window end (ISO-8601). Must be combined with start.
- `limit` (integer): Page size, 1-100 (FUB default 10).
- `offset` (integer): Rows to skip. For deep paging prefer `next`.
- `personId` (string): Person id, or a comma-separated list of ids.
- `start` (string): Window start (ISO-8601). Must be combined with end.
- `userId` (integer): Only appointments for this user.

### `fub_list_deals` (~165 tokens)

List deals

Deals (transactions) with stage, price, people, agents and commission. Filter by pipeline, user, person or status. The response metadata includes totalByStageId. FUB: GET /v1/deals.

Input parameters:

- `includeArchived` (boolean): Include Archived deals.
- `includeDeleted` (boolean): Include Deleted deals.
- `limit` (integer): Page size, 1-100 (FUB default 10).
- `offset` (integer): Rows to skip. For deep paging prefer `next`.
- `personId` (integer): Only deals for this person.
- `pipelineId` (integer): Only deals in this pipeline.
- `status` (string): Only deals with this status.
- `userId` (integer): Only deals for this user.

### `fub_list_pipelines` (~54 tokens)

List deal pipelines

Deal pipelines with their stages (the stage ids that fub_create_deal / fub_update_deal take). FUB: GET /v1/pipelines.

Input parameters:

- `name` (string): Exact pipeline name.

### `fub_list_stages` (~102 tokens)

List contact stages

Contact lifecycle stages (Lead, Nurture, Past Client, Trash…) with people counts — the names fub_search_people and fub_update_person take as "stage". FUB: GET /v1/stages.

Input parameters:

- `limit` (integer): Page size, 1-100 (FUB default 10).
- `offset` (integer): Rows to skip. For deep paging prefer `next`.
- `sort` (string): Sort order.

### `fub_list_users` (~126 tokens)

List users (agents)

Users in the account (agents, brokers, lenders) — the ids to assign people, tasks and deals to. FUB: GET /v1/users.

Input parameters:

- `email` (string): Email address.
- `limit` (integer): Page size, 1-100 (FUB default 10).
- `name` (string): Exact full name.
- `offset` (integer): Rows to skip. For deep paging prefer `next`.
- `role` (string): e.g. "Broker", "Agent", "Lender".
- `sort` (string): Sort order.

### `fub_list_custom_fields` (~102 tokens)

List custom fields

The account's contact custom fields: label, API name (customXxx), type and dropdown choices. Use the name as a key in customFields. FUB: GET /v1/customFields.

Input parameters:

- `label` (string): Find a custom field by label.
- `limit` (integer): Page size, 1-100 (FUB default 10).
- `offset` (integer): Rows to skip. For deep paging prefer `next`.

### `fub_send_lead_event` (~253 tokens)

Send in a lead / lead event

Add a new lead or record activity on an existing one — FUB's documented way to create leads. FUB de-duplicates by email/phone (or use person.id to target a contact), routes the lead per Lead Flow, notifies the agent and runs action plans for Registration / Inquiry types. A 204 means the lead flow for this source is archived and the event was ignored. FUB: POST /v1/events.

Input parameters:

- `description` (string): Any additional information.
- `message` (string): A message from the lead.
- `occurredAt` (string): ISO-8601 time it happened. Events older than a day are historical and do not trigger workflows.
- `pageTitle` (string): For Viewed Page events.
- `pageUrl` (string): For Viewed Page events.
- `person` (object, required): The lead.
- `property` (object): The property the event is about.
- `source` (string): Lead source name, e.g. "MyWebsite.com". Used for Lead Flow routing.
- `system` (string): Name of the system sending the lead.
- `type` (string, required): Event type. "Inquiry" becomes Property or General Inquiry automatically.

### `fub_update_person` (~306 tokens)

Update a person

Update a contact's fields. CAUTION: `tags` REPLACES all tags unless mergeTags is true; `phones` and `emails` REPLACE the full list (send existing ones too). Setting contacted=true pauses action plans. source/sourceUrl cannot be changed after creation. FUB: PUT /v1/people/{id}.

Input parameters:

- `addresses` (array)
- `assignedLenderId` (integer)
- `assignedLenderName` (string)
- `assignedPondId` (integer)
- `assignedTo` (string): Full name of the agent.
- `assignedUserId` (integer)
- `background` (string): Background notes (multi-line).
- `contacted` (boolean)
- `customFields` (object): Account custom fields, keyed by their API name (e.g. {"customBirthday": "1990-02-16"}). See the `name` column of fub_list_custom_fields. null clears a value.
- `emails` (array)
- `firstName` (string)
- `id` (integer, required): The person id.
- `lastName` (string)
- `mergeTags` (boolean): Merge `tags` into the existing tags instead of replacing them.
- `phones` (array)
- `price` (integer)
- `stage` (string): Stage name (see fub_list_stages).
- `tags` (array)
- `timeframeId` (integer)

### `fub_add_note` (~72 tokens)

Add a note

Add a note to a contact's timeline. FUB: POST /v1/notes.

Input parameters:

- `body` (string, required): Note content.
- `isHtml` (boolean): Render HTML tags in the body.
- `personId` (integer, required): The person id.
- `subject` (string): Note title.

### `fub_log_call` (~145 tokens)

Log a call

Record a phone call made or received outside FUB, with its outcome. Does not place a call. FUB: POST /v1/calls.

Input parameters:

- `duration` (integer): Seconds.
- `fromNumber` (string)
- `isIncoming` (boolean, required): true for an incoming call, false for outgoing.
- `note` (string): Call notes.
- `outcome` (string)
- `personId` (integer, required): The person id.
- `phone` (string, required): The number called or calling.
- `recordingUrl` (string)
- `toNumber` (string)
- `userId` (integer): User who took the call (admins only).

### `fub_create_task` (~177 tokens)

Create a task

Create a task on a contact, assigned to a user (assignedUserId or assignedTo is required). FUB: POST /v1/tasks.

Input parameters:

- `assignedTo` (string): Full name of the user to assign (or give assignedUserId).
- `assignedUserId` (integer): User id to assign (or give assignedTo).
- `dueDate` (string): YYYY-MM-DD.
- `dueDateTime` (string): With time, e.g. 2026-11-16T15:00:00-05:00.
- `isCompleted` (boolean)
- `name` (string): Task name.
- `personId` (integer, required): The person id.
- `remindSecondsBefore` (integer): Reminder lead time; only for tasks with a due time.
- `type` (string)

### `fub_update_task` (~104 tokens)

Update a task

Update a task — mark it complete, rename, retype or reassign it. FUB: PUT /v1/tasks/{id}.

Input parameters:

- `assignedTo` (string)
- `assignedUserId` (integer)
- `id` (integer, required): The task id.
- `isCompleted` (boolean): Mark complete (true) or reopen (false).
- `name` (string)
- `personId` (integer)
- `type` (string)

### `fub_create_deal` (~206 tokens)

Create a deal

Create a deal in a pipeline stage (stage ids from fub_list_pipelines). Include userIds — a deal with no users is invisible to agents. FUB: POST /v1/deals.

Input parameters:

- `agentCommission` (integer): Agent commission split.
- `commissionValue` (integer)
- `description` (string)
- `dueDiligenceDate` (string)
- `earnestMoneyDueDate` (string)
- `finalWalkThroughDate` (string)
- `mutualAcceptanceDate` (string)
- `name` (string, required): Deal name.
- `peopleIds` (array): Contact ids on the deal.
- `possessionDate` (string)
- `price` (integer)
- `projectedCloseDate` (string): Projected close date.
- `stageId` (integer, required): Pipeline stage id.
- `teamCommission` (integer): Team commission split.
- `userIds` (array): User (agent) ids on the deal.

### `fub_update_deal` (~180 tokens)

Update a deal

Update a deal — move it to another stage, change price, dates, people or agents. peopleIds/userIds replace the full list. FUB: PUT /v1/deals/{id}.

Input parameters:

- `commissionValue` (integer)
- `description` (string)
- `dueDiligenceDate` (string)
- `earnestMoneyDueDate` (string)
- `finalWalkThroughDate` (string)
- `id` (integer, required): The deal id.
- `mutualAcceptanceDate` (string)
- `name` (string)
- `peopleIds` (array)
- `possessionDate` (string)
- `price` (integer)
- `projectedCloseDate` (string): Projected close date.
- `stageId` (integer): Move to this pipeline stage.
- `userIds` (array)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-usefulapi-follow-up-boss/follow-up-boss#diagnostics

## Score history

- 2026-10-04: 75
- 2026-10-03: 75
- 2026-10-02: 75
- 2026-10-01: 74
- 2026-09-30: 69
- 2026-09-29: 18

## Common questions

### What is the io.usefulapi/follow-up-boss MCP server?

io.usefulapi/follow-up-boss is an MCP server listed in the public MCP registry as io.usefulapi/follow-up-boss. Search Follow Up Boss leads, review calls and deals, and add notes, tasks and deal updates. This page covers its hosted endpoint (https://follow-up-boss.usefulapi.io/mcp).

### Is the io.usefulapi/follow-up-boss MCP server safe to use?

io.usefulapi/follow-up-boss scores 75 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the io.usefulapi/follow-up-boss MCP server expose?

io.usefulapi/follow-up-boss exposes 22 tools: fub_get_identity, fub_search_people, fub_get_person, fub_check_duplicate_person, fub_list_events, and 17 more. Their descriptions and schemas cost roughly 3,566 tokens of context every time the server is loaded.

### Does the io.usefulapi/follow-up-boss MCP server require authentication?

Yes. io.usefulapi/follow-up-boss asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

### Is the io.usefulapi/follow-up-boss MCP server still maintained?

io.usefulapi/follow-up-boss is still listed as active in the MCP registry. We last reached this channel on 4 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://follow-up-boss.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-follow-up-boss/follow-up-boss.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-follow-up-boss/follow-up-boss.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-follow-up-boss/follow-up-boss
