Connect your AI
Give Claude Code, Codex, Cursor, Copilot, Windsurf, Gemini CLI, the Claude app or ChatGPT access to squiggli, then let it add signing to your app.
squiggli runs an MCP server at https://squiggli.billy-965.workers.dev/mcp. Coding agents connect with an API key; chat apps connect with the URL and you sign in. The web app walks you through this too, with your key filled in: sign in and open Connect an agent.
Keep keys out of your repository. Each setup below keeps the key in your user config or an environment variable, not in the project.
Claude Code
claude mcp add --transport http --scope user squiggli https://squiggli.billy-965.workers.dev/mcp \
--header "Authorization: Bearer sq_test_..."Then start Claude Code in your project and run /mcp to check squiggli is connected.
Codex
Put the key in your shell profile, then add squiggli to ~/.codex/config.toml:
export SQUIGGLI_API_KEY=sq_test_...[mcp_servers.squiggli]
url = "https://squiggli.billy-965.workers.dev/mcp"
bearer_token_env_var = "SQUIGGLI_API_KEY"Cursor
Add squiggli to ~/.cursor/mcp.json:
{
"mcpServers": {
"squiggli": {
"url": "https://squiggli.billy-965.workers.dev/mcp",
"headers": {
"Authorization": "Bearer sq_test_..."
}
}
}
}VS Code with GitHub Copilot
Create .vscode/mcp.json. VS Code asks for the key once and stores it securely:
{
"inputs": [
{
"type": "promptString",
"id": "squiggli-key",
"description": "squiggli API key",
"password": true
}
],
"servers": {
"squiggli": {
"type": "http",
"url": "https://squiggli.billy-965.workers.dev/mcp",
"headers": {
"Authorization": "Bearer ${input:squiggli-key}"
}
}
}
}Windsurf
Add squiggli to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"squiggli": {
"serverUrl": "https://squiggli.billy-965.workers.dev/mcp",
"headers": {
"Authorization": "Bearer sq_test_..."
}
}
}
}Gemini CLI
Add squiggli to ~/.gemini/settings.json:
{
"mcpServers": {
"squiggli": {
"httpUrl": "https://squiggli.billy-965.workers.dev/mcp",
"headers": {
"Authorization": "Bearer sq_test_..."
}
}
}
}Claude app
In Claude on the web or desktop, open Settings, then Connectors, and add a custom connector named squiggli with the URL https://squiggli.billy-965.workers.dev/mcp. Select Connect and sign in with your squiggli account.
ChatGPT
In Settings, Apps & Connectors, Advanced settings, turn on Developer mode (it needs a plan that includes it). Then create a connector named squiggli, set authentication to OAuth, and paste https://squiggli.billy-965.workers.dev/mcp. Sign in when asked.
What to ask first
For a coding agent, this gets a careful integration:
Add squiggli e-signatures to this app. First call the squiggli_get_integration_guide tool for our stack (or read https://squiggli.billy-965.workers.dev/llms-full.txt). Then:
1. Read the key from SQUIGGLI_API_KEY in the environment (add it to .env.example, never commit the real key).
2. Send documents for signing from the server, never from the browser, with an Idempotency-Key on every write.
3. Add a webhook route that checks the Squiggli-Signature header and handles envelope.completed.
4. Use test: true until I say we are going live.
Show me the plan before you change any files.So the agent remembers next time, add this to CLAUDE.md, AGENTS.md or GEMINI.md in your project:
## squiggli (e-signatures)
- API: https://squiggli.billy-965.workers.dev/v1, key in SQUIGGLI_API_KEY (sq_test_ for development, sq_live_ in production). Never commit it or use it in browser code.
- Guide for agents: https://squiggli.billy-965.workers.dev/llms-full.txt. Reference: https://squiggli.billy-965.workers.dev/openapi.json.
- Send with POST /v1/envelopes and an Idempotency-Key header. Use test: true until we go live.
- Webhooks: verify Squiggli-Signature (t=...,v1=HMAC-SHA256 of "t.body") and dedupe on the event id.Agents without MCP
Point them at /llms.txt (a summary) or /llms-full.txt (copy-ready code for Node, Next.js, Python, PHP and curl), and the OpenAPI document.