Documentation

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.

claude_code_config.json
{
  "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.

Example agent interaction
# 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

Terminal
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.

Terminal
$ 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

Terminal
$ 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:

HTTP 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:

MCP Endpoint
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

Task Domain 6 tools
MCP ToolCLIAccessDescription
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.
CLI Examples
$ 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

Calendar Domain 4 tools
MCP ToolCLIAccessDescription
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.
CLI Examples
$ 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

Project Domain 5 tools
MCP ToolCLIAccessDescription
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

Knowledge Domain 6 tools
MCP ToolCLIAccessDescription
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

People Domain 2 tools
MCP ToolCLIAccessDescription
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

Codebase Domain 10 tools

Index your repositories for semantic code search. ExecuFunction parses your code into symbols and embeddings for fast retrieval.

MCP ToolCLIAccessDescription
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

Code Memory Domain 4 tools

Store and retrieve facts about your codebase. Architecture decisions, conventions, gotchas, ownership — persistent knowledge that survives across sessions.

MCP ToolCLIAccessDescription
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

Document Domain 2 tools
MCP ToolCLIAccessDescription
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

Vault Domain 5 tools

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 ToolCLIAccessDescription
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.
CLI Examples
$ 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.

MCP
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")
CLI
$ 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.

CLI
# 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.

MCP (agent prompt)
# 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.
CLI
$ 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.

CLI
$ 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.

Idempotent task creation
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 completion
  • calendar — Event listing and creation
  • projects — Project management and context
  • knowledge — Notes, search, document upload
  • people — Contact search
  • code — Codebase indexing, search, memory, blame
  • * — Full access (all domains)

Write access requires a Founding Member or Pro plan. Free tier tokens are read-only.

Give your agent a workspace.

Get Your API Key Why ExecuFunction? →