{
  "$schema": "https://modelcontextprotocol.io/schema/server-card.json",
  "name": "tensorpm",
  "displayName": "TensorPM — Context-Driven Project Management",
  "description": "Local-first MCP server for context-driven project management. Read and write the structured project graph (goals, action items, decisions, history) shared by every agent and human on the project. Built on Context-Driven Project Management (CDPM). TensorPM also acts as an MCP client (connect external MCP servers to the project) and can delegate tasks to external coding agents (GitHub Copilot, Codex, Claude Code). Native Email and Telegram messenger connectors let project participants interact with the agent under a per-role permission model; incoming messages and mails are distilled into Action Items, Decisions, or Risks after human confirmation.",
  "version": "1.0.0",
  "homepage": "https://tensorpm.com",
  "documentation": "https://tensorpm.com/MCP-TOOLS.md",
  "license": "Proprietary",
  "icon": "https://tensorpm.com/images/logo/tensorpm-mark.png",
  "publisher": {
    "name": "TensorPM",
    "url": "https://tensorpm.com",
    "contact": "support@tensorpm.com"
  },
  "categories": ["project-management", "productivity", "agent-memory", "developer-tools"],
  "tags": [
    "mcp",
    "a2a",
    "context-driven-project-management",
    "cdpm",
    "claude-code",
    "codex",
    "openclaw",
    "cursor",
    "kanban",
    "gantt",
    "action-items",
    "local-first"
  ],
  "transport": {
    "preferred": "stdio",
    "supported": ["stdio"],
    "scope": "localhost-only",
    "stdio": {
      "command": "node",
      "argsHint": "<absolute-path-to>/dist/backend/mcp/server.js (resolved per-OS by the desktop app installer)"
    },
    "a2aSidecar": {
      "url": "http://localhost:37850",
      "note": "Optional A2A endpoint for non-MCP agents; not part of the MCP transport."
    }
  },
  "runtime": {
    "platforms": ["macOS", "Windows", "Linux"],
    "requires": "TensorPM desktop app running locally",
    "agentInstruction": "Install the TensorPM desktop app, install the TensorPM agent skill into the current agent runtime, then start TensorPM before using this MCP server.",
    "install": {
      "macOS": "brew install --cask neo552/tensorpm/tensorpm",
      "windows": "winget install --id Neo552.TensorPM --exact --accept-package-agreements --accept-source-agreements",
      "fallbackUnix": "curl -fsSL https://raw.githubusercontent.com/Neo552/TensorPM/main/scripts/install.sh | bash",
      "fallbackWindows": "irm https://raw.githubusercontent.com/Neo552/TensorPM/main/scripts/install.ps1 | iex"
    },
    "postInstall": [
      "Start the TensorPM desktop app.",
      "Verify local discovery with: curl http://localhost:37850/.well-known/agent.json"
    ],
    "verificationUrl": "http://localhost:37850/.well-known/agent.json"
  },
  "authentication": {
    "type": "none",
    "description": "Localhost-only by default. Optional bearer token via A2A_HTTP_AUTH_TOKEN environment variable."
  },
  "capabilities": {
    "tools": true,
    "resources": false,
    "prompts": false,
    "sampling": false,
    "streaming": true
  },
  "tools": [
    {
      "name": "list_projects",
      "description": "List all projects in the current workspace."
    },
    {
      "name": "create_project",
      "description": "Create a new project. Modes: basic, fromPrompt, fromFile."
    },
    {
      "name": "get_project",
      "description": "Get full project details including categories and people."
    },
    {
      "name": "list_action_items",
      "description": "List action items, optionally filtered by project, status, or priority."
    },
    {
      "name": "submit_action_items",
      "description": "Create new action items in bulk."
    },
    {
      "name": "update_action_items",
      "description": "Update existing action items (status, priority, dependencies, dates)."
    },
    {
      "name": "propose_updates",
      "description": "Propose changes to core project context — requires human approval before applying."
    },
    {
      "name": "record_decision",
      "description": "Capture a project decision as a first-class, append-only record (source: stakeholder_commit, top_down, agent_recommendation, user_directive, derived)."
    },
    {
      "name": "supersede_decision",
      "description": "Atomically replace an active decision; previous record is marked superseded and chained via supersedesId. Never silently overwrite a prior decision."
    },
    {
      "name": "withdraw_decision",
      "description": "Mark an active decision withdrawn (no longer applies, but stays in the audit chain). Prefer supersede_decision when there is a replacement."
    },
    {
      "name": "list_decisions",
      "description": "List decisions for a project, filterable by status (active/superseded/withdrawn), source, or linked entity (action_item, risk, milestone)."
    },
    {
      "name": "link_decision",
      "description": "Link a decision to an action item, risk, or milestone. Idempotent."
    },
    {
      "name": "unlink_decision",
      "description": "Remove a previously created decision link."
    },
    {
      "name": "set_api_key",
      "description": "Write-only. Set AI provider key (openai, anthropic, google, mistral)."
    },
    {
      "name": "list_workspaces",
      "description": "List all workspaces accessible to the current user."
    },
    {
      "name": "set_active_workspace",
      "description": "Switch the active workspace."
    }
  ],
  "examples": [
    "List all open action items in the current project",
    "Create a new project from a brief document",
    "Update the priority of action item #12",
    "What are the high-priority blocked items?",
    "Create a project from this prompt: Build a habit tracker with streaks",
    "Propose timeline adjustments based on current progress",
    "Record a stakeholder commitment to ship v1.0 on May 2nd",
    "Supersede the previous budget cap decision with a new one",
    "List all decisions linked to risk R-7",
    "Ask the project agent (via A2A) to remind me to review the budget next Tuesday"
  ],
  "pricing": {
    "model": "freemium",
    "free": "Desktop app, MCP server, A2A endpoint — free forever. BYOK to any provider — free, unlimited.",
    "paidTiers": "Optional Cloud (€3.99/mo) for sync, Pro (€16.99/mo) for 10M proxy AI credits via DeepSeek V4 Flash on Fireworks AI (Vertex AI Gemini 3.5 Flash fallback).",
    "topups": "One-off credit packs (500k for €1.99, 2M for €5.99 — Pro and Business; 10M for €24.99 — Business only).",
    "businessTiers": "Business S/M/L (€119/€249/€449 per month) — priced per active project, unlimited members, pooled AI credits (25M/60M/120M). Contact sales, no self-service checkout: https://tensorpm.com/en/business",
    "details": "https://tensorpm.com/PRICING.md"
  },
  "links": {
    "skill": "https://tensorpm.com/SKILL.md",
    "tools": "https://tensorpm.com/MCP-TOOLS.md",
    "a2a": "https://tensorpm.com/A2A-API.md",
    "actionItems": "https://tensorpm.com/ACTION-ITEMS.md",
    "pricing": "https://tensorpm.com/PRICING.md",
    "security": "https://tensorpm.com/SECURITY.md",
    "agentManifest": "https://tensorpm.com/.well-known/agent.json",
    "openapi": "https://tensorpm.com/openapi.json",
    "github": "https://github.com/Neo552/TensorPM",
    "releases": "https://github.com/Neo552/TensorPM-Releases/releases/latest"
  },
  "installButtons": {
    "claudeDesktop": "https://claude.ai/mcp/install?name=tensorpm&url=http%3A%2F%2Flocalhost%3A37850",
    "cursor": "cursor://anysphere.cursor-deeplink/mcp/install?name=tensorpm&config=eyJ1cmwiOiJodHRwOi8vbG9jYWxob3N0OjM3ODUwIn0%3D"
  }
}
