{
 "$schema": "https://agentdrives.com/schemas/tool.schema.json",
 "id": "prd_01m57vgth2s5srcwg1gx0h32dq",
 "ids": {
  "org": "org_01m57vgth2a5m0bqs9nkxqa6bm",
  "surfaces": {
   "web": "srf_01m5yab2we5gh08xht6c4ryfvs",
   "api": "srf_01m5yab2wewqahe3wr69q5xbax",
   "mcp": "srf_01m5yab2weqksme52dc2s0msej"
  },
  "slugs": [
   "bitbucket"
  ],
  "domain": "bitbucket.org",
  "wikidata": "Q2493781"
 },
 "slug": "bitbucket",
 "name": "Bitbucket",
 "url": "https://bitbucket.org",
 "domain": "bitbucket.org",
 "category": "source-control",
 "category_name": "Source control",
 "tested_at": "2026-10-27",
 "run": "20261027T084500Z",
 "draft": false,
 "reviewed": true,
 "owner_verified": null,
 "origin": "editorial",
 "history": [
  {
   "run": "20261027T084500Z",
   "date": "2026-10-27",
   "level": 1,
   "engine": {
    "model": "claude-opus-5-5",
    "driver": 5,
    "signed": true,
    "inbox": [
     "agentdrives.com"
    ],
    "robots": "skip",
    "version": "2026.10.27",
    "commit": "53d130186e8432e42a7aa40b76e98d3f818ec039",
    "prompts": {
     "version": "2026.10.27",
     "commit": "4a18f5abc48d9338c8c7c67f8820899e9dec5a45"
    },
    "rules": {
     "version": "2026.10.27",
     "commit": "e48310aedf9e8567bbe57fdff36c027e5f19fed9"
    }
   },
   "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": "portal"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "unreached",
   "text": "Leaving not reached",
   "how": "no-account"
  }
 ],
 "outcomes": [
  {
   "key": "find",
   "label": "Learn",
   "state": "no",
   "text": "No docs it can act on",
   "have": [
    "openapi",
    "mcp"
   ],
   "docs": "unreachable"
  },
  {
   "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": "portal",
   "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": "OpenAPI",
    "state": "behind",
    "behind": 2,
    "value": "3.0.0"
   }
  ]
 },
 "reliability_method": null,
 "resilience": null,
 "stress": [
  {
   "capability": "Open and merge a pull request",
   "probe": "PR create without toRef",
   "outcome": "400 {\"errors\": [{\"message\": \"toRef must be supplied for this request\"}]}",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Create a code repository",
   "probe": "repeat repo create with same name",
   "outcome": "409 {\"errors\": [{\"context\": \"name\", \"message\": \"This repository URL is already taken.\"}]}",
   "grade": "clear",
   "idempotent": "yes",
   "rate_limit": null
  },
  {
   "capability": "Create a code repository",
   "probe": "15 quick GETs on one repo",
   "outcome": "Counter({200: 15})",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": "none-seen"
  },
  {
   "capability": "Create a code repository",
   "probe": "wrong token",
   "outcome": "401 {\"errors\": [{\"message\": \"You are not permitted to access this resource\", \"exceptionName\": \"com.atlassian.plugins.rest.api.security.exception.AuthenticationRequiredException\"}]}",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Create a code repository",
   "probe": "well-formed repo slug that does not exist",
   "outcome": "404 {\"errors\": [{\"message\": \"Repository ~agentdrives/no-such-repo does not exist.\", \"exceptionName\": \"com.atlassian.bitbucket.repository.NoSuchRepositoryException\"}]}",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Create a code repository",
   "probe": "bad credential on the Cloud API",
   "outcome": "401, content-length 0, content-type text/plain, www-authenticate: BitbucketCustom realm=Bitbucket.org HTTP",
   "grade": "vague",
   "idempotent": null,
   "rate_limit": null
  }
 ],
 "surface_audit": {
  "totals": {
   "items": 356,
   "documented": 356,
   "safe": 345,
   "exercised": 2,
   "passed": 2,
   "skipped": 11,
   "blocked": 343,
   "not_run": 0,
   "match": 2,
   "drift": 0,
   "broken_doc": 0,
   "docs_complete": 131,
   "docs_partial": 225,
   "docs_missing": 0,
   "errors_clear": 0,
   "errors_vague": 0,
   "errors_silent": 0
  }
 },
 "coverage_core": null,
 "coverage_own": null,
 "after_wall": null,
 "coverage_source": "computed",
 "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"
  ],
  "robots": "skip",
  "version": "2026.10.27",
  "commit": "53d130186e8432e42a7aa40b76e98d3f818ec039",
  "prompts": {
   "version": "2026.10.27",
   "commit": "4a18f5abc48d9338c8c7c67f8820899e9dec5a45"
  },
  "rules": {
   "version": "2026.10.27",
   "commit": "e48310aedf9e8567bbe57fdff36c027e5f19fed9"
  }
 },
 "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": {
  "rung": "signup",
  "vendor": "Google reCAPTCHA",
  "visible": true,
  "type": "challenge",
  "human": null,
  "how": "In Google Cloud Fraud Defense (reCAPTCHA), lower the score your sign-up action needs or give it a challenge policy. Or offer a documented sign-up API with email verification.",
  "recognises_us": false,
  "vendor_id": "recaptcha",
  "signed": true
 },
 "agent_pass": null,
 "who_gets_in": {
  "server": {
   "state": "captcha"
  },
  "signed": {
   "state": "page",
   "kind": "signup",
   "at": "2026-10-27"
  },
  "browser": {
   "state": "captcha",
   "measured": false
  },
  "our_key": "verified",
  "robots": null,
  "tip": false
 },
 "ladder": {
  "docs": {
   "status": "headless",
   "note": "OpenAPI 3.0.0 spec with 300 operations, REST intro with every auth method, support docs and the Atlassian MCP tools page all fetched without a browser. No llms.txt, no markdown docs."
  },
  "signup": {
   "status": "human",
   "cause": "check",
   "note": "id.atlassian.com sign-up: after the email, a visible Google reCAPTCHA checkbox (\"Please confirm you're not a robot\"), so the agent stopped here. Google, Microsoft, Apple and Slack sign-in were not used (a person's accounts)."
  },
  "verify": {
   "status": "",
   "note": "Not reached: the sign-up stopped at the reCAPTCHA before any mail was sent.",
   "reached": false
  },
  "credentials": {
   "status": "",
   "note": "Not reached. Docs: API tokens, access tokens and OAuth consumers are all created in the web UI; with a consumer, the client-credentials grant then gives a token without a browser.",
   "reached": false
  },
  "first_call": {
   "status": "",
   "note": "Not reached with an account. Without one, GET /2.0/user answers 401 with an empty body; only public reads (GET /2.0/hook_events) work.",
   "route": "account",
   "reached": false
  },
  "first_action": {
   "status": "",
   "note": "Not reached: every create (repository, pull request, pipeline) needs an account.",
   "reached": false
  },
  "pay": {
   "status": "",
   "grade": "P2",
   "rails": [
    "card checkout in the workspace's plan settings"
   ],
   "rail_ids": [
    "card"
   ],
   "first_party": true,
   "rail_scope": "none",
   "trial_path": "free tier",
   "route": "portal",
   "checkout": {
    "reached": "no",
    "processor": "other",
    "captcha": "none",
    "three_ds": "not_seen",
    "card_form": false,
    "phone_field": "none",
    "wallets": [],
    "rail_offer": "none",
    "price": "3.65",
    "currency": "USD",
    "period": "month",
    "plan": "Standard",
    "last_button": ""
   },
   "person": null,
   "ours": "account",
   "note": "No x402, MPP or registry listing, and no payment went through. The pricing page sells Standard at $3.65 and Premium at $8 per user/month with a free trial and takes credit cards on its online order form; plans change under Workspace settings > Plan details. The checkout was not reached because no account could be made.",
   "reached": false
  },
  "cancel": {
   "status": "",
   "note": "Nothing to cancel: no plan or trial started. The pricing page says plans are changed in workspace settings ('Plan details' then 'Change plan'): web UI.",
   "docs_grade": "",
   "reached": false
  },
  "delete": {
   "status": "",
   "note": "No account was created, so there was nothing to delete.",
   "account": false,
   "reached": false
  }
 },
 "routes": [
  {
   "route": "keyless",
   "offered": "documented",
   "tried": true,
   "not_tried": null,
   "result": "not_reached",
   "wall": null,
   "person": "none",
   "brings": "nothing",
   "fresh": true,
   "minutes": 0.5,
   "browser": null
  },
  {
   "route": "local",
   "offered": "documented",
   "tried": true,
   "not_tried": null,
   "result": "in",
   "wall": null,
   "person": "none",
   "brings": "inbox",
   "fresh": true,
   "minutes": 12,
   "browser": true
  },
  {
   "route": "oauth_consent",
   "offered": "documented",
   "tried": false,
   "not_tried": "no_kit",
   "result": null,
   "wall": null,
   "person": null,
   "brings": null,
   "fresh": null,
   "minutes": null,
   "browser": null
  }
 ],
 "checkout": {
  "reached": "no",
  "rail_offer": "none",
  "period": "month",
  "price": "3.65",
  "currency": "USD",
  "plan": "Standard"
 },
 "docs": {
  "at": "2026-10-27",
  "read": 0,
  "listed": 0,
  "sampled": false,
  "overall": "unreachable",
  "getting_started": "missing",
  "auth": "missing",
  "errors": "missing",
  "examples": "none",
  "freshness": "unknown",
  "newest": null,
  "core_pages": "0 of 6",
  "capabilities": "none",
  "label": "Couldn't be read"
 },
 "claims": null,
 "pay_options": {
  "checked": "2026-10-27",
  "source": "probe",
  "options": [],
  "agentic": [],
  "paid": null,
  "exercised": null,
  "detected_grade": null,
  "trial": {
   "no_card": null,
   "card_required": null,
   "free_plan": null
  },
  "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)."
   }
  ]
 },
 "surfaces": {
  "api": true,
  "openapi": true,
  "cli": false,
  "sdk": false,
  "mcp": "official",
  "llms_txt": false,
  "webhooks": true,
  "sandbox": false
 },
 "urls": {
  "docs": "https://support.atlassian.com/bitbucket-cloud/resources/",
  "llms_txt": null,
  "mcp": "https://mcp.atlassian.com/v2/mcp"
 },
 "surface_notes": {
  "api": "REST 2.0, 300 operations in 23 groups",
  "openapi": "OpenAPI 3.0.0 (also a Swagger 2.0 copy); no example on about half the operations"
 },
 "surface_sizes": [
  {
   "kind": "api",
   "listed": 300,
   "tested": 2
  },
  {
   "kind": "mcp",
   "listed": 44,
   "tested": 0
  },
  {
   "kind": "cli",
   "listed": 1,
   "tested": 0
  }
 ],
 "can_do": [
  "Read the full API reference and OpenAPI spec without an account",
  "List webhook event types without an account",
  "Run Bitbucket Data Center locally and do every core task there (create repos, push, open, review and merge pull requests, record deployments) through its REST API"
 ],
 "cannot_do": [
  {
   "what": "Create a Bitbucket Cloud account",
   "why": "The Atlassian sign-up shows a visible reCAPTCHA after the email"
  },
  {
   "what": "Create an API token or access token through the API",
   "why": "API tokens, access tokens and OAuth consumers are made only in the web UI"
  },
  {
   "what": "Use any Cloud capability (repos, pull requests, Pipelines, deployments)",
   "why": "All need an account"
  },
  {
   "what": "Record a deployment through the Cloud API",
   "why": "The spec has only GET for deployments: they come from a Pipelines step"
  }
 ],
 "blockers": [
  "Visible reCAPTCHA on the Atlassian account sign-up"
 ],
 "tips_for_agents": [
  "Read the API from https://developer.atlassian.com/cloud/bitbucket/swagger.v3.json (300 operations); the HTML reference pages are 1-2 MB each.",
  "API tokens use Basic auth with the Atlassian email as username; app passwords are deprecated.",
  "For MCP use https://mcp.atlassian.com/v2/mcp with scopes read:bitbucket:agent-interface and write:bitbucket:agent-interface; the workspace must be linked to an Atlassian organization.",
  "Deployments cannot be created through the Cloud API: run a Pipelines step with a deployment environment.",
  "On Data Center, basic auth is off by default: create an HTTP access token (PUT /rest/access-tokens/latest/users/{user}) from a logged-in session and use it as a Bearer token."
 ],
 "selfhost": {
  "install": {
   "status": "browser",
   "minutes": 12,
   "note": "The setup wizard is browser-only. The evaluation license needs an Atlassian account (the same reCAPTCHA), so the drive pasted Atlassian's published 3-hour test license. Basic auth is off by default: the first HTTP access token came from the documented REST endpoint, sent from the logged-in browser session."
  },
  "ladder": {
   "docs": {
    "status": "headless",
    "note": "Docker Hub page and Data Center REST docs (developer.atlassian.com/server/bitbucket/rest/v1000/)."
   },
   "signup": {
    "status": "browser",
    "note": "Setup wizard in the browser with Atlassian's 3-hour test license; an evaluation license needs an Atlassian account behind a visible reCAPTCHA."
   },
   "verify": {
    "status": "n/a",
    "note": "No email verification for the local admin."
   },
   "credentials": {
    "status": "browser",
    "note": "PUT /rest/access-tokens/latest/users/{user} from the browser session: basic auth is disabled and a token cannot create tokens."
   },
   "first_call": {
    "status": "headless",
    "note": "GET /rest/api/latest/projects with the Bearer token: 200.",
    "route": "account"
   },
   "first_action": {
    "status": "headless",
    "note": "POST /rest/api/latest/projects/~agentdrives/repos: 201 (creating a project needs a global permission the token lacks: 401)."
   },
   "delete": {
    "status": "headless",
    "note": "Repos deleted (202, list empty), tokens revoked (then 401), instance stopped.",
    "left": "removed"
   },
   "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": 83,
  "coverage_source": "computed"
 },
 "edge_case": "none",
 "summary": "Our agent couldn't get into Bitbucket Cloud on its own: the Atlassian sign-up shows a visible reCAPTCHA after the email. The API (300 operations, OpenAPI 3.0.0) and the official Atlassian MCP server are well documented, but every key is made in the web UI and every task needs an account. The self-hosted Data Center image ran here with Atlassian's published test license, and its REST API did every core task three times out of three, except Pipelines, which Data Center does not have.",
 "wall": "Visible reCAPTCHA on the Atlassian sign-up",
 "plan_scope": "",
 "robots_stop": null,
 "robots": null,
 "terms": null,
 "terms_read": "2026-10-27",
 "email_gate": null,
 "plain": {
  "summary": "Bitbucket is a code hosting and build service. An agent could not open a Bitbucket Cloud account on its own: the Atlassian sign-up shows a tick-box 'I'm not a robot' check. The self-hosted Data Center edition ran locally and the agent did most core tasks on it through its API, three times out of three.",
  "can_do": [
   "Read the full API reference and OpenAPI spec without an account",
   "List webhook event types without an account",
   "Run Bitbucket Data Center locally and do every core task there except Pipelines (create repos, push, open, review and merge pull requests, record deployments)"
  ],
  "cannot_do": [
   {
    "what": "Create a Bitbucket Cloud account",
    "why": "The Atlassian sign-up shows a visible reCAPTCHA after the email."
   },
   {
    "what": "Create an API or access token through the Cloud API",
    "why": "The spec has no such operation; tokens are made in the web UI."
   },
   {
    "what": "Use any Cloud feature (repos, pull requests, Pipelines, deployments)",
    "why": "All of them need an account."
   },
   {
    "what": "Record a deployment through the Cloud API",
    "why": "The spec only lists deployments; they come from a Pipelines step."
   }
  ]
 },
 "plan_gated": [],
 "reply": null,
 "capabilities": [
  {
   "id": "cap-01",
   "capability": "Create a code repository",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /2.0/repositories/{workspace}/{repo_slug}",
    "mcp": null,
    "cli": null,
    "ui": "Workspace > Repositories > Create repository"
   },
   "check": "GET /2.0/repositories/{workspace}/{repo_slug} returns the new repo",
   "capability_id": "cap_xcgt50hx",
   "source": "https://developer.atlassian.com/cloud/bitbucket/rest/…/; https://www.atlassian.com/software/bitbucket/pricing",
   "result": "blocked",
   "via": "api"
  },
  {
   "id": "cap-02",
   "capability": "Push commits to a repository",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "git push over HTTPS/SSH; POST /2.0/repositories/{workspace}/{repo_slug}/src",
    "mcp": null,
    "cli": "git push",
    "ui": "Source > upload/edit file"
   },
   "check": "GET /2.0/repositories/{workspace}/{repo_slug}/commits shows the new commit",
   "capability_id": "cap_dzrmp5j9",
   "source": "https://developer.atlassian.com/cloud/bitbucket/rest/api-group-commits/; https://developer.atlassian.com/cloud/bitbucket/rest/api-group-source/",
   "result": "blocked",
   "via": "api"
  },
  {
   "id": "cap-03",
   "capability": "Open and merge a pull request",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /2.0/repositories/{workspace}/{repo_slug}/pullrequests; POST .../pullrequests/{id}/merge",
    "mcp": null,
    "cli": null,
    "ui": "Repository > Pull requests > Create"
   },
   "check": "GET /2.0/repositories/{workspace}/{repo_slug}/pullrequests/{id} shows state MERGED",
   "capability_id": "cap_p32gmnqr",
   "source": "https://developer.atlassian.com/cloud/bitbucket/rest/…/",
   "result": "blocked",
   "via": "api"
  },
  {
   "id": "cap-04",
   "capability": "Review a pull request",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /2.0/repositories/{workspace}/{repo_slug}/pullrequests/{id}/comments; POST .../approve",
    "mcp": null,
    "cli": null,
    "ui": "Pull request > Diff / Overview tab"
   },
   "check": "GET /2.0/repositories/{workspace}/{repo_slug}/pullrequests/{id}/comments shows the comment or approval",
   "capability_id": "cap_gbrba2xt",
   "source": "https://www.atlassian.com/software/bitbucket/features/code-review; https://developer.atlassian.com/cloud/bitbucket/rest/…/",
   "result": "failed",
   "via": "api"
  },
  {
   "id": "cap-05",
   "capability": "Run a CI/CD pipeline",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /2.0/repositories/{workspace}/{repo_slug}/pipelines/",
    "mcp": null,
    "cli": null,
    "ui": "Repository > Pipelines"
   },
   "check": "GET /2.0/repositories/{workspace}/{repo_slug}/pipelines/{uuid} shows state COMPLETED",
   "capability_id": "cap_r6y9w5sx",
   "source": "https://www.atlassian.com/software/bitbucket/features/pipelines; https://developer.atlassian.com/cloud/bitbucket/rest/api-group-pipelines/",
   "result": "blocked",
   "via": "api"
  },
  {
   "id": "cap-06",
   "capability": "Publish a deployment/release",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "GET /2.0/repositories/{workspace}/{repo_slug}/deployments/",
    "mcp": null,
    "cli": null,
    "ui": "Repository > Deployments"
   },
   "check": "GET /2.0/repositories/{workspace}/{repo_slug}/deployments/{deployment_uuid} shows the deployment state",
   "capability_id": "cap_4wthbqyz",
   "source": "https://developer.atlassian.com/cloud/bitbucket/rest/…/",
   "result": "blocked",
   "via": "api"
  },
  {
   "id": "cap-07",
   "capability": "Create a deploy environment",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /2.0/repositories/{workspace}/{repo_slug}/environments/",
    "mcp": null,
    "cli": null,
    "ui": "Repository settings > Deployments"
   },
   "check": "GET /2.0/repositories/{workspace}/{repo_slug}/environments/ lists the new environment",
   "capability_id": "cap_e3xnybff",
   "source": "https://developer.atlassian.com/cloud/bitbucket/rest/…/",
   "result": "blocked",
   "via": "api"
  },
  {
   "id": "cap-08",
   "capability": "Set pipeline variables and secrets",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /2.0/repositories/{workspace}/{repo_slug}/pipelines_config/variables/",
    "mcp": null,
    "cli": null,
    "ui": "Repository settings > Pipelines > Repository variables"
   },
   "check": "GET .../pipelines_config/variables/ lists the variable (value hidden if secured)",
   "capability_id": "cap_92xmegfv",
   "source": "https://developer.atlassian.com/cloud/bitbucket/rest/api-group-pipelines/",
   "result": "blocked",
   "via": "api"
  },
  {
   "id": "cap-09",
   "capability": "Read deploy status and history",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET /2.0/repositories/{workspace}/{repo_slug}/deployments/",
    "mcp": null,
    "cli": null,
    "ui": "Repository > Deployments"
   },
   "check": "GET returns a list of past deployments with state",
   "capability_id": "cap_tjrnstx4",
   "source": "https://developer.atlassian.com/cloud/bitbucket/rest/…/",
   "result": "blocked",
   "via": "api"
  },
  {
   "id": "cap-10",
   "capability": "Check code for quality/security with reports",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /2.0/repositories/{workspace}/{repo_slug}/commit/{node}/reports/{reportId}",
    "mcp": null,
    "cli": null,
    "ui": "Pull request > Code Insights panel"
   },
   "check": "GET .../reports/{reportId} shows the report and its result",
   "capability_id": "cap_v0b4bqdj",
   "source": "https://developer.atlassian.com/cloud/bitbucket/rest/api-group-reports/",
   "result": "blocked",
   "via": "api"
  },
  {
   "id": "cap-11",
   "capability": "Register a webhook",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /2.0/repositories/{workspace}/{repo_slug}/hooks",
    "mcp": null,
    "cli": null,
    "ui": "Repository settings > Webhooks"
   },
   "check": "GET /2.0/repositories/{workspace}/{repo_slug}/hooks lists the webhook",
   "capability_id": "cap_977hxacb",
   "source": "https://developer.atlassian.com/cloud/bitbucket/rest/api-group-webhooks/",
   "result": "blocked",
   "via": "api"
  },
  {
   "id": "cap-12",
   "capability": "Link a pull request or commit to a Jira issue",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Pull request / commit message (issue key); Jira development panel"
   },
   "check": "Jira issue's development panel shows the linked commit/pull request",
   "capability_id": "cap_d2gwfh2q",
   "source": "https://www.atlassian.com/software/jira/bitbucket-integration",
   "result": "blocked",
   "via": "browser"
  },
  {
   "id": "cap-13",
   "capability": "Create an access token",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /2.0/repositories/{workspace}/{repo_slug}/access-tokens",
    "mcp": null,
    "cli": null,
    "ui": "Repository/Project/Workspace settings > Access tokens"
   },
   "check": "GET .../access-tokens lists the token (secret shown once)",
   "capability_id": "cap_wbg916v9",
   "source": "https://developer.atlassian.com/cloud/bitbucket/rest/intro/#access-tokens",
   "result": "failed",
   "via": "api"
  },
  {
   "id": "cap-14",
   "capability": "Connect a third-party integration (Pipes/Marketplace)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Pipelines step using a Pipe; Marketplace"
   },
   "check": "Pipeline run log shows the Pipe step executing",
   "capability_id": "cap_x4n6bnwy",
   "source": "https://bitbucket.org/product/features/pipelines/integrations",
   "result": "blocked",
   "via": "browser"
  },
  {
   "id": "cap-15",
   "capability": "Store large files with Git LFS",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": "git lfs push",
    "ui": "Repository settings > LFS storage"
   },
   "check": "Repository settings > LFS shows storage used increase",
   "capability_id": null,
   "unmapped": "own_feature",
   "source": "https://support.atlassian.com/bitbucket-cloud/docs/manage-large-files-with-git-large-file-storage-lfs/",
   "result": "blocked",
   "via": "browser"
  },
  {
   "id": "cap-16",
   "capability": "Create a code snippet",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /2.0/snippets/{workspace}",
    "mcp": null,
    "cli": null,
    "ui": "Workspace > Snippets > Create"
   },
   "check": "GET /2.0/snippets/{workspace}/{encoded_id} returns the snippet",
   "capability_id": null,
   "unmapped": "own_feature",
   "source": "https://developer.atlassian.com/cloud/bitbucket/rest/api-group-snippets/",
   "result": "blocked",
   "via": "api"
  },
  {
   "id": "cap-17",
   "capability": "Set branch permissions and merge checks",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /2.0/repositories/{workspace}/{repo_slug}/branch-restrictions",
    "mcp": null,
    "cli": null,
    "ui": "Repository settings > Branch restrictions"
   },
   "check": "GET .../branch-restrictions lists the restriction",
   "capability_id": null,
   "unmapped": "own_feature",
   "source": "https://developer.atlassian.com/cloud/bitbucket/rest/…/",
   "result": "blocked",
   "via": "api"
  },
  {
   "id": "cap-18",
   "capability": "Upload a file to downloads",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": "POST /2.0/repositories/{workspace}/{repo_slug}/downloads",
    "mcp": null,
    "cli": null,
    "ui": "Repository > Downloads"
   },
   "check": "GET /2.0/repositories/{workspace}/{repo_slug}/downloads lists the file",
   "capability_id": "cap_facpbh70",
   "source": "https://developer.atlassian.com/cloud/bitbucket/rest/api-group-downloads/",
   "result": "blocked",
   "via": "api"
  },
  {
   "id": "cap-19",
   "capability": "Create a workspace",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": "POST /2.0/workspaces",
    "mcp": null,
    "cli": null,
    "ui": "Create workspace"
   },
   "check": "GET /2.0/workspaces/{workspace} returns the workspace",
   "capability_id": "cap_vk1kvzkm",
   "source": "https://developer.atlassian.com/cloud/bitbucket/rest/…/",
   "result": "blocked",
   "via": "api"
  },
  {
   "id": "cap-20",
   "capability": "Invite a member to a workspace",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Workspace settings > User management > Invite"
   },
   "check": "Workspace member list shows the invited member as Pending or Active",
   "capability_id": "cap_3w8sjh12",
   "source": "https://www.atlassian.com/software/bitbucket/pricing",
   "result": "blocked",
   "via": "browser"
  },
  {
   "id": "cap-21",
   "capability": "Set a member's role or permissions",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": "PUT /2.0/workspaces/{workspace}/permissions/users/{selected_user_id}",
    "mcp": null,
    "cli": null,
    "ui": "Workspace settings > User and group access"
   },
   "check": "GET .../permissions/users/{id} shows the updated permission",
   "capability_id": "cap_bs3hvrpm",
   "source": "https://developer.atlassian.com/cloud/bitbucket/rest/…/",
   "result": "blocked",
   "via": "api"
  },
  {
   "id": "cap-22",
   "capability": "Restrict access by IP address",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Workspace settings > IP allowlist"
   },
   "check": "Workspace settings > IP allowlist shows the added CIDR range",
   "capability_id": "cap_wrzp7nnm",
   "source": "https://www.atlassian.com/software/bitbucket/pricing",
   "result": "blocked",
   "via": "browser"
  },
  {
   "id": "cap-23",
   "capability": "Read the audit log",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Workspace settings > Audit log"
   },
   "check": "Audit log lists a recent recorded action",
   "capability_id": "cap_xgs80797",
   "source": "https://www.atlassian.com/software/bitbucket/premium",
   "result": "blocked",
   "via": "browser"
  }
 ],
 "stale": false,
 "unreachable_since": null,
 "not_driven_since": null,
 "icon": "/logos/bitbucket.png",
 "agent_kinds": {
  "browser": {
   "who": "An assistant in a browser",
   "passed": [],
   "stop": "signup",
   "why": "it asks for a Google reCAPTCHA check our agent doesn't solve",
   "tone": "wall",
   "text": "Signing up needs a person: it asks for a Google reCAPTCHA check our agent doesn't solve."
  },
  "direct": {
   "who": "An agent talking to it directly",
   "passed": [],
   "stop": "signup",
   "why": "it asks for a Google reCAPTCHA check our agent doesn't solve",
   "tone": "wall",
   "text": "Signing up needs a person: it asks for a Google reCAPTCHA check our agent doesn't solve."
  }
 },
 "sdk": {
  "packages": [],
  "read_at": "2026-10-31T21:00:14Z"
 },
 "surface_reach": {
  "surfaces": {
   "mcp": true
  },
  "read_at": "2026-10-31T01:36:49Z"
 },
 "connect": {
  "mcp": {
   "url": "https://mcp.atlassian.com/v2/mcp",
   "transport": "streamable-http",
   "state": "documented",
   "sign_in": "2026-10-30"
  },
  "api": {
   "base_url": "https://api.bitbucket.org/2.0",
   "state": "documented"
  },
  "signup": {
   "url": "https://www.atlassian.com/try/cloud/signup",
   "state": "documented"
  },
  "docs": {
   "url": "https://support.atlassian.com/bitbucket-cloud/resources/",
   "state": "documented"
  }
 },
 "surface_sources": {
  "mcp": "https://mcp.atlassian.com/v2/mcp",
  "docs": "https://support.atlassian.com/bitbucket-cloud/resources/",
  "api": "https://developer.atlassian.com/cloud/bitbucket/rest/api-group-addon/",
  "cli": "https://support.atlassian.com/bitbucket-cloud/docs/push-code-to-bitbucket/",
  "openapi": "https://developer.atlassian.com/cloud/bitbucket/swagger.v3.json"
 },
 "copilot_connector": null,
 "stripe_directory": null,
 "in_stripe_directory": null,
 "stripe_projects": null,
 "pay_rails": [],
 "stop_evidence": {
  "at": "signup",
  "date": "2026-10-27",
  "line": "id.atlassian.com sign-up: after the email, a visible Google reCAPTCHA checkbox (\"Please confirm you're not a robot\"), so the agent stopped here. Google, Microsoft, Apple and Slack sign-in were not used (a person's accounts)."
 },
 "wall_vendor": {
  "vendor": "Google reCAPTCHA",
  "id": "recaptcha",
  "kind": "bot check",
  "at": "signup"
 },
 "mcp_sign_in": {
  "sign_in": true,
  "prm": false,
  "registration": "unknown",
  "device": null
 },
 "safety_issues": 0,
 "fix_counts": {
  "small": 4,
  "medium": 1,
  "large": 1,
  "total": 6
 },
 "evidence_sha256": "b087cf8c2914a9eeeefc35bea914a91c43883c19adfe01b59a3fd375aa07dbeb",
 "first_seen": "2026-10-27",
 "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": {
  "vendor": "Google reCAPTCHA",
  "at": "signup",
  "state": "seen",
  "stopped": true,
  "line": "Sign-up asked for a Google reCAPTCHA check. Our agent doesn't solve these, so it stopped."
 },
 "confirmation": {
  "state": "awaiting",
  "drives": 1,
  "agree": 1,
  "review": null,
  "text": "1 drive, awaiting confirmation"
 },
 "stop_shot": null,
 "stop_shot_hash": null,
 "attempts_count": 161,
 "detail": {
  "public": false,
  "in": [
   "report",
   "api"
  ],
  "since": "2026-10-17"
 },
 "what_it_does": "Bitbucket is a code hosting and build service.",
 "kind": "product",
 "rules_version": "rules-2026-10-30-42",
 "rules_url": "https://agentdrives.com/method/changelog#rules-2026-10-30-42",
 "category_median": null,
 "peers": {
  "API-03": {
   "basis": "all",
   "n": 88,
   "below": 0,
   "above": 53,
   "percentile": 20
  },
  "API-07": {
   "basis": "all",
   "n": 98,
   "below": 9,
   "above": 60,
   "percentile": 24
  },
  "ERR-01": {
   "basis": "all",
   "n": 128,
   "below": 2,
   "above": 0,
   "percentile": 51
  },
  "ERR-02": {
   "basis": "all",
   "n": 105,
   "below": 0,
   "above": 65,
   "percentile": 19
  },
  "ERR-03": {
   "basis": "all",
   "n": 104,
   "below": 81,
   "above": 0,
   "percentile": 89
  },
  "ERR-07": {
   "basis": "all",
   "n": 104,
   "below": 64,
   "above": 0,
   "percentile": 81
  },
  "IN-03": {
   "basis": "all",
   "n": 86,
   "below": 3,
   "above": 72,
   "percentile": 10
  },
  "IN-08": {
   "basis": "all",
   "n": 120,
   "below": 0,
   "above": 65,
   "percentile": 23
  },
  "IN-11": {
   "basis": "category",
   "n": 5,
   "below": 0,
   "above": 1
  },
  "IN-12": {
   "basis": "category",
   "n": 5,
   "below": 2,
   "above": 0
  },
  "PAY-05": {
   "basis": "all",
   "n": 119,
   "below": 0,
   "above": 34,
   "percentile": 36
  },
  "PROTO-02": {
   "basis": "category",
   "n": 5,
   "below": 0,
   "above": 0
  }
 },
 "probe": {
  "checked": "2026-11-01",
  "status": "ok",
  "sign_up_page": "page",
  "wall": "captcha:recaptcha",
  "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": "page",
   "wall": "captcha:recaptcha",
   "llms_txt": false,
   "mcp": "none",
   "openapi": false,
   "payment_402": null,
   "payment_rails": []
  },
  {
   "checked": "2026-10-31",
   "status": "ok",
   "sign_up_page": "page",
   "wall": "captcha:recaptcha",
   "llms_txt": false,
   "mcp": "none",
   "openapi": false,
   "payment_402": null,
   "payment_rails": []
  },
  {
   "checked": "2026-10-30",
   "status": "ok",
   "sign_up_page": "page",
   "wall": "captcha:recaptcha",
   "llms_txt": false,
   "mcp": "none",
   "openapi": false,
   "payment_402": null,
   "payment_rails": []
  },
  {
   "checked": "2026-10-29",
   "status": "ok",
   "sign_up_page": "page",
   "wall": "captcha:recaptcha",
   "llms_txt": false,
   "mcp": "none",
   "openapi": false,
   "payment_402": null,
   "payment_rails": []
  },
  {
   "checked": "2026-10-28",
   "status": "ok",
   "sign_up_page": "page",
   "wall": "captcha:recaptcha",
   "llms_txt": false,
   "mcp": "none",
   "openapi": false,
   "payment_402": null,
   "payment_rails": []
  }
 ],
 "surface_changes": [],
 "agent_reports": null,
 "verdict": "L1 · Needs a person. Bitbucket stopped our agent at sign-up: after the email, id.atlassian.com showed a visible Google reCAPTCHA checkbox, and our agent did not get through. Verification, the key and the API call were not reached. The docs are open to an agent: an OpenAPI spec, the REST auth methods and the official Atlassian MCP server. API tokens, access tokens and OAuth consumers are created in the web UI, so a person makes the key. Without an account, a call for the current user answered 401 and only public reads worked. Creating repositories, pull requests and pipelines needs an account, so no work was done.",
 "changes": {
  "source": "store",
  "drives": [
   {
    "run": "20261027T084500Z",
    "date": "2026-10-27",
    "level": 1,
    "stop": "signup",
    "entry": "closed",
    "driver": 5,
    "listed": true,
    "paid": false,
    "agent_paid": null
   }
  ],
  "events": [],
  "feed": "https://agentdrives.com/api/tools/bitbucket/changes.json"
 },
 "agreement": null,
 "method_release": "2026-Q4.27",
 "found": {
  "agent_blockers": 1,
  "surface_issues": 0
 },
 "agent_surfaces": {
  "api": {
   "state": "tested",
   "reachable": true,
   "documented": 300,
   "tested": 2,
   "source": "https://developer.atlassian.com/cloud/bitbucket/rest/api-group-addon/"
  },
  "mcp": {
   "state": "documented",
   "reachable": true,
   "documented": 44,
   "tested": 0,
   "source": "https://mcp.atlassian.com/v2/mcp"
  },
  "cli": {
   "state": "documented",
   "reachable": null,
   "documented": 1,
   "tested": 0,
   "source": "https://support.atlassian.com/bitbucket-cloud/docs/push-code-to-bitbucket/"
  },
  "sdk": {
   "state": "none_found",
   "documented": null,
   "tested": null,
   "source": null
  },
  "docs": {
   "state": "documented",
   "documented": 0,
   "tested": 0,
   "source": "https://support.atlassian.com/bitbucket-cloud/resources/"
  },
  "payment": {
   "state": "none_found",
   "documented": null,
   "tested": null,
   "source": null
  }
 },
 "issues_found": 1,
 "rank": null,
 "rank_of": 1,
 "rank_change": null,
 "rank_since": null,
 "links": {
  "category": [
   {
    "label": "Developer platform",
    "href": "https://agentdrives.com/categories/developer"
   },
   {
    "label": "Source control",
    "href": "https://agentdrives.com/categories/source-control"
   }
  ],
  "tasks": [],
  "walls": [
   {
    "label": "Bot checks",
    "href": "https://agentdrives.com/access/get-in/bot-checks",
    "note": "kept our agent out"
   },
   {
    "label": "Google reCAPTCHA bot check",
    "href": "https://agentdrives.com/vendors/recaptcha",
    "note": "the check, and every product we met it at"
   },
   {
    "label": "Let signed AI agents past your bot check",
    "href": "https://agentdrives.com/guides/let-signed-agents-past-your-bot-check",
    "note": "fix guide"
   }
  ],
  "vendors": [],
  "standards": [
   {
    "label": "MCP",
    "href": "https://agentdrives.com/standards/mcp",
    "note": "tools an agent can call"
   },
   {
    "label": "OpenAPI",
    "href": "https://agentdrives.com/standards/openapi",
    "note": "its API, described"
   }
  ],
  "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": "Codeberg",
    "href": "https://agentdrives.com/tools/codeberg",
    "slug": "codeberg",
    "level": 1
   },
   {
    "label": "Gitea",
    "href": "https://agentdrives.com/tools/gitea",
    "slug": "gitea",
    "level": 1
   },
   {
    "label": "GitHub",
    "href": "https://agentdrives.com/tools/github",
    "slug": "github",
    "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 code repository",
   "core": true,
   "result": "blocked",
   "surfaces": {
    "api": "blocked",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-02",
   "name": "Push commits to a repository",
   "core": true,
   "result": "blocked",
   "surfaces": {
    "api": "blocked",
    "mcp": "none",
    "cli": "untried",
    "ui": "untried"
   }
  },
  {
   "id": "cap-03",
   "name": "Open and merge a pull request",
   "core": true,
   "result": "blocked",
   "surfaces": {
    "api": "blocked",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-04",
   "name": "Review a pull request",
   "core": true,
   "result": "blocked",
   "surfaces": {
    "api": "blocked",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-05",
   "name": "Run a CI/CD pipeline",
   "core": true,
   "result": "blocked",
   "surfaces": {
    "api": "blocked",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-06",
   "name": "Publish a deployment/release",
   "core": true,
   "result": "blocked",
   "surfaces": {
    "api": "blocked",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-07",
   "name": "Create a deploy environment",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "blocked",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-08",
   "name": "Set pipeline variables and secrets",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "blocked",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-09",
   "name": "Read deploy status and history",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "blocked",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-10",
   "name": "Check code for quality/security with reports",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "blocked",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-11",
   "name": "Register a webhook",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "blocked",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-12",
   "name": "Link a pull request or commit to a Jira issue",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "blocked"
   }
  },
  {
   "id": "cap-13",
   "name": "Create an access token",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "blocked",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-14",
   "name": "Connect a third-party integration (Pipes/Marketplace)",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "blocked"
   }
  },
  {
   "id": "cap-15",
   "name": "Store large files with Git LFS",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "untried",
    "ui": "blocked"
   }
  },
  {
   "id": "cap-16",
   "name": "Create a code snippet",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "blocked",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-17",
   "name": "Set branch permissions and merge checks",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "blocked",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-18",
   "name": "Upload a file to downloads",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "blocked",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-19",
   "name": "Create a workspace",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "blocked",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-20",
   "name": "Invite a member to a workspace",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "blocked"
   }
  },
  {
   "id": "cap-21",
   "name": "Set a member's role or permissions",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "blocked",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-22",
   "name": "Restrict access by IP address",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "blocked"
   }
  },
  {
   "id": "cap-23",
   "name": "Read the audit log",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "blocked"
   }
  }
 ],
 "category_place": {
  "category": "source-control",
  "products": 5,
  "higher": 1,
  "same_level": 3,
  "as_of": "2026-10-29",
  "stop": "signup",
  "rivals_by": "stop",
  "rivals": [
   "codeberg",
   "gitea",
   "github"
  ]
 },
 "page": "https://agentdrives.com/tools/bitbucket?via=api"
}