Stracker MCP Server 41 tools

A Model Context Protocol server that exposes the Stracker CRM API to AI agents. Works with Cursor, Claude Desktop, and any MCP-compatible client. 41 tools covering Companies, Contacts, Venue leads, Notes, Leads & activities, Agents, Users, and Schedules.

Hosted MCP (recommended)

Point your client at the public streamable-HTTP endpoint:

https://mcp.strackerapp.com/mcp

Auth: same Bearer API keys as the REST API.

Authorization: Bearer sk_prod_…
# or
X-Stracker-Api-Key: sk_prod_…

The Worker forwards each tool call to https://api.strackerapp.com/v1. Discovery / health (no auth): GET https://mcp.strackerapp.com/, GET https://mcp.strackerapp.com/healthz.

Configure your client

Settings → MCP → Add server (HTTP / remote). Example mcp.json fragment:

{
  "mcpServers": {
    "stracker": {
      "url": "https://mcp.strackerapp.com/mcp",
      "headers": {
        "Authorization": "Bearer sk_prod_…"
      }
    }
  }
}

If your Claude build supports remote MCP over HTTP, add the hosted URL with a Bearer header. Otherwise use a local stdio bridge that forwards to the REST API (see Local PHP stdio below).

{
  "mcpServers": {
    "stracker": {
      "url": "https://mcp.strackerapp.com/mcp",
      "headers": {
        "Authorization": "Bearer sk_prod_…"
      }
    }
  }
}

Tools

41 tools total. Generated from mcp/worker/codegen/routes.yaml in the strackerapp repo. Admin-gated tools are marked.

list_companies
List CRM companies in the org, optionally filtered by search or type.
GET /companies
get_company
Get a single company by id.
GET /companies/{company_id}
create_company
Create a CRM company. company_name is required.
POST /companies
update_company
Update a company (PATCH). Only provided fields are changed.
PATCH /companies/{company_id}
list_contacts
List contacts, optionally filtered by company_id or venue_id.
GET /contacts
get_contact
Get a single contact by id.
GET /contacts/{contact_id}
create_contact
Create a contact. Requires name plus company_id and/or venue_id.
POST /contacts
update_contact
Update a contact (PATCH).
PATCH /contacts/{contact_id}
list_venue_leads
List venue leads, optionally filtered by company, status, city, or owner email.
GET /venue-leads
get_venue_lead
Get a single venue lead by id.
GET /venue-leads/{venue_lead_id}
update_venue_lead
Update a venue lead (PATCH).
PATCH /venue-leads/{venue_lead_id}
list_notes
List notes for an entity. Requires entity_type (venue_lead|lead|company|contact) and entity_id.
GET /notes
get_note
Get a single note by id. Pass entity_type when known.
GET /notes/{note_id}
create_note
Create a note on an entity. Requires entity_type, entity_id (or lead_id/company_id/contact_id/venue_lead_id), and content.
POST /notes
update_note
Update a note's content (PATCH).
PATCH /notes/{note_id}
delete_note
Delete a note by id.
DELETE /notes/{note_id}
list_leads
List sales leads in the org.
GET /leads
get_lead
Get a single sales lead by id.
GET /leads/{lead_id}
create_lead
Create a sales lead. Provide company_name and/or first_name/last_name.
POST /leads
update_lead
Update a sales lead (PATCH). Use deal_stage_id or assigned_to here, or the dedicated stage/assignee tools.
PATCH /leads/{lead_id}
list_lead_statuses
List deal stages / statuses available for leads.
GET /leads/statuses
list_lead_activities
List activity timeline for a lead (followups).
GET /leads/{lead_id}/activities
get_lead_activity
Get a single lead activity by id.
GET /leads/{lead_id}/activities/{activity_id}
create_lead_activity
Create a lead activity (Call/Text/Meeting/Email/…). Optional deal_stage_id moves the stage.
POST /leads/{lead_id}/activities
update_lead_activity
Update a lead activity, or set action=complete|uncomplete|reschedule|delete.
PATCH /leads/{lead_id}/activities/{activity_id}
delete_lead_activity
Delete a lead activity (same as action=delete; no calendar cancel email).
DELETE /leads/{lead_id}/activities/{activity_id}
set_lead_stage
Move a lead to a deal stage.
POST /leads/{lead_id}/stage
set_lead_assignee
Assign a lead to an org member (email or user_id). Pass assigned_to null to unassign.
POST /leads/{lead_id}/assignee
list_agents admin
List agent users in the org (admin).
GET /agents
get_agent admin
Get an agent including reports_to (admin).
GET /agents/{agent_id}
create_agent admin
Create an agent user. Requires display_name and reports_to_user_id (human manager in same org).
POST /agents
create_agent_credential admin
Create an API credential for an agent (admin).
POST /agents/{agent_id}/credentials
rotate_agent_credential admin
Rotate an agent's API credential (admin).
POST /agents/{agent_id}/credentials/rotate
reveal_agent_credential admin
Reveal an agent credential secret by key id (admin).
GET /agents/{agent_id}/credentials/{key_id}/reveal
mint_agent_token admin
Mint a UI login token for an agent (admin).
POST /agents/{agent_id}/token/mint
revoke_agent_token admin
Revoke a UI login token for an agent (admin).
POST /agents/{agent_id}/token/revoke
list_users
List active org users (id = users.id for assignee; includes org_user_id).
GET /users
list_schedules
List weekly availability windows for a sales rep (user_id required).
GET /schedules
get_availability_slots
List bookable meeting slots for a sales rep (same rules as sales UI).
GET /schedules/slots
list_meeting_invites
List scheduled meeting invites (followups of type Meeting).
GET /meeting-invites
schedule_meeting
Schedule a meeting invite on a free slot. Requires lead_id, sales rep (user_id/user_email/rep_email), and followup_date.
POST /meeting-invites

Local PHP stdio (local agents only)

The PHP stdio MCP under strackerapp/main/api/mcp/ is for local agents only. Do not expose it publicly. Cloud clients should use mcp.strackerapp.com.

Worker source: strackerapp/mcp/worker/ (Worker name stracker-mcp). See the Worker README for wrangler deploy and DNS/route binding notes.

Environments

EnvMCPUpstream RESTKeys
Productionhttps://mcp.strackerapp.com/mcphttps://api.strackerapp.com/v1sk_prod_…
Local Worker + local APIhttp://127.0.0.1:8787/mcphttp://127.0.0.1:8888/api/v1sk_dev_…

Troubleshooting

401 Unauthorized

Missing/invalid Bearer key, or mixing sk_prod_ with local / sk_dev_ with production.

501 on OAuth paths

Expected until device grant ships. Use Bearer auth.

Need a missing endpoint?

Add a row to routes.yaml, run npm run codegen, and deploy the Worker — or call the REST API directly.