Use maxclicks in Windsurf
Give Windsurf's agent the workspace context it needs to build a maxclicks integration. Use MCP for callable API tools and skills for the data model and conventions, then verify the connected space with a read request.
Create a key at https://app.maxclicks.ai/space/-/settings/developers. A key is scoped to one space. Set it as MAXCLICKS_API_KEY or send it as a bearer token.
The existing SDK, CLI, and MCP tools cover an earlier API surface. Use the current REST contract for event readiness/identities, deletion polling, workflow history, and new idempotent operations; see client coverage.
Option A: MCP server
The maxclicks MCP server exposes the Public API v1 as tools. It runs hosted or local.
Hosted
Point Windsurf at the streamable HTTP endpoint https://mcp.maxclicks.ai/mcp. Authenticate with your key as a bearer token:
Authorization: Bearer max_...
Add it from Cascade's MCP settings as a remote server with that URL and header.
Local (stdio)
Run the server through npx and pass your key in the environment. Add this to Windsurf's MCP config:
{
"mcpServers": {
"maxclicks": {
"command": "npx",
"args": ["-y", "maxclicks-mcp"],
"env": { "MAXCLICKS_API_KEY": "max_..." }
}
}
}
Reload Windsurf. Cascade lists the maxclicks tools once the server connects.
maxclicks-mcp is not published to npm, so npx -y maxclicks-mcp does not
resolve and this config does not start a server today. Use the hosted endpoint
above.
Tools
The MCP server exposes schema and attribute reads, so use list_schemas and list_attributes to inspect the model before writing records. Create and configure those definitions in the app. Check the current API reference for the supported operations, and use direct HTTP when a newer operation is not available through the MCP tools.
| Group | Tools |
|---|---|
| Meta | whoami |
| Schemas, attributes (read) | list_schemas, get_schema, list_attributes |
| Records | list_records, get_record, create_record, upsert_record, update_record, delete_record, get_contact_audit_trail |
| Events | list_events, fire_event, fire_events_batch |
list_templates, get_template, send_template | |
| Suppressions | list_suppressions, create_suppression, delete_suppression, batch_create_suppressions, batch_delete_suppressions |
| Webhooks | list_webhooks, get_webhook, create_webhook, update_webhook, delete_webhook, rotate_webhook_secret |
| Workflows | list_workflows, get_workflow, trigger_workflow, pause_workflow, unpause_workflow, list_workflow_runs, get_workflow_run |
Segments, broadcasts, domains, senders, and topics add their own tools: mostly reads, plus creating a segment, updating a broadcast's name, audience or schedule, and sending it. An event cannot be changed once fired, so there is no tool to read one by id or update it. The MCP reference lists them all.
create_suppression and delete_suppression require an admin-scoped key.
Option B: maxclicks skills
The maxclicks skills teach Cascade how your data is shaped and how the CLI, the SDKs, and the API work, so it writes correct code instead of guessing. Install them into a skills-compatible agent with the open Agent Skills installer:
npx skills add https://maxclicks.ai
This reads https://maxclicks.ai/.well-known/skills/index.json and installs 13 skills. Update them later with npx skills update -y.
| Skill | Loads for |
|---|---|
maxclicks | Auth, the data model, the CLI/SDK/API map, and top gotchas. Entry point for any task. |
maxclicks-contacts | Creating, updating, and deleting records. |
maxclicks-events | Firing and listing events. |
maxclicks-email | Sending templates and managing suppressions. |
maxclicks-templates | What a template expects, who receives it, and which sender it uses. |
maxclicks-adaptyle | Writing template content in Adaptyle over Liquid, MJML, and HTML. |
maxclicks-segments | Building contact filters from a plain description. |
maxclicks-broadcasts | Scheduling and sending broadcasts, and reading their results. |
maxclicks-deliverability | Sending domains and senders, verified in the app and read over the API. |
maxclicks-topics | Consent topics and how sends respect them. |
maxclicks-imports | The app's bulk CSV import of records. |
maxclicks-workflows | Triggering workflows and observing runs. |
maxclicks-webhooks | Managing outgoing webhooks and verifying signatures. |
The skills drive the maxclicks CLI from the terminal. The CLI is not published to npm yet, so npm install -g maxclicks-cli does not resolve today; until it ships, use the Public API or the hosted MCP server.
The installer targets skills-compatible agents (Claude Code, Cursor, Codex, Gemini CLI, and others). Confirm your Windsurf version reads installed skills; if it does not, use the MCP server.
Which to use
- Use the MCP server when you want Cascade to act on your space during a session.
- Use the skills when you want Cascade to write CLI or SDK code that ships in your project. Either way the reach is the same: you build things in the app, and the API triggers, reads, and measures them.
You can install both. The skills teach Cascade how the platform works; the MCP tools let it act.