Getting Started
Generate an API key
Go to Settings → API & MCP and click Generate New Key. Copy the key — it is only shown once.
Configure your MCP client
Add the following to your Claude Desktop claude_desktop_config.json:
{
"mcpServers": {
"fastfollow": {
"command": "node",
"args": ["packages/mcp-server/dist/index.js", "--stdio"],
"env": {
"FASTFOLLOW_API_URL": "https://app.fastfollow.ai",
"MCP_API_KEY": "ff_sk_your_key_here"
}
}
}
}Config file locations: macOS ~/Library/Application Support/Claude/claude_desktop_config.json · Windows %APPDATA%\Claude\claude_desktop_config.json
Start using tools
Restart Claude Desktop. You will see 13 FastFollow tools available in your conversation. Try asking: "Show me my high-priority follow-ups for today."
Authentication
All requests require a valid API key passed as a Bearer token:
Authorization: Bearer ff_sk_your_key_hereFor SSE connections, you may alternatively pass the key as a query parameter:
GET /sse?apiKey=ff_sk_your_key_hereTools Reference
Click a tool name to expand its parameter reference and example request/response.
Core Workflow
Research
Actions
Intelligence
Resources Reference
Resources provide read access to live data using the resources/read MCP method. Templated URIs (containing {id}) accept any concrete value.
| URI | Description | MIME Type |
|---|---|---|
| followup://pending | All follow-ups that are due now, sorted by priority. | application/json |
| contact://{id}/timeline | Full interaction history for a specific contact (email or name). | application/json |
| deal://{id} | Details, stage, value, and recent activity for a specific deal. | application/json |
| brief://{meetingId} | Pre-meeting brief with attendees, talking points, and deal context. | application/json |
| playbook://objections | Top 50 objection response entries from the sales playbook. | application/json |
| room://{id} | Full Opportunity Room data including deal score, sections, mutual action plan, stakeholders, risk flags, and engagement timeline. | application/json |
Prompts Reference
Prompts are pre-built workflows that fetch live data and construct a rich context message for the AI. Use prompts/get to invoke them.
| Name | Description | Required Args |
|---|---|---|
| prep_for_meeting | Prepare a comprehensive briefing for an upcoming meeting, including attendee info, history, and talking points. | meetingId |
| post_meeting_workflow | Process a completed meeting end-to-end — ingest transcript and review generated follow-ups. | transcript, customerName, customerEmail |
| pipeline_review | Review your sales pipeline with deal counts, values, and recommended actions per stage. | none (stage optional) |
| objection_response | Get AI coaching on how to handle a specific sales objection using your team's playbook. | objection |
| weekly_digest | Generate a summary of this week's follow-up activity with open and reply rates. | none |
| deal_room_review | Review an Opportunity Room end-to-end — score the deal health, surface risks, and recommend the highest-priority next action to move the deal forward. | roomId |
Code Examples
Claude Desktop configuration
{
"mcpServers": {
"fastfollow": {
"command": "node",
"args": ["packages/mcp-server/dist/index.js", "--stdio"],
"env": {
"FASTFOLLOW_API_URL": "https://app.fastfollow.ai",
"MCP_API_KEY": "ff_sk_your_key_here"
}
}
}
}curl — connect via SSE
curl -N \
-H "Authorization: Bearer ff_sk_your_key_here" \
"https://mcp.fastfollow.ai/sse"TypeScript — @modelcontextprotocol/sdk
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';
const transport = new SSEClientTransport(
new URL('https://mcp.fastfollow.ai/sse?apiKey=ff_sk_your_key_here')
);
const client = new Client(
{ name: 'my-app', version: '1.0.0' },
{ capabilities: {} }
);
await client.connect(transport);
// List all available tools
const { tools } = await client.listTools();
console.log('Available tools:', tools.map(t => t.name));
// Call a tool
const result = await client.callTool({
name: 'list_followups',
arguments: { tab: 'due_today', priority: 'high' },
});
console.log(result.content);Rate Limits
Rate limits are enforced per API key using a sliding window. If you exceed the limit, the server returns 429 Too Many Requests.
| Tier | Requests / minute | Notes |
|---|---|---|
| Standard | 60 | Default for all new API keys |
| Premium | 300 | Available on Growth and above plans |
| Enterprise | 1,000 | Custom limits available — contact sales |
Need higher limits? View pricing plans or contact our sales team.