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://apitest.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://apitest.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://apitest.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 will push events to your URL whenever tasks are created, updated, or completed. Configure webhook URLs in Settings → Webhooks.
| Event | Fired when |
|---|---|
task.created | A new task or goal is created |
task.updated | Any field on a task is changed |
task.completed | A task's status changes to Completed |
task.status_changed | Status changes to any value |
API keys are generated in Goalpen → Settings → 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.