Back to Articles
Windsurf Cascade & MCP
•14 min read•Windsurf IDE & MCP v1.2 Verified

Windsurf Cascade + Signbee MCP: Autonomous Document Signing in IDEs (2026)

Software engineering doesn't stop at git push. Learn how to wire Signbee's Model Context Protocol (MCP) server into Windsurf Cascade via mcp_config.json and .windsurfrules to automate UAT release sign-offs, security addendums, and client statements of work directly from your editor.

Quick Answer (TL;DR)

Windsurf Cascade MCP Integration • Zero-Switch Legal Execution

To enable autonomous document signing inside Windsurf IDE, register npx -y signbee-mcp in ~/.codeium/windsurf/mcp_config.json with your SIGNBEE_API_KEY. Windsurf's agentic engine, Cascade, automatically discovers four tools: send_document (for Markdown agreements generated from repo diffs or specs), send_document_pdf (for pre-existing local PDF contracts), check_document_status, and list_documents. Paired with a project-level .windsurfrules governance file, Cascade drafts legally binding agreements, pauses for human-in-the-loop confirmation, binds Party A via API key authentication, and dispatches mobile-ready SHA-256 signing links to Party B in under 850ms.

Native stdio MCP transport
Markdown & binary PDF support
$0.50/doc + 5 free monthly

1. Why Engineering Leaders Are Moving Contract Execution into Windsurf Cascade

In 2026, the artificial boundary between writing production code and executing the commercial or compliance agreements that govern that code has collapsed. Whether you run a technical consultancy shipping milestone deliverables, a SaaS security team issuing Data Processing Addendums (DPAs) after a schema change, or a CTO onboarding contract engineers into a monorepo, every major engineering workflow is gated by formal sign-offs.

Historically, those sign-offs forced developers out of their flow state. An engineer finishing a sprint had to export a changelog from GitHub, copy-paste the deliverables into Google Docs or Microsoft Word, export a PDF, log into a legacy browser portal—often paying inflated enterprise seat fees detailed in our DocuSign API pricing breakdown—and manually drag signature fields onto page four. Across a 25-person engineering org, context-switching between the IDE and web-based e-signature portals wastes an average of 3.8 hours per release cycle and delays invoice collection by up to six business days.

Codeium's Windsurf IDE changed the paradigm with Cascade—a deep-context agentic runtime that tracks your real-time AST edits, terminal history, git commit graph, and external Model Context Protocol (MCP) tools in a unified flow. Unlike first-generation chat sidebars that merely suggest code snippets, Cascade operates as an autonomous multi-step orchestrator. When you connect Cascade to one of the best e-signature APIs for developers in 2026 via MCP, the agent already holds the exact git diff, API specification, or compliance artifact in working memory. It can synthesize a formal acceptance document or pick up a pre-existing PDF contract from your workspace and dispatch it for two-party cryptographic execution without you ever opening a browser tab.

“The highest-leverage MCP tools inside an AI IDE aren't just linters or database inspectors—they are external state-transition tools that close business loops. When Windsurf Cascade can read a release tag, generate the client UAT acceptance certificate, and dispatch the e-signature envelope in one prompt, delivery velocity doubles.”— Michael Beckett, Founder at Signbee

2. How Windsurf Cascade Orchestrates MCP Tool Servers Under the Hood

Before editing configuration files, it helps to understand how Windsurf's Cascade runtime communicates with local MCP servers. Windsurf implements the official Model Context Protocol specification over standard input/output (stdio) as well as Server-Sent Events (SSE). When Windsurf boots or reloads its MCP registry, it spawns each configured command in an isolated child process and initiates a JSON-RPC 2.0 handshake.

01

Child Process Spawn & Environment Injection

Windsurf reads ~/.codeium/windsurf/mcp_config.json, resolves the npx -y signbee-mcp binary, and injects the SIGNBEE_API_KEY into the process environment. The API key remains strictly inside the local Node.js process memory and is never exposed in prompt tokens sent to upstream LLMs.

02

Capability Discovery (tools/list)

Cascade sends a JSON-RPC tools/list request. The signbee-mcp server responds with strongly typed JSON Schemas for send_document, send_document_pdf, check_document_status, and list_documents.

03

Contextual Synthesis & Human Approval Gate (tools/call)

When you prompt Cascade to send a contract or sign-off sheet, Cascade combines workspace context (e.g., git log, package.json, or a local PDF path) with your .windsurfrules policy, presents the tool call parameters in the Cascade UI for explicit developer confirmation, and dispatches the HTTPS request to https://signb.ee/api/v1/send.

3. Step-by-Step Configuration: ~/.codeium/windsurf/mcp_config.json

Connecting Signbee to Windsurf takes less than two minutes and requires zero SDK boilerplate or Docker containers. You can start with our free e-signature API tier (which includes 5 complimentary documents every month) by generating an API key at signb.ee/dashboard.

Once you have your signbee_live_... key, open Windsurf, click the Cascade icon in the right-hand panel, click the MCP Hammer icon in the top toolbar, and select View Raw Config. Alternatively, edit ~/.codeium/windsurf/mcp_config.json directly from your terminal:

~/.codeium/windsurf/mcp_config.jsonJSON Configuration
{
  "mcpServers": {
    "signbee": {
      "command": "npx",
      "args": [
        "-y",
        "signbee-mcp"
      ],
      "env": {
        "SIGNBEE_API_KEY": "signbee_live_9f8e7d6c5b4a3f2e1d0c9b8a7f6e5d4c",
        "SIGNBEE_DEFAULT_SENDER_NAME": "Alex Rivera — Principal Architect",
        "SIGNBEE_DEFAULT_SENDER_EMAIL": "alex.rivera@acme-systems.io"
      },
      "disabled": false
    }
  }
}

Troubleshooting Node.js & NVM Path Resolution on macOS and Windows

Because Windsurf is a desktop Electron application, launching it from macOS Spotlight, the Dock, or the Windows Start Menu means it may not inherit the interactive shell PATH defined in your ~/.zshrc or ~/.bashrc. If you use nvm, fnm, or volta and see a red status indicator next to signbee in Windsurf's MCP toolbar (`spawn npx ENOENT`), specify the absolute path to your Node.js npx binary and pass PATH explicitly in the env block:

  • macOS / Linux (NVM): Run which npx in your terminal (e.g., /Users/you/.nvm/versions/node/v22.14.0/bin/npx) and use that full path as "command", while adding "PATH": "/Users/you/.nvm/versions/node/v22.14.0/bin:/usr/local/bin:/usr/bin:/bin" inside "env".
  • Windows 11: Set "command": "C:\\Program Files\\nodejs\\npx.cmd" so Windows spawns the command wrapper cleanly without PowerShell execution policy warnings.

Signbee MCP Tool Registry Exposed to Windsurf Cascade

Once connected, clicking the green 4 tools available badge next to signbee in Windsurf reveals the complete tool surface:

MCP Tool NamePrimary Input ParametersUnderlying REST EndpointMedian LatencyIdeal Windsurf Use Case
send_documenttitle, markdown, recipient_name, recipient_email, expires_in_daysPOST /api/v1/send680msDrafting UAT sign-offs, SOWs, NDAs, or change orders from codebase diffs
send_document_pdffile_path (or pdf_url), title, recipient_name, recipient_emailPOST /api/v1/send (pdf_base64)820msDispatching pre-designed legal PDFs, SOC 2 reports, or board resolutions
check_document_statusdocument_idGET /api/v1/documents/[id]140msVerifying whether a client has signed before triggering a production deploy
list_documentsstatus, limitGET /api/v1/documents190msAuditing all pending or completed contracts directly inside the IDE chat

4. Enforcing Contract Governance & Human-in-the-Loop with .windsurfrules

Autonomous tool execution is powerful, but legal contract dispatch is a state-mutating external operation that sends real emails to clients and cryptographically binds Party A. You should never allow an IDE agent to guess a counterparty's email address or dispatch an agreement without presenting a structured pre-flight summary first.

Windsurf provides first-class workspace governance through the .windsurfrules file in the root of your repository (or global_rules.md in your Codeium settings). By committing a .windsurfrules contract policy into your git repository, every engineer on your team inherits identical formatting standards, mandatory governing-law clauses, and a strict human-in-the-loop confirmation protocol:

.windsurfrules — Workspace Contract & E-Signature Governance PolicyMarkdown Rules
# Signbee MCP E-Signature & Contract Governance Rules (.windsurfrules)

When asked to draft, send, or check any legal agreement, UAT release sign-off, Statement of Work (SOW), NDA, or security addendum using the `signbee` MCP server:

## 1. Tool Selection Policy
- Use `send_document` when drafting a new agreement from repository context, git commits, PR descriptions, or markdown templates.
- Use `send_document_pdf` when the user references an existing `.pdf` file in the workspace (e.g., `./docs/contracts/*.pdf`). Never rewrite an existing binary PDF into Markdown unless explicitly asked to modify clauses.

## 2. Document Typography & Structure (for send_document)
- Always begin with a top-level H1 (`# Title`) matching the `title` parameter.
- Include an explicit "Effective Date" in ISO-8601 format and identify both Party A (Sender) and Party B (Recipient) with legal entity names.
- Use GitHub-Flavored Markdown (GFM) pipe tables (`| Deliverable | Commit SHA | Status | Fee |`) for milestone schedules, API SLA metrics, or pricing breakdowns.
- Do NOT insert ASCII signature lines (`_______`) at the bottom of the Markdown body. Signbee automatically appends a cryptographic A4 SHA-256 Signing Certificate for both Party A and Party B.

## 3. Mandatory Human-in-the-Loop Pre-Flight Gate
- NEVER invoke `send_document` or `send_document_pdf` with guessed or placeholder email addresses (e.g., `client@example.com`).
- Before calling the MCP tool, output a concise **Pre-Flight Dispatch Card** in the Cascade chat showing:
  1. Document Title & Mode (`Markdown Compilation` vs `Direct Binary PDF`)
  2. Party A (Authenticated Sender) & Party B (Recipient Name + Email)
  3. Expiration Window (`expires_in_days`, default 7 days)
  4. Clause / Deliverable Summary
- Wait for the user to confirm or click "Run Tool" in Windsurf Cascade.

5. Workflow 1: Autonomous Markdown Contract Generation (send_document)

Let's walk through a concrete daily scenario for software agencies and B2B engineering teams: automated User Acceptance Testing (UAT) & milestone sign-off. Suppose you have just merged the final pull request for Phase 2 of a client build (`v2.4.0`), and your commercial agreement stipulates that the client VP of Engineering must sign a formal Milestone Acceptance Certificate before the milestone invoice is released.

Instead of spending 30 minutes assembling a document by hand, you open Windsurf Cascade and prompt:

@Cascade: Read the git commits between tag v2.3.0 and v2.4.0 along with docs/milestones/phase-2-spec.md. Draft a formal Phase 2 UAT Milestone Acceptance Certificate referencing the exact commit hashes and test suite pass metrics, and send it via Signbee to Elena Vance at elena.vance@horizonfintech.io with a 7-day expiry.

Cascade inspects your local git history, formats the deliverables table in CommonMark, displays the pre-flight summary required by .windsurfrules, and executes send_document. Behind the scenes, Signbee's pdf-lib layout engine compiles the Markdown into an A4 PDF with proportional table column widths, cross-page header repetition, and UTF-8 / CJK font support.

6. Workflow 2: Sending Pre-Existing Local PDFs (send_document_pdf) & CI/CD Hooks

What if your legal counsel or enterprise customer requires signing an existing, pixel-perfect PDF—such as a multi-column Master Services Agreement exported from Adobe InDesign, an official IRS / HMRC tax form, or a SOC 2 Type II bridge letter stored in your workspace at ./compliance/soc2-bridge-letter-2026.pdf?

When you ask Cascade to send that file, Cascade selects send_document_pdf. The local signbee-mcp process reads the binary file from disk, verifies the %PDF- magic header bytes, encodes the payload as Base64, and dispatches it via POST /api/v1/send. Even better, you can ask Cascade to scaffold an automated Node.js / TypeScript release-gate script that triggers the exact same API call or polls GET /api/v1/documents/[id] in your CI/CD deployment pipeline:

scripts/dispatch-release-signoff.ts — Generated inside Windsurf CascadeTypeScript / Node 22+
import fs from "node:fs";
import path from "node:path";

interface SignbeeSendResponse {
  document_id: string;
  status: "pending_recipient" | "pending_sender";
  sender: string;
  recipient: string;
  expires_at: string;
  webhook_secret?: string;
}

export async function dispatchReleasePdfForSignature(params: {
  pdfRelativePath: string;
  releaseTag: string;
  recipientName: string;
  recipientEmail: string;
  webhookUrl?: string;
}): Promise<SignbeeSendResponse> {
  const apiKey = process.env.SIGNBEE_API_KEY;
  if (!apiKey) {
    throw new Error("Missing SIGNBEE_API_KEY in environment variables");
  }

  const resolvedPath = path.resolve(process.cwd(), params.pdfRelativePath);
  const pdfBuffer = fs.readFileSync(resolvedPath);

  if (!pdfBuffer.subarray(0, 5).toString("ascii").startsWith("%PDF")) {
    throw new Error(`File at ${resolvedPath} is not a valid binary PDF`);
  }

  const response = await fetch("https://signb.ee/api/v1/send", {
    method: "POST",
    headers: {
      "Authorization": `Bearer ${apiKey}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      title: `Production Release Sign-Off (${params.releaseTag})`,
      pdf_base64: pdfBuffer.toString("base64"),
      recipient_name: params.recipientName,
      recipient_email: params.recipientEmail,
      expires_in_days: 7,
      webhook_url: params.webhookUrl,
    }),
  });

  if (!response.ok) {
    const errorPayload = await response.text();
    throw new Error(`Signbee API error (${response.status}): ${errorPayload}`);
  }

  return (await response.json()) as SignbeeSendResponse;
}

7. Benchmark: Windsurf Cascade + Signbee MCP vs. Legacy Portal Workflows

For engineering managers evaluating whether to standardize on an MCP-native e-signature workflow or continue using browser-based enterprise portals or self-hosted stacks (see our open-source e-signature API comparison and affordable e-signature API integration guide), the operational metrics are decisive:

Workflow MetricWindsurf Cascade + Signbee MCPCustom REST SDK IntegrationLegacy Web Portal (DocuSign / Adobe)
Initial Setup Time90 seconds (mcp_config.json)1–2 hours (API route + webhook)Days (OAuth JWT + template tagging)
Time to Dispatch 1 UAT Contract12 seconds (1 Cascade prompt)850ms (automated trigger)14–22 minutes (manual export & tag)
Git Commit & Diff AwarenessNative (reads workspace AST & git log)Requires custom CI parser scriptZero (manual copy-paste)
Coordinate Tagging Required?No (Auto-appended A4 SHA-256 Cert)No (Signbee REST API)Yes (x/y pixel tags or anchor strings)
Cost per Executed Envelope$0.50/doc (5 free/mo)$0.50/doc (5 free/mo)$2.50 – $5.80/envelope + seat fees

Furthermore, teams building customer-facing SaaS portals inside Windsurf can combine this internal MCP workflow with Signbee's white-label e-signature API capabilities and transparent 2026 e-signature API pricing, ensuring that both internal developer operations and external customer signing ceremonies run on a single unified API key.

8. Frequently Asked Questions: Windsurf Cascade & Signbee MCP

Where is the mcp_config.json file located in Windsurf IDE?

In Windsurf IDE (built by Codeium), the global Model Context Protocol configuration file is located at ~/.codeium/windsurf/mcp_config.json on macOS and Linux, or %USERPROFILE%\.codeium\windsurf\mcp_config.json on Windows. You can also open this file directly from the Windsurf Cascade sidebar by clicking the hammer icon (Configure MCP), selecting View Raw Config, and adding the signbee server stanza under the mcpServers object with npx -y signbee-mcp and your SIGNBEE_API_KEY environment variable.

How does Windsurf Cascade decide between send_document and send_document_pdf?

Signbee's MCP server exposes distinct, strongly typed JSON Schema definitions for both tools so Windsurf Cascade's tool router selects the optimal execution path automatically. When you ask Cascade to draft a new agreement, statement of work, or release acceptance certificate from codebase context, Cascade invokes send_document and passes structured CommonMark markdown. When you reference an existing compiled PDF file in your repository or local disk (such as ./contracts/msa-v4.pdf), Cascade invokes send_document_pdf with the local file_path, reading and Base64-encoding the binary PDF without altering its layout.

Can .windsurfrules enforce human-in-the-loop approval before sending legal contracts?

Yes. By combining Windsurf's native MCP tool-call approval toggle with workspace-level .windsurfrules instructions, engineering teams enforce a strict two-layer governance gate. Your .windsurfrules file instructs Cascade to always display a pre-flight summary block containing the document title, counterparty name, recipient email address, expiration window, and key commercial clauses in the chat panel before invoking send_document or send_document_pdf. Furthermore, unless you explicitly whitelist Signbee tools for auto-run in Windsurf settings, Cascade pauses execution and requires a physical click on Accept Tool Call.

How does Signbee handle Party A and Party B signatures when triggered from Windsurf?

Signbee implements an asymmetric two-party execution ceremony designed specifically for API and MCP automation. When Windsurf Cascade invokes the MCP server using your authenticated SIGNBEE_API_KEY, Signbee immediately binds Party A (the sender) to the agreement, recording your verified account name, email, originating IP address, and UTC timestamp. Signbee then emails Party B (the recipient) an encrypted, zero-login signing URL (https://signb.ee/sign/[token]). Once Party B signs on mobile or desktop, Signbee appends an A4 SHA-256 cryptographic certificate and emails the sealed PDF to both parties.

What does it cost to automate e-signatures inside Windsurf Cascade with Signbee?

Signbee includes a permanently free developer tier that provides 5 legally binding documents every month at $0.00 with full MCP server access and no credit card required. For teams scaling automated release sign-offs, contractor onboarding, or client statements of work, Signbee offers transparent pay-as-you-go pricing at $0.50 per document or flat-rate Pro ($19/month for 50 documents) and Business ($49/month for 250 documents, custom branding, and 2MB PDF payloads) plans—saving over 85% compared to legacy enterprise per-envelope API tiers.

Can Windsurf Cascade check if a client has signed a document without leaving the IDE?

Yes. The signbee-mcp package exposes both check_document_status and list_documents tools alongside its sending primitives. A developer or release engineer can ask Cascade in natural language to check the status of a specific document ID or list all pending agreements sent this week. Cascade queries GET /api/v1/documents/[id] in real time, returning whether the document is pending_recipient, signed, or expired, along with the exact completion timestamp, SHA-256 verification hash, and downloadable signed PDF URL.

Add Signbee MCP to Windsurf Cascade in 90 Seconds

Start with 5 free documents per month. Dispatch Markdown or binary PDF agreements directly from Windsurf IDE with full SHA-256 cryptographic certification.