{
 "$schema": "https://agentdrives.com/schemas/tool.schema.json",
 "id": "prd_01m57vgtjzwk0ceksgyc8v1swk",
 "ids": {
  "org": "org_01m57vgtjz0eftv82t2g2w6r1f",
  "surfaces": {
   "web": "srf_01m5w8r7fsb712006reeaeka02",
   "api": "srf_01m5w8r7fsdmjyfrpny8kr5efm",
   "mcp": "srf_01m5w8r7fshbm6amwy9hgapny3"
  },
  "slugs": [
   "openproject"
  ],
  "domain": "openproject.org",
  "wikidata": "Q14468709"
 },
 "slug": "openproject",
 "name": "OpenProject",
 "url": "https://www.openproject.org",
 "domain": "openproject.org",
 "category": "project-management",
 "category_name": "Project management",
 "tested_at": "2026-10-26",
 "run": "20261026T122551Z",
 "draft": false,
 "reviewed": true,
 "owner_verified": null,
 "origin": "editorial",
 "history": [
  {
   "run": "20261026T122551Z",
   "date": "2026-10-26",
   "level": 1,
   "engine": {
    "model": "claude-opus-5-5",
    "driver": 5,
    "signed": true,
    "inbox": [
     "agentdrives.com",
     "older test domain"
    ],
    "robots": "skip",
    "version": "2026.10.26",
    "commit": "5fcdb911f0dcc3c91a9794ca76f8d4896244f439",
    "prompts": {
     "version": "2026.10.26",
     "commit": "9bef5e75f8e732d063fdfff8e766feca445cb123"
    },
    "rules": {
     "version": "2026.10.26",
     "commit": "5fcdb911f0dcc3c91a9794ca76f8d4896244f439"
    }
   },
   "stop": "signup",
   "paid": false,
   "agent_paid": null
  }
 ],
 "level": 1,
 "level_name": "Needs a person",
 "level_selfhost": 4,
 "entry": "closed",
 "door": {
  "passed": 0,
  "tries": 1,
  "self_start": false
 },
 "badges": [],
 "not_counted": null,
 "stages": [
  {
   "key": "in",
   "label": "Access",
   "state": "no",
   "text": "Can't get in on its own",
   "at": "signup"
  },
  {
   "key": "work",
   "label": "Use",
   "state": "unreached",
   "text": "Work not measured"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "unreached",
   "text": "Payment not reached",
   "value": "unreached",
   "route": "card_checkout"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "unreached",
   "text": "Leaving not reached",
   "how": "no-account"
  }
 ],
 "outcomes": [
  {
   "key": "find",
   "label": "Learn",
   "state": "yes",
   "text": "Docs it can act on: an OpenAPI and an MCP server",
   "have": [
    "openapi",
    "mcp"
   ],
   "docs": "complete"
  },
  {
   "key": "access",
   "label": "Access",
   "state": "no",
   "text": "Can't get in on its own",
   "at": "signup",
   "stage": "in"
  },
  {
   "key": "use",
   "label": "Use",
   "state": "unreached",
   "text": "Work not measured",
   "stage": "work"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "unreached",
   "text": "Payment not reached",
   "value": "unreached",
   "route": "card_checkout",
   "stage": "pay"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "unreached",
   "text": "Leaving not reached",
   "how": "no-account",
   "stage": "leave"
  }
 ],
 "access": [
  {
   "key": "person",
   "label": "A person sets it up",
   "routes": [],
   "minutes": null,
   "core": null
  }
 ],
 "minutes": null,
 "next": {
  "to": 2,
  "text": "Next: let an agent sign up on its own"
 },
 "stop": "signup",
 "core": null,
 "scores": {
  "coverage": null,
  "reliability": null,
  "resilience": null,
  "setup": 70,
  "surface_coverage": null,
  "docs_accuracy": null,
  "docs_completeness": null
 },
 "parts": {
  "holds_up": null,
  "docs_match": null,
  "setup": 70,
  "security": null,
  "standards": [
   {
    "standard": "MCP discovery",
    "state": "current",
    "behind": null,
    "value": "ok"
   },
   {
    "standard": "OpenAPI",
    "state": "behind",
    "behind": 1,
    "value": "3.1.2"
   }
  ]
 },
 "reliability_method": null,
 "resilience": null,
 "stress": [
  {
   "capability": "Create a task or issue",
   "probe": "create without required subject",
   "outcome": "422 {\"_type\": \"Error\", \"errorIdentifier\": \"urn:openproject-org:api:v3:errors:PropertyConstraintViolation\", \"message\": \"Subject can't be blank.\", \"_embedded\": {\"details\": {\"attribute\": \"subject\"}}}",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Complete a task or change its status",
   "probe": "status id that does not exist",
   "outcome": "422 {\"_type\": \"Error\", \"errorIdentifier\": \"urn:openproject-org:api:v3:errors:PropertyConstraintViolation\", \"message\": \"Status can't be blank.\", \"_embedded\": {\"details\": {\"attribute\": \"status\"}}}",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Update a task",
   "probe": "read a work package id that does not exist",
   "outcome": "404 {\"_type\": \"Error\", \"errorIdentifier\": \"urn:openproject-org:api:v3:errors:NotFound\", \"message\": \"The work package you are looking for cannot be found or has been deleted.\"}",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Update a task",
   "probe": "update with a stale lockVersion",
   "outcome": "409 {\"_type\": \"Error\", \"errorIdentifier\": \"urn:openproject-org:api:v3:errors:UpdateConflict\", \"message\": \"Could not update the resource because of conflicting modifications.\"}",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Create a project or board",
   "probe": "set a parent that does not exist",
   "outcome": "404 {\"_type\": \"Error\", \"errorIdentifier\": \"urn:openproject-org:api:v3:errors:NotFound\", \"message\": \"The requested resource could not be found.\"}; GET parent {'href': '/api/v3/portfolios/9', 'title': '",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Log time on a task or project",
   "probe": "time entry with invalid duration",
   "outcome": "422 {\"_type\": \"Error\", \"errorIdentifier\": \"urn:openproject-org:api:v3:errors:PropertyFormatError\", \"message\": \"Invalid format for property 'hours': Expected format like 'ISO 8601 duration', but got 'o",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Set a dependency between tasks",
   "probe": "relation from a task to itself",
   "outcome": "422 {\"_type\": \"Error\", \"errorIdentifier\": \"urn:openproject-org:api:v3:errors:PropertyConstraintViolation\", \"message\": \"This relation would create a circular dependency.\", \"_embedded\": {\"details\": {\"at",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Create a task or issue",
   "probe": "repeat the same create with an Idempotency-Key",
   "outcome": "201 id 50; 201 id 51 (two work packages)",
   "grade": "clear",
   "idempotent": "no",
   "rate_limit": null
  },
  {
   "capability": "Create a project or board",
   "probe": "burst of 15 GET /api/v3/users/me",
   "outcome": "statuses ['200']; rate-limit headers none",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": "none-seen"
  },
  {
   "capability": "Create a task or issue",
   "probe": "wrong API token",
   "outcome": "401 {\"_type\": \"Error\", \"errorIdentifier\": \"urn:openproject-org:api:v3:errors:Unauthenticated\", \"message\": \"You did not provide the correct credentials.\"}",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Set a dependency between tasks",
   "probe": "MCP create relation that would be circular",
   "outcome": "200 result.isError=false, content text {\"error\":\"This relation would create a circular dependency.\"}",
   "grade": "silent",
   "idempotent": null,
   "rate_limit": null
  }
 ],
 "surface_audit": null,
 "coverage_core": null,
 "coverage_own": null,
 "after_wall": null,
 "coverage_source": "reported",
 "driver": {
  "version": 5,
  "model": "claude-opus-5-5",
  "profile": "full",
  "assisted": false,
  "handoff": false
 },
 "methodology": 42,
 "rules_date": "2026-10-30",
 "engine": {
  "model": "claude-opus-5-5",
  "driver": 5,
  "signed": true,
  "inbox": [
   "agentdrives.com",
   "older test domain"
  ],
  "robots": "skip",
  "version": "2026.10.26",
  "commit": "5fcdb911f0dcc3c91a9794ca76f8d4896244f439",
  "prompts": {
   "version": "2026.10.26",
   "commit": "9bef5e75f8e732d063fdfff8e766feca445cb123"
  },
  "rules": {
   "version": "2026.10.26",
   "commit": "5fcdb911f0dcc3c91a9794ca76f8d4896244f439"
  }
 },
 "same_level_drives": 1,
 "drives": 1,
 "same_stop_drives": 1,
 "works_assisted": null,
 "freshness": "fresh",
 "newer_drives": null,
 "nothing_to_pay": false,
 "core_gated": false,
 "profiles": {},
 "agent_check": null,
 "agent_pass": null,
 "who_gets_in": {
  "server": {
   "state": "closed"
  },
  "signed": {
   "state": "robots",
   "kind": "signup",
   "at": "2026-10-26"
  },
  "browser": {
   "state": "unknown",
   "measured": false
  },
  "our_key": "pending",
  "robots": "closed",
  "tip": false
 },
 "ladder": {
  "docs": {
   "status": "headless",
   "note": "Docs, API reference and OpenAPI 3.1.2 spec (320 operations) fetched without a browser; MCP server documented. No llms.txt, no Markdown versions."
  },
  "signup": {
   "status": "blocked",
   "cause": "other",
   "note": "The cloud trial form at start.openproject.com accepted our agentdrives.com address, then a second address of ours (and a second data center), but every trial stayed at \"We are creating your free trial\" for 40+ minutes; its status poll answered {} and the instance host kept redirecting to \"Please wait, your instance is currently being created...\". Rechecked at 13:43 UTC (about 80 minutes after the first form): both instances still redirect to \"pending_instances\", and no mail had come."
  },
  "verify": {
   "status": "",
   "note": "Mail not received: no mail came from the product to either of our test domains (the agent's inbox 47 min, the agent's inbox 37 min) while our inbox received other mail, including OpenProject's own mail for the on-premises trial.",
   "reached": false
  },
  "credentials": {
   "status": "",
   "note": "Not reached: no hosted instance was created.",
   "via": "",
   "reached": false
  },
  "first_call": {
   "status": "",
   "note": "Not reached: no hosted instance.",
   "route": "account",
   "reached": false
  },
  "first_action": {
   "status": "",
   "note": "Not reached: no hosted instance.",
   "reached": false
  },
  "pay": {
   "status": "",
   "grade": "P1",
   "rails": [
    "card checkout (Chargebee)"
   ],
   "rail_ids": [
    "card"
   ],
   "first_party": false,
   "rail_scope": "none",
   "trial_path": "no-card trial",
   "route": "card_checkout",
   "checkout": {
    "reached": "plan_page",
    "processor": "chargebee",
    "captcha": "invisible",
    "three_ds": "not_seen",
    "card_form": false,
    "phone_field": "required",
    "wallets": [],
    "rail_offer": "none",
    "price": "1785.00",
    "currency": "EUR",
    "period": "year",
    "plan": "Enterprise On-Premises - Basic Plan - 1-Year (25 users)",
    "last_button": "Next"
   },
   "person": "phone",
   "ours": null,
   "note": "No 402, x402, MPP or billing API (nothing paid). The self-hosted Enterprise page's \"Book now\" opens a Chargebee checkout: cart €1,785.00 a year (25 × €71.40), email, a one-time password mailed to us (read from our inbox), then account details where Phone is required: stopped there, card form not reached. The cloud subscription lives inside the hosted instance, which never got created.",
   "reached": false
  },
  "cancel": {
   "status": "",
   "note": "Nothing to cancel: no plan bought and the trial needs no card. Docs: cancel under Administration > Subscription > Manage subscription (web UI); trials \"expire automatically and will be deleted\".",
   "docs_grade": "",
   "reached": false
  },
  "delete": {
   "status": "",
   "note": "No hosted account was created. Docs: \"After 14 days the trial will expire automatically and will be deleted after a short period of time.\"",
   "account": false,
   "reached": false
  }
 },
 "routes": [
  {
   "route": "local",
   "offered": "documented",
   "tried": true,
   "not_tried": null,
   "result": "in",
   "wall": null,
   "person": "none",
   "brings": "nothing",
   "fresh": true,
   "minutes": 12,
   "browser": true
  },
  {
   "route": "email_password",
   "offered": "documented",
   "tried": true,
   "not_tried": null,
   "result": "broken",
   "wall": {
    "type": null,
    "owner": "product"
   },
   "person": "none",
   "brings": "inbox",
   "fresh": true,
   "minutes": 45,
   "browser": null
  },
  {
   "route": "oauth_consent",
   "offered": "documented",
   "tried": false,
   "not_tried": "same_as",
   "result": null,
   "wall": null,
   "person": null,
   "brings": null,
   "fresh": null,
   "minutes": null,
   "browser": null
  }
 ],
 "checkout": {
  "reached": "plan_page",
  "processor": "chargebee",
  "captcha": "invisible",
  "three_ds": "not_seen",
  "phone_field": "required",
  "rail_offer": "none",
  "period": "year",
  "card_form": false,
  "price": "1785.00",
  "currency": "EUR",
  "plan": "Enterprise On-Premises - Basic Plan - 1-Year (25 users)",
  "last_button": "Next"
 },
 "docs": {
  "at": "2026-10-26",
  "read": 600,
  "listed": 776,
  "sampled": true,
  "overall": "complete",
  "getting_started": "found",
  "auth": "found",
  "errors": "found",
  "examples": "some",
  "freshness": "fresh",
  "newest": "2026-10-26",
  "core_pages": "8 of 8",
  "capabilities": "covered",
  "label": "No gaps in what we read"
 },
 "claims": null,
 "pay_options": {
  "checked": "2026-10-26",
  "source": "probe",
  "options": [],
  "agentic": [],
  "paid": null,
  "exercised": null,
  "detected_grade": null,
  "trial": {
   "no_card": null,
   "card_required": null,
   "free_plan": true
  },
  "owner_fixes": [
   {
    "title": "Accept x402 or MPP on your API",
    "how": "Answer an unpaid call with 402 and a payment challenge, so an agent pays per call or buys credits without an account or a card."
   },
   {
    "title": "List your plans on Stripe Projects",
    "how": "Agents buy a plan with `stripe projects add`, paid with a token under a spend cap the owner sets (projects.dev)."
   },
   {
    "title": "Let a verified agent finish your checkout",
    "how": "Show signed agents no visible CAPTCHA at checkout, accept virtual and prepaid cards, and don't ask for a phone number to pay."
   }
  ]
 },
 "surfaces": {
  "api": true,
  "cli": false,
  "sdk": false,
  "mcp": "official",
  "llms_txt": false,
  "webhooks": true,
  "sandbox": false
 },
 "urls": null,
 "surface_notes": {
  "api": "REST (HAL+JSON), 320 operations",
  "mcp": "official, built into each instance (Enterprise add-on), 23 tools"
 },
 "surface_sizes": [
  {
   "kind": "api",
   "listed": 320,
   "tested": 252
  },
  {
   "kind": "mcp",
   "listed": 26,
   "tested": 26
  }
 ],
 "can_do": [
  "Run its own OpenProject from the documented Docker images and drive it over the REST API",
  "Create, update, assign, close and delete work packages over the API or MCP",
  "Set dependencies between work packages and log, edit and delete time entries",
  "Create projects, saved Gantt views, versions, milestones, reminders and dashboard widgets over the API",
  "Get a scoped OAuth token without a browser with the client-credentials grant once an admin app exists",
  "Read each team member's assigned work by date over the API (work packages grouped by assignee)"
 ],
 "cannot_do": [
  {
   "what": "Get a hosted (cloud) account",
   "why": "The cloud trial never finished creating on either of our addresses, and no confirm mail came."
  },
  {
   "what": "Create an API token without a browser",
   "why": "API tokens are only made on the My account > Access tokens page; there is no token API or device login."
  },
  {
   "what": "Create budgets, wiki pages, custom fields, types or portfolios over the API",
   "why": "Those resources are read-only in the API; they need the web UI."
  },
  {
   "what": "Buy a plan on its own",
   "why": "The Chargebee checkout asks for a phone number before the card form; there is no agent payment rail."
  }
 ],
 "blockers": [
  "Cloud trial stuck at \"We are creating your free trial\"",
  "No API or device flow to create API tokens",
  "Phone number required at checkout"
 ],
 "tips_for_agents": [
  "Self-host with the Compose images (openproject:17-slim seeder, web and worker plus postgres): the API is complete in minutes; run the worker or deletes and copies never finish.",
  "Authenticate with HTTP Basic apikey:<token>, or get a Bearer token without a browser with POST /oauth/token grant_type=client_credentials once an admin OAuth app exists.",
  "Add yourself as a project member (POST /api/v3/memberships) before assigning work packages, or the API answers 422 \"not allowed to be 'Assignee'\".",
  "Send lockVersion on every work package PATCH; a stale one gives 409 UpdateConflict.",
  "Use _links.targetVersions (an array) for versions; _links.version is accepted with 200 and ignored.",
  "GET /work_packages/{id}/relations redirects there.",
  "On MCP, check the text of create_work_package_relation results: a failure can come back with isError=false.",
  "For team workload without the Enterprise Team Planner, GET /api/v3/projects/{id}/work_packages with a datesInterval filter and groupBy=assignee."
 ],
 "selfhost": {
  "install": {
   "status": "headless",
   "minutes": 12,
   "note": "The docs' recommended one-container-per-process route worked: postgres:17 (--uid 999) + openproject/openproject:17-slim running ./docker/prod/seeder then ./docker/prod/web, plus ./docker/prod/worker for background jobs; env DATABASE_URL, SECRET_KEY_BASE, OPENPROJECT_HOST__NAME, OPENPROJECT_HTTPS=false; seeding and boot about 2 minutes. MCP needs an Enterprise token: the in-app 14-day trial (form + confirm mail) unlocked it."
  },
  "ladder": {
   "docs": {
    "status": "headless",
    "note": "Docker docs, API docs and OpenAPI 3.1.2 read headless."
   },
   "signup": {
    "status": "headless",
    "note": "Instance started from the documented images; seeded admin account. Enterprise trial (for MCP) via an in-app form and a confirm mail from our inbox (asked for a company name; our agent answered)."
   },
   "verify": {
    "status": "n/a",
    "note": "Self-hosted admin needs no verification."
   },
   "credentials": {
    "status": "browser",
    "note": "API token only in My account > Access tokens (shown once). OAuth app registered in the admin UI; its client-credentials token is then issued, used and revoked headless."
   },
   "first_call": {
    "status": "headless",
    "note": "GET /api/v3/users/me 200 with apikey Basic auth.",
    "route": "account"
   },
   "first_action": {
    "status": "headless",
    "note": "POST /api/v3/projects 201, read back."
   },
   "delete": {
    "status": "headless",
    "note": "Users, projects, portfolio deleted via API (404 afterwards); instance torn down.",
    "left": "deleted",
    "after_hours": null
   },
   "pay": {
    "status": "n/a",
    "note": "Self-hosted: nothing to pay or cancel."
   },
   "cancel": {
    "status": "n/a",
    "note": "Self-hosted: nothing to pay or cancel."
   }
  },
  "coverage_core": 100,
  "coverage_source": "computed"
 },
 "edge_case": "unknown",
 "summary": "OpenProject's hosted cloud trial took our sign-up on two addresses but never finished creating the instance or sent a confirm mail, so an agent got no hosted account. Self-hosted from the documented Compose images, it gave an agent a full REST API (all 8 core tasks done and repeated 3 times) and, with an Enterprise trial token, a current 28 Jul 2026 MCP server with 23 tools. API tokens still need the web page, several objects are UI-only, and buying needs a phone number at the Chargebee checkout.",
 "wall": "Cloud trial never finishes creating",
 "plan_scope": "",
 "robots_stop": null,
 "robots": null,
 "terms": null,
 "terms_read": "2026-10-26",
 "email_gate": null,
 "plain": {
  "summary": "OpenProject is open-source project management software. Its hosted free trial never finished creating for our agent, so no cloud account was possible. Run on our own machine from the documented Docker images, the agent could do all eight core tasks over the API, and it also used the product's MCP server once an Enterprise trial was active.",
  "can_do": [
   "Run OpenProject itself from the documented Docker images and use its REST API",
   "Create, change, assign and close tasks, and link tasks to each other",
   "Create projects and saved Gantt views, and log and edit time",
   "Use the MCP server for tasks, relations and time entries once an Enterprise trial is active"
  ],
  "cannot_do": [
   {
    "what": "Get a hosted cloud account",
    "why": "The cloud trial stayed stuck on creating and no mail came."
   },
   {
    "what": "Create an API token without a browser",
    "why": "Tokens are only made on a web page; there is no token API."
   },
   {
    "what": "Buy a plan on its own",
    "why": "The checkout asks for a phone number before the card form."
   }
  ]
 },
 "plan_gated": [
  {
   "capability": "MCP server (all MCP tools)",
   "plan": "Enterprise add-on: Professional, Premium, Corporate",
   "evidence": "Self-hosted Community: POST /mcp -> 404 \"MCP server is not available.\"; docs: \"This feature is an Enterprise add-on\""
  },
  {
   "capability": "The same workload read over the API on the free edition)",
   "plan": "Enterprise add-on: Basic and up",
   "evidence": "Self-hosted Community /projects/demo-project/team_planners: \"Available starting with the Basic enterprise plan.\"; a second in-app trial: \"Domain was already used to create a trial.\""
  }
 ],
 "reply": null,
 "capabilities": [
  {
   "id": "cap-01",
   "capability": "Create a task or issue",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "",
    "mcp": "create_work_package",
    "cli": null,
    "ui": "Work packages module, new work package"
   },
   "check": "",
   "capability_id": "cap_kzejkm30",
   "unmapped": null,
   "source": "https://www.openproject.org/docs/system-admin-guide/integrations/mcp-server/; https://www.openproject.org/collaboration-software-features/",
   "result": "not_tried",
   "via": null
  },
  {
   "id": "cap-02",
   "capability": "Update a task",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "",
    "mcp": "update_work_package",
    "cli": null,
    "ui": "Work package detail view, edit fields"
   },
   "check": "",
   "capability_id": "cap_w43xz129",
   "unmapped": null,
   "source": "https://www.openproject.org/docs/system-admin-guide/integrations/mcp-server/",
   "result": "not_tried",
   "via": null
  },
  {
   "id": "cap-03",
   "capability": "Complete a task or change its status",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "",
    "mcp": "update_work_package",
    "cli": null,
    "ui": "Work package status dropdown; status workflow configuration"
   },
   "check": "to Closed)",
   "capability_id": "cap_0qqya2hj",
   "unmapped": null,
   "source": "https://www.openproject.org/docs/user-guide/work-packages/#work-packages; https://www.openproject.org/collaboration-software-features/",
   "result": "not_tried",
   "via": null
  },
  {
   "id": "cap-04",
   "capability": "Create a project or board",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/v3/projects",
    "mcp": "search_projects (read)",
    "cli": null,
    "ui": "Projects > New project"
   },
   "check": "GET /api/v3/projects/{id} returns the created project",
   "capability_id": "cap_pe5me100",
   "unmapped": null,
   "source": "https://www.openproject.org/collaboration-software-features/project-portfolio-management/",
   "result": "failed",
   "via": "api"
  },
  {
   "id": "cap-05",
   "capability": "Create a board, Gantt or calendar view",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Gantt chart module, Agile boards, Calendar module"
   },
   "check": "Open the project's Gantt/board/calendar view and see the new view listed",
   "capability_id": "cap_nj4x6v2s",
   "unmapped": null,
   "source": "https://www.openproject.org/docs/user-guide/gantt-chart/; https://www.openproject.org/docs/user-guide/agile-boards/#action-boards; https://www.openproject.org/docs/user-guide/calendar/#calendar",
   "result": "not_tried",
   "via": null
  },
  {
   "id": "cap-06",
   "capability": "Assign a task",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "",
    "mcp": "update_work_package",
    "cli": null,
    "ui": "Work package detail, Assignee field"
   },
   "check": "",
   "capability_id": "cap_tzf8307y",
   "unmapped": null,
   "source": "https://www.openproject.org/docs/getting-started/work-packages-introduction/#create-a-new-work-package",
   "result": "failed",
   "via": "api"
  },
  {
   "id": "cap-07",
   "capability": "Set a dependency between tasks",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "",
    "mcp": "create_work_package_relation",
    "cli": null,
    "ui": "Work package Relations tab"
   },
   "check": "GET list_work_package_relations / API shows the relation (e.g. blocked by / precedes)",
   "capability_id": "cap_tvr8b22p",
   "unmapped": null,
   "source": "https://www.openproject.org/docs/user-guide/work-packages/work-package-relations-hierarchies/#work-package-relations; https://www.openproject.org/docs/system-admin-guide/integrations/mcp-server/",
   "result": "not_tried",
   "via": null
  },
  {
   "id": "cap-08",
   "capability": "Log time on a task or project",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/v3/time_entries",
    "mcp": "create_time_entry",
    "cli": null,
    "ui": "Work package > Log time; My time tracking page"
   },
   "check": "search_time_entries / GET /api/v3/time_entries shows the new entry",
   "capability_id": "cap_nqxg2m23",
   "unmapped": null,
   "source": "https://www.openproject.org/docs/user-guide/time-and-costs/time-tracking/; https://www.openproject.org/docs/system-admin-guide/integrations/mcp-server/",
   "result": "not_tried",
   "via": null
  },
  {
   "id": "cap-09",
   "capability": "List projects or boards",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET /api/v3/projects",
    "mcp": "search_projects",
    "cli": null,
    "ui": "Project lists page"
   },
   "check": "Returned list includes the known project",
   "capability_id": "cap_5brgvftn",
   "unmapped": null,
   "source": "https://www.openproject.org/docs/user-guide/projects/project-lists/; https://www.openproject.org/docs/system-admin-guide/integrations/mcp-server/",
   "result": "not_tried",
   "via": null
  },
  {
   "id": "cap-10",
   "capability": "Search or filter tasks",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "",
    "mcp": "search_work_packages",
    "cli": null,
    "ui": "Work package table filters"
   },
   "check": "Filtered result set only contains matching work packages",
   "capability_id": "cap_9s2pt4zn",
   "unmapped": null,
   "source": "https://www.openproject.org/docs/user-guide/work-packages/work-package-table-configuration/#work-package-table-configuration; https://www.openproject.org/docs/system-admin-guide/integrations/mcp-server/",
   "result": "not_tried",
   "via": null
  },
  {
   "id": "cap-11",
   "capability": "Comment on a task",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "",
    "mcp": "create_work_package_comment",
    "cli": null,
    "ui": "Work package Activity tab"
   },
   "check": "list_work_package_comments shows the new comment",
   "capability_id": "cap_4zn5cq20",
   "unmapped": null,
   "source": "https://www.openproject.org/docs/system-admin-guide/integrations/mcp-server/",
   "result": "not_tried",
   "via": null
  },
  {
   "id": "cap-12",
   "capability": "Attach a file to a task",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "",
    "mcp": null,
    "cli": null,
    "ui": "Work package detail, Files section"
   },
   "check": "",
   "capability_id": "cap_xtf1jdyh",
   "unmapped": null,
   "source": "https://www.openproject.org/docs/user-guide/file-management/",
   "result": "not_tried",
   "via": null
  },
  {
   "id": "cap-13",
   "capability": "Plan a sprint",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Backlogs module, sprint board"
   },
   "check": "Sprint board shows stories moved into the created sprint",
   "capability_id": "cap_fztrk1dr",
   "unmapped": null,
   "source": "https://www.openproject.org/docs/user-guide/backlogs-scrum/#sprint-boards",
   "result": "not_tried",
   "via": null
  },
  {
   "id": "cap-14",
   "capability": "Set a project budget or billable rates",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Project > Budgets module; hourly rate settings"
   },
   "check": "Budget page shows the configured planned costs/rate",
   "capability_id": "cap_k5402fva",
   "unmapped": null,
   "source": "https://www.openproject.org/docs/user-guide/budgets/; https://www.openproject.org/docs/user-guide/time-and-costs/reporting/#select-units-to-display",
   "result": "not_tried",
   "via": null
  },
  {
   "id": "cap-15",
   "capability": "Read a project report",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Cost reports, time reports"
   },
   "check": "Report page renders spent time/cost figures for the project",
   "capability_id": "cap_fhmexa68",
   "unmapped": null,
   "source": "https://www.openproject.org/docs/user-guide/time-and-costs/reporting/#time-and-cost-reporting",
   "result": "not_tried",
   "via": null
  },
  {
   "id": "cap-16",
   "capability": "Create a doc or wiki page",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Wiki module"
   },
   "check": "New wiki page is listed and viewable",
   "capability_id": "cap_yvyjytn1",
   "unmapped": null,
   "source": "https://www.openproject.org/docs/user-guide/wiki/",
   "result": "not_tried",
   "via": null
  },
  {
   "id": "cap-17",
   "capability": "Add a milestone to a project",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "",
    "mcp": "create_work_package",
    "cli": null,
    "ui": "Gantt chart, new milestone"
   },
   "check": "Gantt chart / work package list shows the milestone on its date",
   "capability_id": "cap_9xs2hcsv",
   "unmapped": null,
   "source": "https://www.openproject.org/docs/user-guide/gantt-chart/",
   "result": "not_tried",
   "via": null
  },
  {
   "id": "cap-18",
   "capability": "Group projects into a portfolio",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": "search_portfolios",
    "cli": null,
    "ui": "Portfolios module"
   },
   "check": "search_portfolios / portfolio view lists the created portfolio with its member projects",
   "capability_id": "cap_2kerdktz",
   "unmapped": null,
   "source": "https://www.openproject.org/docs/user-guide/portfolios/; https://www.openproject.org/pricing/ (Portfolio management: Premium+)",
   "result": "not_tried",
   "via": null
  },
  {
   "id": "cap-19",
   "capability": "Read team workload",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Team planner module"
   },
   "check": "Team planner view shows each member's assigned work packages by date",
   "capability_id": "cap_ytgdmqbh",
   "unmapped": null,
   "source": "https://www.openproject.org/docs/user-guide/team-planner; https://www.openproject.org/pricing/ (Team planner: Basic+ Enterprise add-on)",
   "result": "plan_gated",
   "via": "browser"
  },
  {
   "id": "cap-20",
   "capability": "Set a custom field on a task",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "",
    "mcp": "search_custom_fields / update_work_package",
    "cli": null,
    "ui": "Work package form, custom field value"
   },
   "check": "",
   "capability_id": "cap_6ed0ed0y",
   "unmapped": null,
   "source": "https://www.openproject.org/docs/system-admin-guide/custom-fields/#manage-custom-fields; https://www.openproject.org/docs/system-admin-guide/integrations/mcp-server/",
   "result": "not_tried",
   "via": null
  },
  {
   "id": "cap-21",
   "capability": "Configure workflow statuses and task types",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": "list_statuses / list_types (read)",
    "cli": null,
    "ui": "Administration > Work package types > Workflows"
   },
   "check": "list_statuses/list_types reflects the configured statuses/types",
   "capability_id": "cap_xryme6xg",
   "unmapped": null,
   "source": "https://www.openproject.org/docs/system-admin-guide/manage-work-packages/work-package-types/workflows/",
   "result": "not_tried",
   "via": null
  },
  {
   "id": "cap-22",
   "capability": "Share a project",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Project lists, Share project list dialog"
   },
   "check": "Shared user/group gains access to the shared project list",
   "capability_id": "cap_fvk8hksv",
   "unmapped": null,
   "source": "https://www.openproject.org/docs/user-guide/projects/project-lists/#share-project-lists-with-individual-users-and-groups-enterprise-add-on",
   "result": "not_tried",
   "via": null
  },
  {
   "id": "cap-23",
   "capability": "Link a pull request or commit to a task",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "GitHub/GitLab integration on the work package"
   },
   "check": "Work package shows the linked merge request / commit",
   "capability_id": "cap_d2gwfh2q",
   "unmapped": null,
   "source": "https://www.openproject.org/integrations/github/; https://www.openproject.org/integrations/gitlab/",
   "result": "blocked",
   "via": "api"
  },
  {
   "id": "cap-24",
   "capability": "Capture a task from email or chat",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Incoming email configuration"
   },
   "check": "A work package appears for the incoming email once configured",
   "capability_id": "cap_8wwqdgr8",
   "unmapped": null,
   "source": "https://www.openproject.org/docs/installation-and-operations/configuration/incoming-emails/",
   "result": "blocked",
   "via": null
  },
  {
   "id": "cap-25",
   "capability": "Set a reminder",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Notification settings, Date alerts"
   },
   "check": "Notification is received when the configured start/finish date approaches",
   "capability_id": "cap_c1679vxm",
   "unmapped": null,
   "source": "https://www.openproject.org/docs/user-guide/notifications/notification-settings/#date-alerts",
   "result": "not_tried",
   "via": null
  },
  {
   "id": "cap-26",
   "capability": "Build a dashboard of work data",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Project overview page widgets; My page"
   },
   "check": "Dashboard shows the added widget with live project data",
   "capability_id": "cap_tcvrek8k",
   "unmapped": null,
   "source": "https://www.openproject.org/docs/user-guide/projects/project-home/; https://www.openproject.org/docs/getting-started/my-page/#my-page",
   "result": "not_tried",
   "via": null
  },
  {
   "id": "cap-27",
   "capability": "Set a member's role or permissions",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Administration > Roles and permissions; Project members"
   },
   "check": "Member's role change is reflected on the project members page",
   "capability_id": "cap_bs3hvrpm",
   "unmapped": null,
   "source": "https://www.openproject.org/docs/system-admin-guide/users-permissions/",
   "result": "not_tried",
   "via": null
  },
  {
   "id": "cap-28",
   "capability": "Configure SAML SSO",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Administration > Authentication > Single sign-on"
   },
   "check": "Login redirects to the configured SSO provider",
   "capability_id": "cap_pz4pecfg",
   "unmapped": null,
   "source": "https://www.openproject.org/docs/system-admin-guide/authentication/authentication-faq/#which-authentication-providers-are-supported-for-single-sign-on; https://www.openproject.org/pricing/ (SSO: Professional+)",
   "result": "not_tried",
   "via": null
  },
  {
   "id": "cap-29",
   "capability": "Provision users with SCIM",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": "SCIM endpoints (RFC 7643/7644)",
    "mcp": null,
    "cli": null,
    "ui": "Administration > Authentication > SCIM"
   },
   "check": "A user created via SCIM appears in OpenProject's user list",
   "capability_id": "cap_m71xhnht",
   "unmapped": null,
   "source": "https://www.openproject.org/docs/api/#scim; https://www.openproject.org/pricing/ (SCIM provisioning: Corporate)",
   "result": "not_tried",
   "via": null
  },
  {
   "id": "cap-30",
   "capability": "Enable two-factor authentication",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "My account > Two-factor authentication"
   },
   "check": "Login subsequently prompts for the second factor",
   "capability_id": "cap_9qz744jy",
   "unmapped": null,
   "source": "https://www.openproject.org/docs/system-admin-guide/authentication/two-factor-authentication/",
   "result": "not_tried",
   "via": null
  },
  {
   "id": "cap-31",
   "capability": "Set the brand logo and colours",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Administration > Design, custom theme and logo"
   },
   "check": "Application UI renders the uploaded logo/colours",
   "capability_id": "cap_28j5w4mh",
   "unmapped": null,
   "source": "https://www.openproject.org/docs/system-admin-guide/design/#set-custom-color-theme-and-logo-enterprise-add-on; https://www.openproject.org/pricing/ (Custom theme and logo: Basic+)",
   "result": "not_tried",
   "via": null
  },
  {
   "id": "cap-32",
   "capability": "Register an OAuth app",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Administration > Authentication > OAuth applications"
   },
   "check": "Registered OAuth application can complete an authorization flow and obtain a token with the mcp scope",
   "capability_id": "cap_rw58zb2y",
   "unmapped": null,
   "source": "https://www.openproject.org/docs/system-admin-guide/integrations/mcp-server/",
   "result": "not_tried",
   "via": null
  }
 ],
 "stale": false,
 "unreachable_since": null,
 "not_driven_since": null,
 "icon": "/logos/openproject.png",
 "agent_kinds": {
  "browser": {
   "who": "An assistant in a browser",
   "passed": [],
   "stop": "signup",
   "why": "Cloud trial never finishes creating",
   "tone": "wall",
   "text": "Stops at sign-up: Cloud trial never finishes creating."
  },
  "direct": {
   "who": "An agent talking to it directly",
   "passed": [],
   "stop": "signup",
   "why": "Cloud trial never finishes creating",
   "tone": "wall",
   "text": "Stops at sign-up: Cloud trial never finishes creating."
  }
 },
 "sdk": null,
 "surface_reach": null,
 "connect": {
  "api": {
   "base_url": "https://qa.openproject-edge.com",
   "state": "documented"
  }
 },
 "surface_sources": {
  "api": "https://www.openproject.org/docs/api/endpoints/root/",
  "mcp": "https://www.openproject.org/docs/system-admin-guide/integrations/mcp-server/",
  "docs": "https://www.openproject.org/docs/api/"
 },
 "copilot_connector": null,
 "stripe_directory": null,
 "in_stripe_directory": null,
 "stripe_projects": null,
 "pay_rails": [],
 "stop_evidence": {
  "at": "signup",
  "date": "2026-10-26",
  "line": "The cloud trial form at start.openproject.com accepted our agentdrives.com address, then a second address of ours (and a second data center), but every trial stayed at \"We are creating your free trial\" for 40+ minutes; its status poll answered {} and the instance host kept redirecting to \"Please…"
 },
 "wall_vendor": null,
 "mcp_sign_in": null,
 "safety_issues": 0,
 "fix_counts": {
  "small": 6,
  "medium": 3,
  "large": 2,
  "total": 11
 },
 "evidence_sha256": "fe6f04142ab00925292a38545a73528074d6311ddfb81d61c9aa623c3d4ec876",
 "first_seen": "2026-10-26",
 "license": {
  "name": "CC BY 4.0",
  "url": "https://creativecommons.org/licenses/by/4.0/"
 },
 "correction": {
  "status": "none",
  "open": 0,
  "since": null,
  "reply_by": null
 },
 "attribution": null,
 "confirmation": {
  "state": "awaiting",
  "drives": 1,
  "agree": 1,
  "review": null,
  "text": "1 drive, awaiting confirmation"
 },
 "stop_shot": null,
 "stop_shot_hash": null,
 "attempts_count": 182,
 "detail": {
  "public": false,
  "in": [
   "report",
   "api"
  ],
  "since": "2026-10-17"
 },
 "what_it_does": "OpenProject is open-source project management software.",
 "kind": "product",
 "rules_version": "rules-2026-10-30-42",
 "rules_url": "https://agentdrives.com/method/changelog#rules-2026-10-30-42",
 "category_median": {
  "holds_up": {
   "median": 68,
   "n": 5
  }
 },
 "peers": {
  "API-03": {
   "basis": "category",
   "n": 8,
   "below": 0,
   "above": 5
  },
  "API-04": {
   "basis": "category",
   "n": 7,
   "below": 0,
   "above": 6
  },
  "API-07": {
   "basis": "category",
   "n": 9,
   "below": 4,
   "above": 0
  },
  "DOCS-08": {
   "basis": "category",
   "n": 14,
   "below": 0,
   "above": 8,
   "quartile": 1
  },
  "DOCS-10": {
   "basis": "category",
   "n": 14,
   "below": 3,
   "above": 4,
   "quartile": 2
  },
  "DOCS-11": {
   "basis": "category",
   "n": 14,
   "below": 0,
   "above": 3,
   "quartile": 2
  },
  "FIND-06": {
   "basis": "category",
   "n": 9,
   "below": 3,
   "above": 0
  },
  "IN-08": {
   "basis": "category",
   "n": 13,
   "below": 0,
   "above": 3,
   "quartile": 2
  },
  "IN-11": {
   "basis": "category",
   "n": 14,
   "below": 8,
   "above": 4,
   "quartile": 3
  },
  "IN-12": {
   "basis": "category",
   "n": 14,
   "below": 13,
   "above": 0,
   "quartile": 4
  },
  "LEAVE-03": {
   "basis": "category",
   "n": 15,
   "below": 10,
   "above": 0,
   "quartile": 4
  },
  "MCP-03": {
   "basis": "all",
   "n": 66,
   "below": 4,
   "above": 0,
   "percentile": 53
  },
  "MCP-04": {
   "basis": "all",
   "n": 66,
   "below": 0,
   "above": 46,
   "percentile": 15
  },
  "MCP-05": {
   "basis": "all",
   "n": 66,
   "below": 1,
   "above": 20,
   "percentile": 36
  },
  "MCP-06": {
   "basis": "all",
   "n": 66,
   "below": 10,
   "above": 16,
   "percentile": 45
  },
  "MCP-07": {
   "basis": "all",
   "n": 66,
   "below": 32,
   "above": 0,
   "percentile": 74
  },
  "MCP-11": {
   "basis": "all",
   "n": 66,
   "below": 33,
   "above": 0,
   "percentile": 75
  },
  "PAY-05": {
   "basis": "category",
   "n": 10,
   "below": 0,
   "above": 1,
   "quartile": 2
  },
  "PROTO-02": {
   "basis": "category",
   "n": 5,
   "below": 0,
   "above": 0
  }
 },
 "probe": {
  "checked": "2026-11-01",
  "status": "ok",
  "sign_up_page": "not-found",
  "wall": "none",
  "llms_txt": false,
  "mcp": "none",
  "openapi": false,
  "payment_402": null,
  "payment_rails": [],
  "files": {
   "openapi": {
    "url": null,
    "found": false
   },
   "llms_txt": {
    "url": null,
    "found": false
   },
   "llms_full": {
    "url": null,
    "found": false
   }
  }
 },
 "probe_history": [
  {
   "checked": "2026-11-01",
   "status": "ok",
   "sign_up_page": "not-found",
   "wall": "none",
   "llms_txt": false,
   "mcp": "none",
   "openapi": false,
   "payment_402": null,
   "payment_rails": []
  },
  {
   "checked": "2026-10-31",
   "status": "ok",
   "sign_up_page": "not-found",
   "wall": "none",
   "llms_txt": false,
   "mcp": "none",
   "openapi": false,
   "payment_402": null,
   "payment_rails": []
  },
  {
   "checked": "2026-10-30",
   "status": "ok",
   "sign_up_page": "not-found",
   "wall": "none",
   "llms_txt": false,
   "mcp": "none",
   "openapi": false,
   "payment_402": null,
   "payment_rails": []
  },
  {
   "checked": "2026-10-29",
   "status": "ok",
   "sign_up_page": "not-found",
   "wall": "none",
   "llms_txt": false,
   "mcp": "none",
   "openapi": false,
   "payment_402": null,
   "payment_rails": []
  },
  {
   "checked": "2026-10-28",
   "status": "ok",
   "sign_up_page": "not-found",
   "wall": "none",
   "llms_txt": false,
   "mcp": "none",
   "openapi": false,
   "payment_402": null,
   "payment_rails": []
  }
 ],
 "surface_changes": [],
 "agent_reports": null,
 "verdict": "L1 · Needs a person: our agent did not get a hosted OpenProject account on its own. It stopped at sign-up. The cloud trial form accepted our agent's addresses, but the instance was never created: the page kept redirecting to \"Please wait, your instance is currently being created...\" and no mail came. Verify, key, first call and work were not reached on the cloud. Self-hosted from the documented Compose images, our agent used a full REST API and finished all its core tasks, and with an Enterprise trial token it reached the official MCP server. API tokens need the web page. The Chargebee checkout requires a phone number.",
 "changes": {
  "source": "store",
  "drives": [
   {
    "run": "20261026T122551Z",
    "date": "2026-10-26",
    "level": 1,
    "stop": "signup",
    "entry": "closed",
    "driver": 5,
    "listed": true,
    "paid": false,
    "agent_paid": null
   }
  ],
  "events": [],
  "feed": "https://agentdrives.com/api/tools/openproject/changes.json"
 },
 "agreement": null,
 "method_release": "2026-Q4.27",
 "found": {
  "agent_blockers": 3,
  "surface_issues": null
 },
 "agent_surfaces": {
  "api": {
   "state": "tested",
   "reachable": true,
   "documented": 320,
   "tested": 252,
   "source": "https://www.openproject.org/docs/api/endpoints/root/"
  },
  "mcp": {
   "state": "tested",
   "reachable": true,
   "documented": 26,
   "tested": 26,
   "source": "https://www.openproject.org/docs/system-admin-guide/integrations/mcp-server/"
  },
  "cli": {
   "state": "none_found",
   "reachable": null,
   "documented": null,
   "tested": null,
   "source": null
  },
  "sdk": {
   "state": "none_found",
   "documented": null,
   "tested": null,
   "source": null
  },
  "docs": {
   "state": "tested",
   "documented": 776,
   "tested": 600,
   "source": "https://www.openproject.org/docs/api/"
  },
  "payment": {
   "state": "none_found",
   "documented": null,
   "tested": null,
   "source": null
  }
 },
 "issues_found": 3,
 "rank": null,
 "rank_of": 5,
 "rank_change": null,
 "rank_since": null,
 "links": {
  "category": [
   {
    "label": "Work and collaboration",
    "href": "https://agentdrives.com/categories/work"
   },
   {
    "label": "Project management",
    "href": "https://agentdrives.com/categories/project-management"
   }
  ],
  "tasks": [],
  "walls": [],
  "vendors": [],
  "standards": [
   {
    "label": "MCP",
    "href": "https://agentdrives.com/standards/mcp",
    "note": "tools an agent can call"
   }
  ],
  "steps": [
   {
    "label": "Find",
    "href": "https://agentdrives.com/access/find"
   },
   {
    "label": "Get in",
    "href": "https://agentdrives.com/access/get-in",
    "note": "stopped here"
   },
   {
    "label": "Use",
    "href": "https://agentdrives.com/access/use"
   },
   {
    "label": "Pay",
    "href": "https://agentdrives.com/access/pay"
   },
   {
    "label": "Leave",
    "href": "https://agentdrives.com/access/leave"
   }
  ],
  "rivals": [
   {
    "label": "Asana",
    "href": "https://agentdrives.com/tools/asana",
    "slug": "asana",
    "level": 1
   },
   {
    "label": "Basecamp",
    "href": "https://agentdrives.com/tools/basecamp",
    "slug": "basecamp",
    "level": 1
   },
   {
    "label": "ClickUp",
    "href": "https://agentdrives.com/tools/clickup",
    "slug": "clickup",
    "level": 1
   }
  ],
  "compare": [],
  "rail": [
   {
    "label": "Watch this product",
    "href": "https://agentdrives.com/watch"
   },
   {
    "label": "Get the data",
    "href": "https://agentdrives.com/data#plans"
   }
  ]
 },
 "capability_matrix": [
  {
   "id": "cap-01",
   "name": "Create a task or issue",
   "core": true,
   "result": "untried",
   "surfaces": {
    "api": "none",
    "mcp": "untried",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-02",
   "name": "Update a task",
   "core": true,
   "result": "untried",
   "surfaces": {
    "api": "none",
    "mcp": "untried",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-03",
   "name": "Complete a task or change its status",
   "core": true,
   "result": "untried",
   "surfaces": {
    "api": "none",
    "mcp": "untried",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-04",
   "name": "Create a project or board",
   "core": true,
   "result": "blocked",
   "surfaces": {
    "api": "blocked",
    "mcp": "untried",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-05",
   "name": "Create a board, Gantt or calendar view",
   "core": true,
   "result": "untried",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-06",
   "name": "Assign a task",
   "core": true,
   "result": "blocked",
   "surfaces": {
    "api": "blocked",
    "mcp": "untried",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-07",
   "name": "Set a dependency between tasks",
   "core": true,
   "result": "untried",
   "surfaces": {
    "api": "none",
    "mcp": "untried",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-08",
   "name": "Log time on a task or project",
   "core": true,
   "result": "untried",
   "surfaces": {
    "api": "untried",
    "mcp": "untried",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-09",
   "name": "List projects or boards",
   "core": false,
   "result": "untried",
   "surfaces": {
    "api": "untried",
    "mcp": "untried",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-10",
   "name": "Search or filter tasks",
   "core": false,
   "result": "untried",
   "surfaces": {
    "api": "none",
    "mcp": "untried",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-11",
   "name": "Comment on a task",
   "core": false,
   "result": "untried",
   "surfaces": {
    "api": "none",
    "mcp": "untried",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-12",
   "name": "Attach a file to a task",
   "core": false,
   "result": "untried",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-13",
   "name": "Plan a sprint",
   "core": false,
   "result": "untried",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-14",
   "name": "Set a project budget or billable rates",
   "core": false,
   "result": "untried",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-15",
   "name": "Read a project report",
   "core": false,
   "result": "untried",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-16",
   "name": "Create a doc or wiki page",
   "core": false,
   "result": "untried",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-17",
   "name": "Add a milestone to a project",
   "core": false,
   "result": "untried",
   "surfaces": {
    "api": "none",
    "mcp": "untried",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-18",
   "name": "Group projects into a portfolio",
   "core": false,
   "result": "untried",
   "surfaces": {
    "api": "none",
    "mcp": "untried",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-19",
   "name": "Read team workload",
   "core": false,
   "result": "plan",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "plan"
   }
  },
  {
   "id": "cap-20",
   "name": "Set a custom field on a task",
   "core": false,
   "result": "untried",
   "surfaces": {
    "api": "none",
    "mcp": "untried",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-21",
   "name": "Configure workflow statuses and task types",
   "core": false,
   "result": "untried",
   "surfaces": {
    "api": "none",
    "mcp": "untried",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-22",
   "name": "Share a project",
   "core": false,
   "result": "untried",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-23",
   "name": "Link a pull request or commit to a task",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "blocked",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-24",
   "name": "Capture a task from email or chat",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-25",
   "name": "Set a reminder",
   "core": false,
   "result": "untried",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-26",
   "name": "Build a dashboard of work data",
   "core": false,
   "result": "untried",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-27",
   "name": "Set a member's role or permissions",
   "core": false,
   "result": "untried",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-28",
   "name": "Configure SAML SSO",
   "core": false,
   "result": "untried",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-29",
   "name": "Provision users with SCIM",
   "core": false,
   "result": "untried",
   "surfaces": {
    "api": "untried",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-30",
   "name": "Enable two-factor authentication",
   "core": false,
   "result": "untried",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-31",
   "name": "Set the brand logo and colours",
   "core": false,
   "result": "untried",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-32",
   "name": "Register an OAuth app",
   "core": false,
   "result": "untried",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  }
 ],
 "category_place": {
  "category": "project-management",
  "products": 15,
  "higher": 5,
  "same_level": 9,
  "as_of": "2026-10-31",
  "stop": "signup",
  "rivals_by": "stop",
  "rivals": [
   "asana",
   "basecamp",
   "clickup",
   "atlassian",
   "linear",
   "smartsheet",
   "teamwork",
   "trello",
   "wrike"
  ]
 },
 "page": "https://agentdrives.com/tools/openproject?via=api"
}