MCP-compatible developer API — connect any AI agent to Goalpen
Log in to Goalpen → Settings → API Keys → click New Key. Choose read for read-only access or read + write to allow the AI to create and update items.
Any MCP-compatible client (Claude, Cursor, ChatGPT plugin, custom agent) can read the tool manifest at:
GET https://api.goalpen.com/mcp/tools
Include the key in every request as a Bearer token:
Authorization: Bearer gp_live_<your-key>
POST to /mcp/execute with { "tool": "list_tasks", "args": {} } — see full reference below.
https://api.goalpen.com/mcp
https://api.goalpen.com/mcp
/tools
no auth
Returns the full MCP tool manifest — list of all tools with their input schemas. Use this URL in your AI client's MCP configuration.
/execute
API key required
Executes a single tool. Body: { "tool": "<name>", "args": { ... } }
/keys/generate
Firebase ID token
Generate a new API key. Called internally by the Goalpen Settings UI. Body: { "name": "My Agent", "scopes": ["read","write"] }
/keys/list
Firebase ID token
List all API keys for the authenticated user.
/keys/revoke
Firebase ID token
Revoke an API key. Body: { "keyId": "..." }
// List all overdue tasks POST https://api.goalpen.com/mcp/execute Authorization: Bearer gp_live_abc123... Content-Type: application/json { "tool": "list_tasks", "args": { "status": "In Progress", "dueBefore": "2026-04-03", "limit": 20 } }
{
"success": true,
"tool": "list_tasks",
"result": {
"tasks": [
{
"id": "abc123",
"taskName": "Review Q2 report",
"status": "In Progress",
"dueOn": "2026-04-01",
"assignee": ["userId1"]
}
],
"count": 1
}
}
All tools are scoped to the authenticated user's organisation. Read tools require the read scope; write tools require write.
Goalpen pushes a signed JSON payload to your URL whenever a task event occurs — regardless of whether the change came from the UI, SuperAgent, or an MCP agent call. Configure webhooks in Settings → AI Connect → Webhooks.
Payload signing: Every POST includes an X-Goalpen-Signature header (sha256=HMAC(secret, body)). Verify it against your webhook's signing secret to confirm the payload is genuine.
| Event | Fired when |
|---|---|
task.created | A new task or goal is created |
task.updated | Any field on a task is changed |
task.status_changed | Status changes to any value |
task.completed | Status changes to Completed |
API keys are generated in Goalpen → Settings → AI Connect → API Keys. Keys are prefixed gp_live_ and stored as SHA-256 hashes — the plaintext is shown only once at creation.
Pass the key in every request:
Authorization: Bearer gp_live_<your-key>
Each key is scoped to a single user and organisation. Read keys can only call read tools; write keys can call all tools.