MCP server · any AI agent

The follow-up backend
for your AI agent

Capstone doesn't want to be your AI. It gives the AI you already pay for a job. One URL.

Your agent, whichever one, can record meetings, read what was discussed, keep the contact list current, propose follow-ups, and queue a WhatsApp or text message to your phone.

A person approves every send. Works with ChatGPT, Claude, Cursor, Claude Code, OpenClaw and anything else that speaks the Model Context Protocol, known as MCP.

Start 14 days free, then $25/mo

A study of 20 million LinkedIn members found that acquaintances, more than close friends, led to new jobs (Science, 2022). Capstone keeps those people warm. You approve every message, and it goes from your own email or phone.

Connect Claude

Endpoint

URL
https://www.capstoneoutreach.com/mcp/
Transport
Streamable HTTP (MCP)
Auth
OAuth 2.0 with a consent screen, or Authorization: Bearer cor_live_… using a token from Settings → API tokens
Discovery
https://www.capstoneoutreach.com/.well-known/oauth-authorization-server
Scopes
contacts:read contacts:write campaigns:read drafts:write campaigns:send meetings:read meetings:record
Cost
Included in the plan. Meeting recordings are metered (20 a month).

Connect your client

Two ways in: OAuth for clients that support it, or a scoped token for everything else.

claude.ai

Settings → Connectors → Add custom connector, with the URL above. OAuth handles sign-in and you pick scopes on the consent screen. Full walkthrough →

ChatGPT

Add a custom connector (developer mode) with the same URL. ChatGPT uses the OAuth flow and shows the same consent screen, so you never handle a token.

Claude Code

claude mcp add --transport http capstone https://www.capstoneoutreach.com/mcp/ \
  --header "Authorization: Bearer cor_live_YOUR_TOKEN"

Cursor and other mcp.json clients

{
  "mcpServers": {
    "capstone-outreach": {
      "url": "https://www.capstoneoutreach.com/mcp/",
      "headers": { "Authorization": "Bearer cor_live_YOUR_TOKEN" }
    }
  }
}

OpenClaw

OpenClaw's native MCP client connects to remote servers over Streamable HTTP and can sign in with OAuth, so it sees the same consent screen as claude.ai. Add the server under mcp.servers in openclaw.json:

Run openclaw mcp login capstone next. Approve the scopes it asks for. OpenClaw applies its normal tool policies to these tools too. You can require an approval prompt for record_meeting and queue_text on the agent side.

Prefer a token instead? Store it through OpenClaw's secret mechanism and send it as the Authorization header.

Custom agents, anything else

Point the client at the URL with the Bearer header. That is the whole integration. Mint the token with only the scopes the agent needs; every call it makes is logged against that token, and revoking the token cuts it off instantly.

Tool reference

Twenty tools. Descriptions are written for the model, so an agent picks the right one from a plain sentence.

ToolDoesScope
list_contactsSearch contacts by name, email or company.contacts:read
get_contactFull record: tags, lead tier, source, notes.contacts:read
upsert_contactCreate-or-skip, deduped by email. Safe to re-run.contacts:write
list_campaignsCampaigns with status and recipient counts.campaigns:read
list_draftsDrafts awaiting approval, or past verdicts.campaigns:read
approve_draftApprove a pending draft, optionally scheduled with start_at, so it becomes a live campaign and sends. Refused without the send scope.campaigns:send
update_contactCorrect fields on an existing contact (name, email, phone, title, company, notes).contacts:write
get_draftOne draft: steps, recipients, reasoning, rejection feedback.campaigns:read
submit_draftPropose a follow-up sequence (email or text steps) for review.drafts:write
list_meetingsRecent and upcoming calendar meetings with attendees routed to contact ids.meetings:read
get_meeting_notesThe dated meeting summaries on a contact's record.meetings:read
find_cold_leadsPeople from past meetings with no recent contact, for revival.meetings:read
get_recording_statusRecordings used this month and the plan's allowance.meetings:read
record_meetingSend the notetaker to a Zoom, Meet, Teams or Webex link.meetings:record
enable_auto_recordTurn auto-record on or off. Consent must already have been accepted by a person.meetings:record
queue_textQueue a one-off text or WhatsApp message to a contact, now or scheduled for later. It opens prefilled on the operator's phone; they send it from their own number or WhatsApp account.drafts:write
mark_repliedRecord that a contact answered by text, WhatsApp, phone or in person. Stops their follow-ups and queued texts and logs it. Email replies are caught automatically.contacts:write
set_remindersPut contacts (one or hundreds) on a recurring keep-in-touch cadence: interval, channel (email, text, WhatsApp, or a call reminder), and free-text context that steers each AI draft. When due, the operator gets the drafted message by email; nothing sends to the contact automatically.contacts:write
list_remindersActive cadences with channel, interval, context and next due date.contacts:read
cancel_reminderStop one cadence by its reminder id.contacts:write

Approval is the only tool that can make email leave, and it sits behind campaigns:send, a scope no consent screen or token form pre-checks.

The loop an agent runs

This is what "automate my meeting follow-ups" turns into on the wire.

  1. Once: enable_auto_record. From here the notetaker joins external meetings on its own; the agent is not in the loop per meeting.
  2. After each call: the transcript is summarized onto each attendee's contact record and a draft per external attendee lands in the review queue. The agent can read it with list_drafts and get_draft.
  3. On request: get_meeting_notes answers "what did we agree"; submit_draft proposes a revision; find_cold_leads plus submit_draft revives a quarter of stalled conversations in one pass; queue_text puts a WhatsApp or text follow-up on the operator's phone, ready to send.
  4. Always: a person approves in Capstone Outreach (or, with the opt-in send scope, tells the agent to approve a specific draft), and the message sends from their own inbox.

Design guarantees

Propose-only by default

Approval is refused unless the operator grants the send scope, which nothing pre-checks. The human review queue is the product; agent approval is an opt-in for operators who want to schedule from chat.

Scoped and audited

Tokens carry exactly the scopes you grant. Every tool call is logged against its token, including refused ones.

Spend is bounded

Recordings are capped per plan and the agent is told what remains. Internal meetings never consume one.

Consent is human

An agent can toggle auto-record but can never establish recording consent. That is accepted once, by you, in the app.

Give your agent a follow-up backend

14-day free trial. Mint a token in Settings, or connect with OAuth from claude.ai or ChatGPT.

Start 14 days free, then $25/mo

A study of 20 million LinkedIn members found that acquaintances, more than close friends, led to new jobs (Science, 2022). Capstone keeps those people warm. You approve every message, and it goes from your own email or phone.