{
 "slug": "backblaze",
 "name": "Backblaze B2",
 "url": "https://backblaze.com",
 "domain": "backblaze.com",
 "category": "file-storage",
 "category_name": "File storage",
 "tested_at": "2026-10-06",
 "run": "20261005T234801Z",
 "draft": false,
 "reviewed": true,
 "owner_verified": null,
 "origin": "editorial",
 "history": [
  {
   "run": "20261005T234801Z",
   "date": "2026-10-06",
   "level": 1,
   "engine": {
    "runner": "omp",
    "model": "claude-opus-5-5",
    "driver": 2,
    "signed": true,
    "inbox": null,
    "robots": "start"
   }
  }
 ],
 "level": 1,
 "level_name": "Needs a person",
 "level_selfhost": null,
 "entry": "setup",
 "door": {
  "passed": 0,
  "tries": 1,
  "self_start": false
 },
 "badges": [],
 "stages": [
  {
   "key": "in",
   "label": "Access",
   "state": "no",
   "text": "Needs a person to get in",
   "at": "signup"
  },
  {
   "key": "work",
   "label": "Use",
   "state": "no",
   "text": "Work done: 0% of the core"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "unreached",
   "text": "Payment not reached",
   "value": "unreached",
   "route": "card_checkout"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "yes",
   "text": "Nothing to cancel; can't delete its account",
   "at": "delete",
   "left": "stuck"
  }
 ],
 "outcomes": [
  {
   "key": "find",
   "label": "Find",
   "state": "part",
   "text": "Some docs agents can read: llms.txt and an MCP server",
   "have": [
    "llms_txt",
    "mcp"
   ]
  },
  {
   "key": "access",
   "label": "Access",
   "state": "no",
   "text": "Needs a person to get in",
   "at": "signup",
   "stage": "in"
  },
  {
   "key": "use",
   "label": "Use",
   "state": "no",
   "text": "Work done: 0% of the core",
   "stage": "work"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "unreached",
   "text": "Payment not reached",
   "value": "unreached",
   "route": "card_checkout",
   "stage": "pay"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "yes",
   "text": "Nothing to cancel; can't delete its account",
   "at": "delete",
   "left": "stuck",
   "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": "verify",
 "core": "0/9",
 "scores": {
  "coverage": 0,
  "reliability": null,
  "resilience": null,
  "setup": 75,
  "surface_coverage": null,
  "docs_accuracy": null,
  "docs_completeness": null
 },
 "parts": {
  "holds_up": null,
  "docs_match": null,
  "setup": 75,
  "security": null,
  "standards": [
   {
    "standard": "MCP",
    "state": "current",
    "behind": null,
    "value": "2026-07-28"
   },
   {
    "standard": "MCP discovery",
    "state": "current",
    "behind": null,
    "value": "ok"
   }
  ]
 },
 "reliability_method": null,
 "resilience": null,
 "stress": [],
 "surface_audit": null,
 "coverage_core": 0,
 "after_wall": null,
 "coverage_source": "computed",
 "driver": {
  "version": 2,
  "model": "claude-opus-5-5",
  "profile": "full",
  "assisted": false,
  "handoff": null,
  "prompt_sha": "59d395064c20",
  "kb_version": "2",
  "identity": null
 },
 "methodology": 15,
 "rules_date": "2026-10-15",
 "engine": {
  "runner": "omp",
  "model": "claude-opus-5-5",
  "driver": 2,
  "signed": true,
  "inbox": null,
  "robots": "start"
 },
 "same_level_drives": 1,
 "drives": 1,
 "works_assisted": null,
 "freshness": "fresh",
 "nothing_to_pay": false,
 "core_gated": false,
 "profiles": {},
 "agent_check": {
  "rung": "signup",
  "vendor": "Google reCAPTCHA v2 checkbox (on Backblaze's own 'Security Check' page; reCAPTCHA Enterprise script on the form)",
  "visible": true,
  "type": "challenge",
  "human": "human",
  "how": "Check the Web Bot Auth signature on the sign-up request and skip reCAPTCHA (or lower the score threshold) for signed agents; or offer a documented sign-up API with email verification.",
  "signed": true
 },
 "agent_pass": null,
 "who_gets_in": {
  "server": {
   "state": "captcha"
  },
  "signed": {
   "state": "check",
   "kind": "signup",
   "at": "2026-10-12"
  },
  "browser": {
   "state": "captcha",
   "measured": false
  },
  "our_key": "pending",
  "robots": null,
  "tip": false
 },
 "ladder": {
  "docs": {
   "status": "headless",
   "note": "Docs and API reference fetched headless; Accept: text/markdown returns Markdown (text/plain, vary: Accept); /llms.txt present; no OpenAPI found."
  },
  "signup": {
   "status": "human",
   "note": "Web form only; both sign-up pages show a 'Security Check' with a reCAPTCHA v2 checkbox ('Not so fast! Do you currently or have ever identified as a robot?').",
   "via": "human"
  },
  "verify": {
   "status": "blocked",
   "note": "no account: sign-up blocked by reCAPTCHA v2 interstitial"
  },
  "credentials": {
   "status": "blocked",
   "note": "Application keys come from the web console or b2_create_key, both need an account.",
   "via": ""
  },
  "first_call": {
   "status": "blocked",
   "note": "No key; no-account API calls return 400/401/403 with clear errors."
  },
  "first_action": {
   "status": "blocked",
   "note": "no account: sign-up blocked by reCAPTCHA v2 interstitial"
  },
  "pay": {
   "status": "",
   "grade": "P1",
   "rails": [
    "web console billing"
   ],
   "rail_ids": [
    "other"
   ],
   "first_party": false,
   "rail_scope": "none",
   "trial_path": "free tier",
   "note": "No 402, no x402/MPP/UCP, not in x402 Bazaar or mpp.dev. Sign-up says 'No credit card required'; paying is done in the web console of an account that only a human can create past reCAPTCHA. Checkout not observed.",
   "reached": false
  },
  "cancel": {
   "status": "n/a",
   "note": "Nothing to cancel: our agent used the free plan.",
   "docs_note": "Per docs: delete files and buckets (API possible), then clear B2 Cloud Storage under My Settings in the web console. Not tried: no account.",
   "docs_grade": "",
   "nothing": "free_plan"
  },
  "delete": {
   "status": "blocked",
   "note": "Per docs web only: My Settings > Delete Account, confirmed by a code or the password. Not tried: no account.",
   "left": "stuck",
   "account": true
  }
 },
 "routes": [],
 "checkout": null,
 "docs": null,
 "claims": null,
 "pay_options": {
  "checked": "2026-10-05",
  "source": "drive",
  "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)."
   }
  ]
 },
 "surfaces": {
  "api": true,
  "openapi": false,
  "cli": true,
  "sdk": true,
  "mcp": "official",
  "llms_txt": true,
  "webhooks": true,
  "sandbox": false
 },
 "surface_notes": {
  "api": "B2 Native API + S3-compatible API, key auth",
  "openapi": "none found",
  "mcp": "official stdio, 40 tools (21 b2_*, 19 s3_*)",
  "llms_txt": "/llms.txt, 58 lines"
 },
 "can_do": [
  "Read the Backblaze docs headless as Markdown (Accept: text/markdown)",
  "Run the official B2 MCP server and list its 40 tools without an account"
 ],
 "cannot_do": [
  {
   "what": "Create a Backblaze account",
   "why": "reCAPTCHA v2 interstitial on the sign-up pages"
  },
  {
   "what": "Get an application key or call any B2 API, CLI or MCP tool",
   "why": "needs an account"
  },
  {
   "what": "Pay with an agent rail",
   "why": "no 402/x402/MPP; billing only in the web console"
  },
  {
   "what": "Delete the account headless",
   "why": "web console only, per the docs"
  }
 ],
 "blockers": [
  "reCAPTCHA v2 'Security Check' interstitial on /sign-up/cloud-storage and /sign-up/personal-backup"
 ],
 "tips_for_owner": [
  "Let signed agents reach the sign-up form",
  "Add a programmatic sign-up path",
  "Publish an OpenAPI spec for the Native API",
  "Serve Markdown docs as text/markdown"
 ],
 "tips_for_agents": [
  "Use the official MCP server: npx -y @backblaze-labs/b2-mcp (MCP 2026-07-28, stdio).",
  "A human must create the account and an application key (web console > App Keys); after that B2 is reachable by API, the b2 CLI, S3 or MCP.",
  "Fetch docs as Markdown with Accept: text/markdown."
 ],
 "selfhost": null,
 "summary": "An agent cannot open a Backblaze account: both sign-up pages show a reCAPTCHA v2 'Security Check' to our agent's browser, so we drove no capability. Without an account the agent side looks good: Markdown docs, llms.txt, and an official MCP server that speaks MCP (the 28 Jul 2026 spec) with 40 tools. Cancel and delete are web-console only, per the docs.",
 "wall": "reCAPTCHA interstitial on the sign-up page",
 "plan_scope": "none (no free access)",
 "robots_stop": null,
 "robots": null,
 "plain": {
  "summary": "Backblaze sells cloud file storage and computer backup. An agent could read the docs and inspect the official MCP tool list without an account, but every sign-up page showed a 'prove you are not a robot' check that no automated signing-in could pass to do it instead. So nothing past that point (uploading, downloading, paying, or deleting) could be tried.",
  "can_do": [
   "Read Backblaze's documentation and get it as plain readable text automatically",
   "See the full list of tools the official assistant-connector offers, without signing in"
  ],
  "cannot_do": [
   {
    "what": "Create a Backblaze account",
    "why": "a 'security check' box appears instead of the sign-up form"
   },
   {
    "what": "Get a storage key or use any storage feature",
    "why": "every feature needs an account first"
   },
   {
    "what": "Pay for the service as an automated agent",
    "why": "there is no automatic payment option; billing happens on the website after signing in"
   },
   {
    "what": "Cancel or delete an account automatically",
    "why": "the instructions show this must be done by a person on the website"
   }
  ]
 },
 "plan_gated": [
  {
   "capability": "B2 Overdrive",
   "plan": "sales-provisioned",
   "evidence": "https://www.backblaze.com/cloud-storage/b2-overdrive (Contact Sales)"
  }
 ],
 "reply": null,
 "capabilities": [
  {
   "id": "cap-01",
   "group": "Object Storage",
   "capability": "Create and manage a storage bucket",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "PUT /b2api/v2/b2_create_bucket (Native) / CreateBucket (S3)",
    "mcp": null,
    "cli": "b2 bucket create",
    "ui": "B2 Cloud Storage web console > Buckets"
   },
   "check": "GET /b2api/v2/b2_list_buckets shows the new bucket name/id",
   "source": "https://www.backblaze.com/docs/cloud-storage-get-started-with-the-ui; https://www.backblaze.com/docs/cloud-storage-command-line-tools"
  },
  {
   "id": "cap-02",
   "group": "Object Storage",
   "capability": "Upload a file/object to a bucket",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST b2_upload_file (Native) / PutObject (S3)",
    "mcp": null,
    "cli": "b2 file upload",
    "ui": "web console bucket view > Upload"
   },
   "check": "GET /b2api/v2/b2_list_file_names (or S3 ListObjectsV2) shows the uploaded file name/size",
   "source": "https://www.backblaze.com/docs/cloud-storage-about-backblaze-b2-cloud-storage; https://www.backblaze.com/docs/cloud-storage-s3-compatible-api"
  },
  {
   "id": "cap-03",
   "group": "Object Storage",
   "capability": "Download a file/object",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "GET b2_download_file_by_name / GetObject (S3)",
    "mcp": null,
    "cli": "b2 file download",
    "ui": "web console file view > Download"
   },
   "check": "Downloaded bytes match uploaded file's SHA1/checksum",
   "source": "https://www.backblaze.com/docs/cloud-storage-about-backblaze-b2-cloud-storage"
  },
  {
   "id": "cap-04",
   "group": "Object Storage",
   "capability": "Delete a file/object (and bucket)",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST b2_delete_file_version / DeleteObject (S3)",
    "mcp": null,
    "cli": "b2 file delete / b2 bucket delete",
    "ui": "web console file/bucket view > Delete"
   },
   "check": "Subsequent list call no longer returns the file/bucket (unless Object Lock prevents deletion)",
   "source": "https://www.backblaze.com/docs/cloud-storage-about-backblaze-b2-cloud-storage"
  },
  {
   "id": "cap-05",
   "group": "Object Storage",
   "capability": "Use S3-compatible API with existing S3 tools/SDKs",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "S3-Compatible API (full endpoint, AWS SigV4)",
    "mcp": null,
    "cli": "aws s3 / s3cmd configured against Backblaze endpoint",
    "ui": null
   },
   "check": "aws s3 ls --endpoint-url <b2 endpoint> lists the account's buckets",
   "source": "https://www.backblaze.com/docs/cloud-storage-s3-compatible-api"
  },
  {
   "id": "cap-06",
   "group": "Object Storage",
   "capability": "Store and serve AI/ML training datasets and model files at scale",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "S3-Compatible / Native API (same upload/list/get)",
    "mcp": null,
    "cli": "b2 CLI",
    "ui": "web console"
   },
   "check": "Large dataset objects list/download successfully from the bucket used by an AI pipeline",
   "source": "https://www.backblaze.com/cloud-storage; https://www.backblaze.com/docs/cloud-storage-ai-machine-learning"
  },
  {
   "id": "cap-07",
   "group": "Object Storage",
   "capability": "Provision high-throughput B2 Overdrive storage for performance-critical workloads",
   "weight": "core",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Contact Sales / dedicated vault provisioning"
   },
   "check": "Account shows a provisioned B2 Overdrive vault with contracted throughput tier",
   "source": "https://www.backblaze.com/cloud-storage/b2-overdrive; https://www.backblaze.com/cloud-storage/pricing"
  },
  {
   "id": "cap-08",
   "group": "Computer Backup",
   "capability": "Automatically back up a computer's files (continuous, unlimited data)",
   "weight": "core",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Backblaze desktop client (Mac/Windows)"
   },
   "check": "Backblaze client status screen shows 'last backup completed' with current timestamp",
   "source": "https://www.backblaze.com/computer-backup/docs/about-backblaze-computer-backup; https://www.backblaze.com/cloud-backup/pricing"
  },
  {
   "id": "cap-09",
   "group": "Computer Backup",
   "capability": "Restore backed-up data (full or selected files)",
   "weight": "core",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "secure.backblaze.com restore / dedicated restore app"
   },
   "check": "Restore ZIP/USB order appears in account's restore history with downloadable link",
   "source": "https://www.backblaze.com/computer-backup/docs/restore-your-data; https://www.backblaze.com/cloud-backup/pricing"
  },
  {
   "id": "cap-10",
   "group": "Computer Backup",
   "capability": "Recover previous file versions (version history)",
   "weight": "core",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "web restore UI > file version picker"
   },
   "check": "Restore UI lists multiple historical versions of a changed file with distinct timestamps",
   "source": "https://www.backblaze.com/cloud-backup/features/extended-version-history"
  },
  {
   "id": "cap-11",
   "group": "Object Storage Security",
   "capability": "Lock objects against deletion/change (Object Lock / WORM)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "S3-Compatible Object Lock headers / Native API",
    "mcp": null,
    "cli": "b2 CLI object-lock flags",
    "ui": "bucket settings > Object Lock"
   },
   "check": "DeleteObject on a locked object returns an AccessDenied/object-lock error before retention expiry",
   "source": "https://www.backblaze.com/cloud-storage/solutions/object-lock; https://www.backblaze.com/docs/cloud-storage-enable-object-lock-with-the-s3-compatible-api"
  },
  {
   "id": "cap-12",
   "group": "Object Storage",
   "capability": "Encrypt objects at rest (server-side encryption, SSE-B2/SSE-C)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "S3-Compatible SSE headers / Native API",
    "mcp": null,
    "cli": null,
    "ui": "bucket encryption settings"
   },
   "check": "GetObject response headers show x-amz-server-side-encryption for the uploaded object",
   "source": "https://www.backblaze.com/docs/cloud-storage-about-backblaze-b2-cloud-storage; https://www.backblaze.com/cloud-storage/security"
  },
  {
   "id": "cap-13",
   "group": "Object Storage",
   "capability": "Create and scope application (API) keys",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST b2_create_key (Native API only)",
    "mcp": null,
    "cli": "b2 key create",
    "ui": "web console > App Keys"
   },
   "check": "New key appears in b2_list_keys with the configured bucket/permission restrictions",
   "source": "https://www.backblaze.com/docs/cloud-storage-about-backblaze-b2-cloud-storage"
  },
  {
   "id": "cap-14",
   "group": "Object Storage",
   "capability": "Set lifecycle rules to auto-delete/expire file versions",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "Native API bucket lifecycle rules",
    "mcp": null,
    "cli": "b2 bucket update --lifecycleRule",
    "ui": "bucket settings > Lifecycle Settings"
   },
   "check": "Bucket settings show configured lifecycle rule; old file version disappears after the configured retention window",
   "source": "https://www.backblaze.com/docs/cloud-storage-about-backblaze-b2-cloud-storage"
  },
  {
   "id": "cap-15",
   "group": "Object Storage",
   "capability": "Replicate bucket data across regions/accounts (Cloud Replication)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "Native API replication configuration",
    "mcp": null,
    "cli": null,
    "ui": "bucket settings > Replication"
   },
   "check": "Destination bucket receives a copy of an object written to the source bucket, visible via list call",
   "source": "https://www.backblaze.com/cloud-storage/features/replication"
  },
  {
   "id": "cap-16",
   "group": "Object Storage",
   "capability": "Receive event notifications on bucket/object changes (webhooks)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "Native API event notification rules",
    "mcp": null,
    "cli": null,
    "ui": "bucket settings > Event Notifications"
   },
   "check": "Configured webhook endpoint receives a POST payload after an object is uploaded/deleted",
   "source": "https://www.backblaze.com/cloud-storage/features/event-notifications"
  },
  {
   "id": "cap-17",
   "group": "Object Storage",
   "capability": "Migrate existing data from another cloud/NAS/tape (Universal Data Migration)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "assisted migration service via Sales"
   },
   "check": "Migrated source dataset appears fully present in the destination B2 bucket, verified by object count/checksum",
   "source": "https://www.backblaze.com/cloud-storage/solutions/cloud-migration; https://www.backblaze.com/cloud-storage/pricing"
  },
  {
   "id": "cap-18",
   "group": "Object Storage",
   "capability": "Enable CORS for browser-based access to a bucket",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "Native API CORS rules / S3 PutBucketCors",
    "mcp": null,
    "cli": "b2 bucket update --corsRules",
    "ui": "bucket settings > CORS Rules"
   },
   "check": "OPTIONS preflight request to the bucket endpoint from the allowed origin returns the configured Access-Control-* headers",
   "source": "https://www.backblaze.com/docs/cloud-storage-enable-cors-with-the-s3-compatible-api"
  },
  {
   "id": "cap-19",
   "group": "Object Storage",
   "capability": "View bucket access logs",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "bucket settings > Access Logging"
   },
   "check": "Log bucket receives log objects recording requests made to the monitored bucket",
   "source": "https://www.backblaze.com/cloud-storage"
  },
  {
   "id": "cap-20",
   "group": "Object Storage",
   "capability": "White-label/resell storage to end customers (Powered by Backblaze)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "Partner API",
    "mcp": null,
    "cli": null,
    "ui": "Powered by Backblaze partner console"
   },
   "check": "Partner console shows a sub-account created and billed under the reseller's account",
   "source": "https://www.backblaze.com/cloud-storage/poweredbybackblaze"
  },
  {
   "id": "cap-21",
   "group": "Computer Backup",
   "capability": "Back up connected external USB/removable drives",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Backblaze desktop client settings"
   },
   "check": "Client backup status/UI lists the external drive as an included backup source with files uploaded",
   "source": "https://www.backblaze.com/docs/cloud-storage-about-backblaze-b2-cloud-storage"
  },
  {
   "id": "cap-22",
   "group": "Computer Backup",
   "capability": "Access and restore files from a mobile app",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Backblaze mobile app"
   },
   "check": "Mobile app file browser lists and previews a backed-up file from the account",
   "source": "https://www.backblaze.com/computer-backup/docs/get-started"
  },
  {
   "id": "cap-23",
   "group": "Computer Backup Administration",
   "capability": "Manage multiple computers/users under one business group",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Group Management web console"
   },
   "check": "Group admin console lists multiple computer licenses with individual backup status",
   "source": "https://www.backblaze.com/cloud-backup/pricing; https://www.backblaze.com/computer-backup/docs/account-management-administration"
  },
  {
   "id": "cap-24",
   "group": "Computer Backup Administration",
   "capability": "Deploy backup client silently at scale (MSI/JAMF/Munki)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": "msiexec / jamf / munki install scripts",
    "ui": null
   },
   "check": "New computer appears in the group admin console automatically after silent install completes",
   "source": "https://www.backblaze.com/cloud-backup/pricing"
  },
  {
   "id": "cap-25",
   "group": "Computer Backup Administration",
   "capability": "Enforce backup lockdown policy on managed computers",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Group admin console > backup lockdown settings"
   },
   "check": "A locked-down client blocks the end user from changing excluded folders/pausing backup",
   "source": "https://www.backblaze.com/cloud-backup/pricing"
  },
  {
   "id": "cap-26",
   "group": "Computer Backup Administration",
   "capability": "Restrict which users can perform data restores",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Enterprise Control admin console"
   },
   "check": "A restricted end user attempting a self-restore is denied while an authorized admin can restore the same data",
   "source": "https://www.backblaze.com/cloud-backup/pricing"
  },
  {
   "id": "cap-27",
   "group": "Developer Tooling",
   "capability": "Generate pre-signed URLs for temporary upload/download access",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "S3-Compatible pre-signed URL generation (AWS CLI/SDKs)",
    "mcp": null,
    "cli": "aws s3 presign",
    "ui": null
   },
   "check": "The pre-signed URL successfully downloads/uploads the object without separate auth, and fails after expiry",
   "source": "https://www.backblaze.com/docs/cloud-storage-s3-compatible-api"
  },
  {
   "id": "cap-28",
   "group": "Account Admin",
   "capability": "Single sign-on for account/group members (Google, Microsoft, OIDC/Okta/Azure AD)",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Group admin console > SSO settings"
   },
   "check": "A group member can sign in via the configured SSO provider instead of a Backblaze password",
   "source": "https://www.backblaze.com/cloud-backup/pricing"
  },
  {
   "id": "cap-29",
   "group": "Account Admin",
   "capability": "Centralized/flexible billing across users or buckets",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "account billing settings"
   },
   "check": "Account billing page shows one consolidated invoice covering multiple group members/computers",
   "source": "https://www.backblaze.com/cloud-backup/pricing"
  },
  {
   "id": "cap-30",
   "group": "Compliance/Admin",
   "capability": "Obtain a signed Business Associate Agreement (BAA) for HIPAA compliance",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Trust Center / Sales request"
   },
   "check": "Trust Center compliance page lists a HIPAA BAA as available/signed for the account",
   "source": "https://www.backblaze.com/company/trust-center; https://www.backblaze.com/cloud-storage"
  }
 ],
 "attempts": [
  {
   "t": "02:05",
   "cap": "discovery",
   "route": "api",
   "documented": true,
   "verified": true,
   "capability": "llms.txt",
   "task": "GET /llms.txt",
   "result": "done",
   "evidence": "https://www.backblaze.com/llms.txt 200 text/plain, 58 lines, H1 '# www.backblaze.com', links docs index; /docs/llms.txt 404"
  },
  {
   "t": "02:05",
   "cap": "discovery",
   "route": "api",
   "documented": true,
   "verified": true,
   "capability": "markdown docs",
   "task": "GET docs page with Accept: text/markdown and .md URL",
   "result": "done",
   "evidence": "/docs/cloud-storage-native-api with Accept: text/markdown -> 200 content-type text/plain; charset=utf-8, vary: Accept, body is Markdown with YAML frontmatter; .md URL -> 404",
   "notes": "markdown negotiation works but content-type is text/plain, not text/markdown"
  },
  {
   "t": "02:05",
   "cap": "discovery",
   "route": "api",
   "documented": true,
   "verified": true,
   "capability": "well-known cards",
   "task": "ai-catalog, agent-card, agent.json, mcp server-card, ucp, oauth-authorization-server on www.backblaze.com",
   "result": "failed",
   "evidence": "all 404 text/html 'Invalid .well-known request'; /auth.md and /SKILL.md 404 html; api.backblazeb2.com/.well-known/oauth-protected-resource 404 JSON {code: not_found}"
  },
  {
   "t": "02:05",
   "cap": "discovery",
   "route": "api",
   "documented": true,
   "verified": true,
   "capability": "robots/aipref",
   "task": "robots.txt Content-Usage / Content-signal",
   "result": "done",
   "evidence": "robots.txt 200: User-agent: * with Disallow lines only (/api/install_backblaze, /win32/, ...); no Content-Usage or Content-signal lines; no Content-Usage header seen"
  },
  {
   "t": "02:05",
   "cap": "discovery",
   "route": "api",
   "documented": true,
   "verified": true,
   "capability": "MCP server",
   "task": "find MCP server",
   "result": "done",
   "evidence": "docs page cloud-storage-connect-ai-clients-to-cloud-storage-operations-using-b2-mcp-server (updated 2026-09-24): official @backblaze-labs/b2-mcp, stdio local, 40 tools (17 native, 19 s3, 4 analytics); customer-hosted HTTP optional. No vendor-hosted MCP endpoint (mcp.backblaze.com no DNS, www.backblaze.com/mcp 404)"
  },
  {
   "t": "02:05",
   "cap": "discovery",
   "route": "api",
   "documented": true,
   "verified": true,
   "capability": "OpenAPI",
   "task": "find OpenAPI spec",
   "result": "failed",
   "evidence": "www.backblaze.com/openapi.json 404; apidocs pages (/apidocs/introduction-to-the-b2-native-api) contain no openapi/swagger reference"
  },
  {
   "t": "02:05",
   "cap": "docs",
   "capability": "docs",
   "task": "read API docs headless",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "apidocs + docs pages fetched headless 200, markdown via Accept header"
  },
  {
   "t": "02:05",
   "cap": "signup",
   "capability": "sign up",
   "task": "sign up in browser",
   "route": "browser",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Do you currently or have ever identified as a robot?' with visible reCAPTCHA v2 checkbox (shot 002.png); signed agent not let through"
  },
  {
   "t": "03:41",
   "cap": "signup",
   "capability": "sign up",
   "task": "human handoff for reCAPTCHA v2 on Security Check page",
   "route": "browser",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": ""
  },
  {
   "t": "03:41",
   "cap": "discovery",
   "capability": "MCP protocol",
   "task": "server/discover on official stdio server @backblaze-labs/b2-mcp 0.2.2 (installed in run dir)",
   "route": "mcp",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "server/discover -> supportedVersions ['2026-07-28'], serverInfo backblaze-b2 0.2.2; tools/list (stateless, _meta) -> 40 tools incl. b2_create_bucket, s3_put_object, s3_get_presigned_url, b2_create_key, b2_reserve_trial_create_account (Partner API, partner master key). Legacy initialize also works, answers protocolVersion 2025-11-25"
  },
  {
   "t": "03:41",
   "cap": "credentials",
   "capability": "API credentials",
   "task": "get a B2 application key",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "keys are created in the web console (App Keys) or via b2_create_key, both need an existing account; account creation blocked by reCAPTCHA; MCP b2_list_buckets without creds -> isError 'B2 Error [missing_credentials] (HTTP 401): ... Set B2_APPLICATION_KEY_ID and B2_APPLICATION_KEY'",
   "quality": {
    "error_legibility": "clear"
   }
  },
  {
   "t": "03:41",
   "cap": "first_call",
   "capability": "first API call",
   "task": "unauthenticated calls to see error shape",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "GET api.backblazeb2.com/b2api/v3/b2_authorize_account -> 401 JSON {code: bad_auth_token}; b2api/v4/b2_list_buckets -> 400 {code: bad_request, message: 'required field accountId is missing'}; S3 s3.us-west-004 -> 403 XML AccessDenied 'Unauthenticated requests are not allowed for this api'. No public/no-account API",
   "quality": {
    "error_legibility": "clear"
   }
  },
  {
   "t": "03:41",
   "cap": "pay",
   "capability": "pay",
   "task": "probe agent payment rails",
   "route": "api",
   "documented": true,
   "result": "failed",
   "verified": true,
   "evidence": "no 402 on API paths (400/401/403 instead), x402./mpp./agents.backblaze.com no DNS, /.well-known/ucp 404, no Backblaze in x402 Bazaar or mpp.dev/api/services; pricing page: pay-as-you-go $6.95/TB (hero) and $5/TB (FAQ text), sign-up says 'No credit card required'; billing is in the web console of an account"
  },
  {
   "t": "03:41",
   "cap": "cancel",
   "capability": "cancel",
   "task": "read cancel route",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "docs cloud-storage-delete-or-cancel-a-backblaze-b2-account: delete files/buckets (API possible), then web console My Settings > clear 'B2 Cloud Storage'; no account to cancel"
  },
  {
   "t": "03:41",
   "cap": "delete",
   "capability": "delete account",
   "task": "read delete route",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "docs cancel-or-delete-a-backblaze-account: web console My Settings > Delete Account, confirm by code/password; web only; no account created"
  },
  {
   "t": "03:41",
   "cap": "cap-01",
   "capability": "Create and manage a storage bucket",
   "task": "Create and manage a storage bucket via MCP/Native API",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "MCP tool exists but returns missing_credentials"
  },
  {
   "t": "03:41",
   "cap": "cap-02",
   "capability": "Upload a file",
   "task": "Upload a file via MCP/Native API",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "MCP tool exists but returns missing_credentials"
  },
  {
   "t": "03:41",
   "cap": "cap-03",
   "capability": "Download a file",
   "task": "Download a file via MCP/Native API",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "MCP tool exists but returns missing_credentials"
  },
  {
   "t": "03:41",
   "cap": "cap-04",
   "capability": "Delete file and bucket",
   "task": "Delete file and bucket via MCP/Native API",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "MCP tool exists but returns missing_credentials"
  },
  {
   "t": "03:41",
   "cap": "cap-05",
   "capability": "S3-compatible API",
   "task": "S3-compatible API via MCP/Native API",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "MCP tool exists but returns missing_credentials"
  },
  {
   "t": "03:41",
   "cap": "cap-06",
   "capability": "AI/ML datasets",
   "task": "AI/ML datasets via MCP/Native API",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "MCP tool exists but returns missing_credentials"
  },
  {
   "t": "03:41",
   "cap": "cap-07",
   "capability": "B2 Overdrive",
   "task": "provision Overdrive",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "capability map: Contact Sales / dedicated provisioning; https://www.backblaze.com/cloud-storage/b2-overdrive"
  },
  {
   "t": "03:41",
   "cap": "cap-08",
   "capability": "Computer backup",
   "task": "Computer backup",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Computer Backup: desktop client (Mac/Windows) and web restore UI only, no API/CLI in docs; needs an account, which is blocked by reCAPTCHA"
  },
  {
   "t": "03:41",
   "cap": "cap-09",
   "capability": "Restore backed-up data",
   "task": "Restore backed-up data",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Computer Backup: desktop client (Mac/Windows) and web restore UI only, no API/CLI in docs; needs an account, which is blocked by reCAPTCHA"
  },
  {
   "t": "03:41",
   "cap": "cap-10",
   "capability": "Version history",
   "task": "Version history",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Computer Backup: desktop client (Mac/Windows) and web restore UI only, no API/CLI in docs; needs an account, which is blocked by reCAPTCHA"
  },
  {
   "t": "04:05",
   "cap": "signup",
   "capability": "sign up",
   "task": "Computer Backup sign-up page in browser",
   "route": "browser",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Do you currently or have ever identified as a robot?' reCAPTCHA v2 checkbox (shot 003.png) on first load"
  }
 ],
 "stale": false,
 "icon": "/logos/backblaze.png",
 "monitored": false,
 "verdict": "Needs a person stops this one before it starts: both sign-up pages show a Google reCAPTCHA v2 checkbox on Backblaze's own Security Check page, so our agent never got past the form to verify, get a key, or make a call. Pay and cancel never came up either: our agent had no account to check out from or close. What works well sits past that wall: Markdown docs, an llms.txt file, and an official MCP server with a wide set of tools, all ready once a person signs up, verifies, and makes the key by hand. Deleting the account, per the docs, is a web-console step only.",
 "page": "https://agentdrives.com/tools/backblaze?via=api"
}