MCP Server, CLI & API Reference
Connect any MCP-compatible agent — or use the CLI directly from your terminal. One platform, two interfaces, 60+ tools across every domain in the workspace.
Quickstart
Get your agent connected in under 5 minutes.
1. Get a Personal Access Token
Log in to ExecuFunction, go to Settings → API Tokens, and create a new token. Tokens are scoped — you choose which domains the token can access.
2. Configure your MCP client
Add ExecuFunction to your agent's MCP configuration. Works with Claude Code, Cursor, Windsurf, and any MCP-compatible client.
{ "mcpServers": { "execufunction": { "url": "https://mcp.execufunction.com/sse", "headers": { "Authorization": "Bearer exf_pat_your_token_here" } } } }
3. Verify the connection
Ask your agent to list your projects or tasks. If it returns data, you're connected.
# Agent calls: project_list() task_list(status: "in_progress") calendar_list_events(startDate: "2026-02-17", endDate: "2026-02-23") # Agent now has your full operational context.
CLI Installation
The ExecuFunction CLI gives you the same 60+ tools from your terminal. Same API, same data, same permissions — just a different interface.
1. Install
npm install -g @execufunction/cli
2. Authenticate
The CLI uses device flow authentication — it opens your browser, you approve, and a token is stored locally.
$ exf auth login
Your verification code: ZFMV-SBGJ
Opening browser...
If the browser didn't open, visit: https://execufunction.com/app/device?code=ZFMV-SBGJ
Waiting for authorization...
Logged in successfully!
3. Run your first command
$ exf projects list NAME STATUS TASKS ExecuFunction active 12 Marketing Site active 4 Mobile App planning 0 $ exf projects context --project-id <id> # Full project context: tasks, signals, notes, members.
Every CLI command supports --json for machine-readable output. Pipe it into jq, feed it to scripts, or let agents parse it directly.
Authentication
ExecuFunction supports two authentication methods. Use device flow for interactive CLI sessions, or Personal Access Tokens for MCP clients and CI/CD.
Device Flow (CLI)
Run exf auth login. The CLI opens your browser, you sign in with Google and approve the device code. A PAT is generated and stored in ~/.config/exf/ automatically. No token to copy-paste.
Personal Access Token (MCP & API)
For MCP clients and programmatic access, create a token in Settings → API Tokens. Pass it in the Authorization header:
Authorization: Bearer exf_pat_your_token_here
Tokens are scoped to specific domains (tasks-only, calendar-only, full access, etc.). For CI pipelines, set EXF_PAT as an environment variable.
Founding Members get full read + write MCP access. Free tier gets read-only access.
MCP Connection
ExecuFunction uses the Server-Sent Events (SSE) transport for MCP. The endpoint is:
https://mcp.execufunction.com/sse
Compatible with any MCP client that supports SSE transport: Claude Code, Claude Desktop, Cursor, Windsurf, Continue, and custom implementations using the MCP SDK.
Tasks
| MCP Tool | CLI | Access | Description |
|---|---|---|---|
| task_list | exf tasks list |
READ | List tasks with filters: status (inbox, next_action, in_progress, waiting_for, completed), project, limit. |
| task_get | exf tasks get |
READ | Get a single task with full details: description, due date, priority, project, linked code. |
| task_create | exf tasks create |
WRITE | Create a task. Accepts title, description, priority (do_now, schedule, delegate, someday), project, due date. |
| task_update | exf tasks update |
WRITE | Update task fields: title, description, status, priority, due date, project assignment. |
| task_complete | exf tasks complete |
WRITE | Mark a task as completed. |
| task_delete | exf tasks delete |
DELETE | Permanently delete a task. |
$ exf tasks list --status in_progress TITLE STATUS PRIORITY DUE Ship CLI docs in_progress do_now 2026-02-27 Fix device flow auth in_progress do_now - $ exf tasks create --title "Review PR #312" --priority do_now --json {"id":"abc-123","title":"Review PR #312","status":"inbox","priority":"do_now"}
Calendar
| MCP Tool | CLI | Access | Description |
|---|---|---|---|
| calendar_list_events | exf calendar list |
READ | List events in a date range. Returns title, start/end times, location, description. Supports limit. |
| calendar_create_event | exf calendar create |
WRITE | Create a calendar event. Requires title, startTime, endTime (ISO 8601). Optional: description, location. |
| calendar_update_event | exf calendar update |
WRITE | Update an existing event's title, times, description, or location. |
| calendar_delete_event | exf calendar delete |
DELETE | Remove an event from the calendar. |
$ exf calendar list --start-date 2026-02-24 --end-date 2026-02-28 TITLE START END LOCATION Team standup Feb 25 09:00 Feb 25 09:30 Zoom Product review Feb 26 14:00 Feb 26 15:00 Conf Room B $ exf calendar create --title "Ship CLI v0.3" \ --start-time 2026-02-27T10:00:00 --end-time 2026-02-27T10:30:00
Projects
| MCP Tool | CLI | Access | Description |
|---|---|---|---|
| project_list | exf projects list |
READ | List projects. Filter by status (planning, active, on_hold, blocked, completed). Include archived. |
| project_get_context | exf projects context |
READ | Full project context: tasks, notes, members, signals. The richest single call for understanding a project. |
| project_create | exf projects create |
WRITE | Create a project with name, summary, status, and emoji. |
| project_update | exf projects update |
WRITE | Update project name, summary, status, or emoji. |
| project_archive | exf projects archive |
WRITE | Archive a completed or inactive project. |
Knowledge
| MCP Tool | CLI | Access | Description |
|---|---|---|---|
| note_search | exf notes search |
READ | Semantic + full-text search across notes. Filter by project or note type. |
| note_list | exf notes list |
READ | List notes. Filter by type (note, concept, meeting, reference, daily) and project. |
| note_get | exf notes get |
READ | Get full note content by ID. |
| note_create | exf notes create |
WRITE | Create a note with title, markdown content, type, and optional project. |
| note_update | exf notes update |
WRITE | Update note title, content, or type. |
| note_delete | exf notes delete |
DELETE | Delete a note. |
People
| MCP Tool | CLI | Access | Description |
|---|---|---|---|
| people_search | exf people search |
READ | Search contacts by name. Returns relationship type, company, contact info, interaction history. |
| — | exf people list |
READ | List all contacts. CLI-only convenience wrapper. |
Codebase
Index your repositories for semantic code search. ExecuFunction parses your code into symbols and embeddings for fast retrieval.
| MCP Tool | CLI | Access | Description |
|---|---|---|---|
| codebase_list | exf codebase list |
READ | List all indexed repositories. |
| codebase_register | exf codebase register |
WRITE | Register a repository for indexing. Set root path, name, include/exclude patterns. |
| codebase_status | exf codebase status |
READ | Check indexing status for a repository. |
| codebase_index | exf codebase index |
WRITE | Full index: scan and upload all files matching patterns. |
| codebase_index_incremental | — | WRITE | Git-aware incremental index. Only processes changed files since last index. MCP only. |
| codebase_search | exf codebase search |
READ | Semantic code search. Filter by repository, language, symbol type (function, class, interface, type, export, impl). |
| code_who_knows | exf code who-knows |
READ | Find developers with expertise in a code area. Based on git history and contribution patterns. |
| code_compute_expertise | exf code expertise |
WRITE | Refresh the expertise index for a repository. |
| code_history | exf code history |
READ | Get commit history. Filter by file path. |
| git_blame_symbol | exf code blame |
READ | Git blame for a file or line range. Shows who last modified each line. |
Code Memory
Store and retrieve facts about your codebase. Architecture decisions, conventions, gotchas, ownership — persistent knowledge that survives across sessions.
| MCP Tool | CLI | Access | Description |
|---|---|---|---|
| code_memory_store | exf code memory store |
WRITE | Store a fact. Categories: architecture, integration, convention, entrypoint, gotcha, ownership. Optional: file path, repository. |
| code_memory_search | exf code memory search |
READ | Semantic search over stored code facts. Filter by category or repository. |
| code_memory_list | exf code memory list |
READ | List all stored code memories. Filter by repository. |
| code_memory_delete | exf code memory delete |
DELETE | Delete a stored code memory by ID. |
Documents
| MCP Tool | CLI | Access | Description |
|---|---|---|---|
| upload_document | exf documents upload |
WRITE | Upload a PDF, Markdown, or text file into Knowledge. Set by file path or inline content. Auto-detects type. |
| task_link_code | exf code link |
WRITE | Link a task to a code artifact: commit SHA, file path, repository. With optional notes. |
Vault
Encrypted secret storage. Store API keys, credentials, OAuth tokens, SSH keys, and sensitive notes. Values are encrypted at rest and audit-logged on read.
| MCP Tool | CLI | Access | Description |
|---|---|---|---|
| vault_create | exf vault create |
WRITE | Store a new encrypted secret. Types: env_var, credential, oauth_token, ssh_key, certificate, note. |
| vault_list | exf vault list |
READ | List vault entries (metadata only — never decrypted values). Filter by type or category. |
| vault_search | exf vault search |
READ | Search vault entries by name, slug, or description. Returns metadata only. |
| vault_read | exf vault read |
READ | Decrypt and read a vault secret. Audit-logged. Only available to trusted clients. |
| vault_update | exf vault update |
WRITE | Update vault entry metadata: name, tags, category, description. |
$ exf vault create --name "Stripe API Key" --json # Interactive prompt for sensitive payload values $ exf vault list NAME TYPE CATEGORY CREATED Stripe API Key env_var payments 2026-02-25 GitHub PAT credential devtools 2026-02-20 $ exf vault read --entry-id <id> # Decrypts and displays. Audit-logged.
Workflows
Cross-domain recipes that combine multiple tools. These patterns work identically via MCP or CLI.
Link Code to Tasks
Connect implementation work to the task that motivated it. Agents and teammates can trace why code changed.
task_create(title: "Implement device flow auth", priority: "do_now")
# ... implement the feature ...
task_link_code(taskId: "abc-123", repositoryId: "repo-456",
commitSha: "5cf5f22", filePath: "src/services/deviceAuthService.ts",
notes: "Fixed verification_uri to use /app/device")
task_complete(taskId: "abc-123")
$ exf tasks create --title "Implement device flow auth" --priority do_now $ exf code link --task-id abc-123 --repository-id repo-456 \ --commit-sha 5cf5f22 --file-path src/services/deviceAuthService.ts $ exf tasks complete --task-id abc-123
Project Onboarding
New to a project? Pull the full context in three commands.
# 1. Get the big picture $ exf projects context --project-id <id> # 2. See what's in flight $ exf tasks list --project-id <id> --status in_progress # 3. Check code conventions $ exf code memory search --query "architecture and conventions"
End-of-Day Review
Summarize what happened today. Works great as an agent prompt or a manual check.
# Agent calls: calendar_list_events(startDate: "2026-02-26", endDate: "2026-02-26") task_list(status: "completed", limit: 20) task_list(status: "in_progress") # Agent now has: today's meetings, completed tasks, and remaining work. # It can draft a standup summary, update project status, or flag blockers.
$ exf calendar list --start-date 2026-02-26 --end-date 2026-02-26 $ exf tasks list --status completed --limit 20 --json | jq '.[] | .title' $ exf tasks list --status in_progress
Store a Debug Discovery
Found a gotcha? Store it so your future self (or your agent) doesn't rediscover it the hard way.
$ exf code memory store \ --fact "Device flow verification_uri must use /app/device (SPA path), not /device (marketing homepage)" \ --category gotcha \ --file-path src/services/deviceAuthService.ts
Credits & Billing
Every MCP tool call consumes credits based on the underlying operation. Read operations cost less than writes. Daemon operations are metered by token usage.
Set a daily budget cap per agent or daemon. When the cap is hit, the agent pauses and notifies you. No runaway costs.
See Pricing for credit costs per model and plan details.
Idempotency
Write operations (task_create, note_create, calendar_create_event, etc.) accept an optional idempotencyKey parameter. If you retry a request with the same key, ExecuFunction returns the original result instead of creating a duplicate.
task_create(
title: "Review PR #247",
priority: "do_now",
idempotencyKey: "agent-run-42-task-pr247"
)
# Safe to retry. Same key = same result.
Permissions
Tokens are scoped per domain. A calendar-only token cannot read tasks or people. Scope your tokens to the minimum access your agent needs.
Available scopes:
tasks— Task CRUD and completioncalendar— Event listing and creationprojects— Project management and contextknowledge— Notes, search, document uploadpeople— Contact searchcode— Codebase indexing, search, memory, blame*— Full access (all domains)
Write access requires a Founding Member or Pro plan. Free tier tokens are read-only.