{
  "name": "TensorPM",
  "description": "TensorPM is the local-first workspace for Context-Driven Project Management — structured project context (goals, scope, risks, budget, timeline, team, milestones, action items and decisions) shared by humans and AI agents on the same project. Every project has a dedicated AI agent (the Guardian of Context) that maintains the project graph. External agents (Claude Code, Codex, OpenClaw and any MCP/A2A agent) connect via MCP (structured CRUD) or A2A JSON-RPC (conversational project management) to read and write the same graph the human team uses. CDPM is the meta-framework that makes the project context the Single Source of Truth (SSOT). TensorPM is bidirectional MCP (server + client) and A2A, and can delegate tasks to coding agents (GitHub Copilot, Codex, Claude Code).",
  "url": "https://tensorpm.com",
  "version": "1.0.0",
  "provider": {
    "organization": "TensorPM",
    "url": "https://tensorpm.com",
    "contact": "support@tensorpm.com"
  },
  "defaultInputModes": ["text/plain", "application/json"],
  "defaultOutputModes": ["text/plain", "application/json"],
  "capabilities": {
    "streaming": true,
    "pushNotifications": false,
    "stateTransitionHistory": true
  },
  "authentication": {
    "schemes": ["bearer"],
    "required": false,
    "description": "Optional. Set A2A_HTTP_AUTH_TOKEN environment variable before starting TensorPM to require token validation. Without this, localhost access is unauthenticated."
  },
  "skills": [
    {
      "id": "project-management",
      "name": "Context-Driven Project Management (CDPM)",
      "description": "List, create, and update projects and action items. Switch workspaces. Set AI provider keys. Conversational project-level planning via A2A. The Guardian of Context model ensures core project fields (description, goal, scope, timeframe, requirements, technologies, milestones, risks, success criteria, budget, team) can only be modified by the TensorPM main agent — external agents must request changes via A2A message/send.",
      "tags": [
        "project-management",
        "action-items",
        "kanban",
        "gantt",
        "budget",
        "dependencies",
        "cdpm",
        "guardian-of-context",
        "agent-first"
      ],
      "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"
      ]
    },
    {
      "id": "decision-tracking",
      "name": "Decision & Commitment Tracking",
      "description": "Capture project decisions as first-class, append-only records with full audit trail. Decisions are never overwritten — instead, supersede_decision creates a new record and chains the previous one as 'superseded'. Each decision has a source (stakeholder_commit, top_down, agent_recommendation, user_directive, derived) and can be linked to action items, risks, or milestones. Use list_decisions before reasoning about contentious or previously-debated topics so the audit trail informs your response.",
      "tags": [
        "decisions",
        "commitments",
        "audit-trail",
        "append-only",
        "supersession",
        "stakeholder-commit",
        "cdpm"
      ],
      "examples": [
        "Record that the team committed to launching v1.0 on May 2nd",
        "Supersede the previous budget cap decision with a new one",
        "List all decisions linked to risk R-7",
        "Withdraw the in-progress decision about the auth provider — no replacement",
        "Show the supersession chain for the architecture decision",
        "Link the most recent decision to action item AI-42"
      ]
    },
    {
      "id": "agent-self-scheduling",
      "name": "Agent self-scheduling (A2A)",
      "description": "The TensorPM project agent can schedule its own future runs — useful for reminders, follow-ups, and time-bound checks (e.g. 'remind me to review the budget next Tuesday'). External agents trigger this by sending an A2A message/send describing the future intent; there is no direct MCP tool for self-scheduling.",
      "tags": [
        "scheduling",
        "reminders",
        "future-invocation",
        "a2a",
        "self-scheduling"
      ],
      "examples": [
        "Ask the project agent to follow up on milestone M-3 next Friday",
        "Schedule a budget-burn review for the start of every month",
        "Remind me to revisit risk R-12 once the prototype lands"
      ]
    },
    {
      "id": "connectors-messengers",
      "name": "Connectors & Messengers (Email + Telegram)",
      "description": "Native connectors let project participants interact with the TensorPM agent outside the desktop app. Email (mail ingest + mail agent) and a Telegram messenger connector are built in, governed by a per-role / per-participant permission model — each person's project role decides what they may do (post status, complete action items, propose decisions, or read-only). Incoming messages and mails are distilled into Action Items, Decisions, or Risks and only mutate the project graph after human confirmation (human-in-the-loop Distiller, never auto-applied).",
      "tags": [
        "connectors",
        "messengers",
        "email",
        "telegram",
        "role-based-permissions",
        "distiller",
        "human-in-the-loop",
        "intake"
      ],
      "examples": [
        "Let a stakeholder post a status update via Telegram and turn it into an action item after confirmation",
        "Ingest a project email and propose a decision from it for human review",
        "Restrict a read-only participant to status reads over their messenger",
        "Distill an incoming mail into a risk pending confirmation"
      ]
    }
  ],
  "interfaces": {
    "a2a": {
      "url": "http://localhost:37850",
      "protocol": "jsonrpc-2.0",
      "transport": ["http", "sse"],
      "description": "A2A JSON-RPC endpoint for conversational project management. Localhost-only — requires TensorPM desktop app running on the same machine. Use for high-level intent, multi-turn planning, and any change requiring full project context awareness (Guardian of Context). Pass contextId for conversation continuity.",
      "methods": [
        "message/send",
        "message/stream",
        "tasks/get",
        "tasks/list",
        "tasks/cancel",
        "tasks/resubscribe"
      ]
    },
    "mcp": {
      "description": "MCP tool server for structured CRUD operations on projects, action items, and workspaces. Localhost-only — requires TensorPM desktop app running on the same machine. Use for explicit, typed CRUD operations. Always call list_projects first if project IDs are unknown. Call get_project before creating action items to get valid category and person identifiers.",
      "tools": [
        "list_projects",
        "create_project",
        "get_project",
        "list_action_items",
        "submit_action_items",
        "update_action_items",
        "propose_updates",
        "record_decision",
        "supersede_decision",
        "withdraw_decision",
        "list_decisions",
        "link_decision",
        "unlink_decision",
        "set_api_key",
        "list_workspaces",
        "set_active_workspace"
      ],
      "project_creation_modes": ["basic", "fromPrompt", "fromFile"],
      "notes": {
        "propose_updates": "Requires human approval before changes are applied. Use for significant context mutations.",
        "set_api_key": "Write-only. Supports providers: openai, anthropic, google, mistral.",
        "decisions": "Append-only. Use supersede_decision to change a previously recorded decision — never mutate or delete in place. list_decisions supports filters by status (active/superseded/withdrawn), source, or linked entity (action_item/risk/milestone).",
        "scheduling": "There is no MCP tool for scheduling. The TensorPM project agent self-schedules future runs via A2A — send an A2A message/send describing the future intent."
      }
    }
  },
  "prerequisites": {
    "runtime": "TensorPM desktop app must be running locally. Both MCP and A2A are localhost-only interfaces.",
    "platforms": ["macOS", "Windows", "Linux"],
    "agent_instruction": "Install the TensorPM desktop app and the TensorPM agent skill, then start TensorPM before attempting MCP or A2A calls. Verify local discovery at http://localhost:37850/.well-known/agent.json.",
    "install": {
      "macOS": "brew install --cask neo552/tensorpm/tensorpm",
      "windows": "winget install --id Neo552.TensorPM --exact --accept-package-agreements --accept-source-agreements",
      "fallback_unix": "curl -fsSL https://raw.githubusercontent.com/Neo552/TensorPM/main/scripts/install.sh | bash",
      "fallback_windows": "irm https://raw.githubusercontent.com/Neo552/TensorPM/main/scripts/install.ps1 | iex"
    },
    "post_install": [
      "Start the TensorPM desktop app.",
      "Let the app auto-configure the local MCP/A2A interfaces on first launch.",
      "Verify with: curl http://localhost:37850/.well-known/agent.json"
    ],
    "verification": {
      "localhost_agent_card": "http://localhost:37850/.well-known/agent.json",
      "expected": "HTTP 200 JSON agent card from the locally running TensorPM desktop app"
    }
  },
  "documentation": {
    "skill": "https://tensorpm.com/SKILL.md",
    "skill_html": "https://tensorpm.com/skill",
    "mcp_tools": "https://tensorpm.com/MCP-TOOLS.md",
    "a2a_api": "https://tensorpm.com/A2A-API.md",
    "action_items": "https://tensorpm.com/ACTION-ITEMS.md",
    "user_docs": "https://tensorpm.com/en/documentation"
  },
  "commerce": {
    "protocols": ["acp"],
    "active_checkout_protocol": "acp",
    "supported_product_types": ["digital_subscription"],
    "google_native_checkout_supported": false,
    "pricing_page": "https://tensorpm.com/en/pricing",
    "pricing_pages": {
      "en": "https://tensorpm.com/en/pricing",
      "de": "https://tensorpm.com/de/pricing"
    },
    "pricing_doc": "https://tensorpm.com/PRICING.md",
    "business_tier": {
      "checkout": "contact_sales",
      "note": "Business plans (S/M/L, priced per active project, unlimited members) are not self-service purchasable. Direct users to the business page or the contact form.",
      "pages": {
        "en": "https://tensorpm.com/en/business",
        "de": "https://tensorpm.com/de/business"
      },
      "contact": "https://tensorpm.com/en/contact"
    },
    "acp_catalog": "https://api.tensorpm.com/acp/catalog",
    "acp_checkout_endpoint": "https://api.tensorpm.com/acp/checkouts",
    "agent_card": "https://api.tensorpm.com/.well-known/agent-card.json"
  },
  "discovery": {
    "ucp_profile": "https://api.tensorpm.com/.well-known/ucp",
    "skill": "https://tensorpm.com/SKILL.md",
    "security": "https://tensorpm.com/SECURITY.md",
    "mcp_manifest": "https://tensorpm.com/.well-known/mcp.json",
    "mcp_server_card": "https://tensorpm.com/.well-known/mcp/server-card.json",
    "openapi": "https://tensorpm.com/openapi.json",
    "for_agents_page": "https://tensorpm.com/for-agents"
  },
  "legal": {
    "terms": "https://tensorpm.com/en/legal/terms",
    "privacy": "https://tensorpm.com/en/legal/privacy",
    "security": "https://tensorpm.com/en/legal/security",
    "dpa": "https://tensorpm.com/en/legal/dpa"
  }
}
