{
  "data": {
    "a": {
      "slug": "cloudflare-r2",
      "name": "Cloudflare R2",
      "vendor": "Cloudflare",
      "vendorUrl": "https://developers.cloudflare.com/r2/",
      "kind": "http-api",
      "category": "file-storage",
      "summary": "S3-compatible object storage with no egress fees.",
      "url": "https://www.anchorterminal.com/tools/cloudflare-r2",
      "markdownUrl": "https://www.anchorterminal.com/tools/cloudflare-r2.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/cloudflare-r2.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/cloudflare-r2.json",
      "dns": "cloudflare-r2.grade.anchorterminal.com",
      "repo": "https://github.com/cloudflare/workers-sdk",
      "license": "Apache-2.0 or MIT (wrangler)",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://\u003caccount-id\u003e.r2.cloudflarestorage.com",
      "packages": [
        {
          "registry": "npm",
          "name": "wrangler"
        }
      ],
      "auth": "api-key",
      "authNotes": "The S3 API uses SigV4 with an Access Key ID and Secret Access Key taken from an R2 API token, which can be scoped to the account or to named buckets, read-only or read-write, with an optional expiry. Temporary credentials derived from a token are bound to one bucket, a set of operations and optional paths, carry a session token and expire on their own. Workers reach a bucket through a binding with no credentials. Wrangler and the REST API use a Cloudflare API token. The region is `auto` (an empty value or `us-east-1` also works).",
      "pricing": "freemium",
      "pricingNotes": "Free every month on Standard storage, 10 GB-month, 1 million Class A operations (writes and lists) and 10 million Class B (reads), once an R2 subscription is added through a dashboard checkout (Cloudflare requires a payment method to purchase products). Egress is free in every class. Beyond the free tier Standard is $0.015 a GB-month, $4.50 a million Class A and $0.36 a million Class B. Infrequent Access is $0.01 a GB-month, $9 and $0.90 a million operations, $0.01 a GB on retrieval and a 30-day minimum. The first 100,000 buckets an account are included and each bucket above that costs $0.10 a month (from 30 October 2026). Usage rounds up to the next billing unit, deletes are free. Requests refused at authentication or authorisation aren't charged, but a PutObject that fails a precondition (412) or a Content-MD5 check (400) counts as a Class A operation. Data Access Logs move to Cloudflare Observability pricing on 1 December 2026 (https://developers.cloudflare.com/r2/pricing/).",
      "priceSummary": "$0.0045 / 1k req",
      "where": "hosted",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 4500,
        "npmWeekly": 27029360,
        "pypiWeekly": null,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://developers.cloudflare.com/r2/",
      "llmsTxt": "https://developers.cloudflare.com/llms.txt",
      "openapi": "https://github.com/cloudflare/api-schemas",
      "capabilities": [
        "storage.object",
        "storage.s3",
        "storage.presigned",
        "storage.share"
      ],
      "tags": [
        "hosted",
        "closed-source",
        "s3-compatible",
        "freemium",
        "free-tier",
        "llms-txt",
        "mcp",
        "eu",
        "typescript"
      ],
      "lastRelease": "2026-10-09",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 77.5,
        "grade": "BB",
        "agentReady": true,
        "rank": 28,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 2,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 90,
          "maintenance": 87,
          "payments": 20,
          "reliability": 82,
          "schema": 92,
          "security": 85,
          "transparency": 75
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-01"
        },
        "negative": 0,
        "verdict": "Free egress and a monthly free tier of 10 GB-month plus 1 million writes, though enabling R2 needs a checkout with a payment method on the account. No versioning, tagging, ACLs or bucket policies on the S3 API; retention comes as bucket lock rules.",
        "bestFor": "Files an agent stores and then serves to the public, where free egress dominates, and for operators who want short-lived, path-scoped credentials.",
        "strengths": [
          "Free egress and a free tier of 10 GB-month plus 1 million writes a month",
          "Temporary credentials bound to a bucket, operations and paths that expire on their own",
          "An error table of 29 codes, each with an HTTP status and a recommended fix",
          "Data Access Logs for object operations, audit logs for bucket configuration, and ISO 27001:2022 certification for the Cloudflare platform",
          "99.9 per cent SLA, dated changelog, llms.txt and EU, FedRAMP and US jurisdictions"
        ],
        "weaknesses": [
          "No versioning, tagging, ACLs or bucket policies on the S3 API; retention comes as bucket lock rules",
          "Presigned URLs don't work on custom domains and can't do POST form uploads",
          "One write a second to the same object key, with a 429 above that",
          "Five R2-listed incidents from 21 to 29 October 2026, each minor or under an hour, the longest under two hours of Eastern Europe latency",
          "Enabling R2, free tier included, goes through a dashboard checkout, and Cloudflare requires a payment method to purchase products"
        ],
        "agentNotes": [
          "Set region to `auto` and the endpoint to https://\u003caccount-id\u003e.r2.cloudflarestorage.com. `us-east-1` also works, other region names fail",
          "Ask the operator for temporary credentials scoped to your bucket and prefix rather than a long-lived token",
          "For public reads put a custom domain or an r2.dev subdomain on the bucket; presigned URLs only sign the S3 hostname",
          "On 429 TooManyRequests check for concurrent writes to one key; R2 allows one write a second per key",
          "Send If-None-Match with * on PutObject so a retried upload can't overwrite someone else's object; a 412 on retry means the first write landed, and the 412 is billed as a Class A operation"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 8,
        "avgRating": 3.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 77.5
          }
        ],
        "editorialScores": {
          "ergonomics": 90,
          "maintenance": 87,
          "payments": 20,
          "reliability": 82,
          "schema": 92,
          "security": 85,
          "transparency": 68
        },
        "provenanceScore": 81,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-01",
            "maintenance": "2026-11-01",
            "payments": "2026-11-01",
            "reliability": "2026-11-01",
            "schema": "2026-11-01",
            "security": "2026-11-01",
            "transparency": "2026-11-01"
          },
          "last": "2026-11-01",
          "lastMoved": "2026-10-28",
          "oldest": "2026-11-01",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "AWS_ACCESS_KEY_ID=$R2_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY=$R2_SECRET_ACCESS_KEY \\\n  aws s3 cp ./hello.txt s3://my-bucket/hello.txt \\\n  --endpoint-url \"https://$CF_ACCOUNT_ID.r2.cloudflarestorage.com\" --region auto",
        "claudeCode": "claude mcp add --transport http cloudflare-api https://mcp.cloudflare.com/mcp"
      },
      "letme": {
        "capability": "https://letme.dev/storage.object",
        "tool": "https://letme.dev/cloudflare-r2"
      },
      "sameCompany": [
        "cloudflare-ai-gateway",
        "cloudflare-workers-ai",
        "cloudflare-sandbox-sdk",
        "cloudflare-workers-oauth-provider",
        "cloudflare-web-search",
        "cloudflare-clairic",
        "cloudflare-ai-search",
        "cloudflare-cli",
        "cloudflare-mcp",
        "cloudflare-email-service",
        "cloudflare-clef"
      ],
      "area": "everyday",
      "unitPrices": [
        {
          "item": "Standard storage",
          "unit": "gb-month",
          "usd": 0.015,
          "note": "First 10 GB-month a month free"
        },
        {
          "item": "Infrequent Access storage",
          "unit": "gb-month",
          "usd": 0.01,
          "note": "30-day minimum, $0.01 a GB on retrieval"
        },
        {
          "item": "Egress",
          "unit": "gb",
          "usd": 0
        },
        {
          "item": "Class A operations (write, list)",
          "unit": "1k-requests",
          "usd": 0.0045,
          "note": "$4.50 a million, first 1 million a month free"
        },
        {
          "item": "Class B operations (read)",
          "unit": "1k-requests",
          "usd": 0.00036,
          "note": "$0.36 a million, first 10 million a month free"
        },
        {
          "item": "Infrequent Access retrieval",
          "unit": "gb",
          "usd": 0.01
        }
      ],
      "provenance": {
        "legalEntity": "Cloudflare, Inc.",
        "domain": "cloudflare.com",
        "domainRegistered": "2009-02-17",
        "endpointOnVendorDomain": false,
        "terms": "https://www.cloudflare.com/terms/",
        "privacy": "https://www.cloudflare.com/privacypolicy/",
        "statusPage": "https://www.cloudflarestatus.com",
        "changelog": "https://developers.cloudflare.com/changelog/product/r2/",
        "securityTxt": "valid",
        "checked": "2026-11-01",
        "notes": [
          "The S3 endpoint sits on r2.cloudflarestorage.com, a separate domain from cloudflare.com.",
          "www.cloudflare.com/.well-known/security.txt points at HackerOne and the disclosure policy but has no Expires field, re-read on 1 November 2026.",
          "Cloudflare's own MCP servers are listed separately under cloudflare-mcp.",
          "The R2 release-notes page (https://developers.cloudflare.com/r2/platform/release-notes/, redirected from /r2/reference/changelog/) stops at 27 April 2026; the R2 product changelog carries R2's entries since (24 July, 17 August, 4 September, 24 September and 9 October 2026), the release-notes page per the 17 October check, the changelog entries re-read in the docs source on 1 November 2026.",
          "The changelog URL moved from /changelog/?product=r2, which serves every product's entries to a reader without scripts, to /changelog/product/r2/, which is filtered to R2.",
          "Terms are the Self-Serve Subscription Agreement, last updated 12 September 2025, with Cloudflare, Inc.; the privacy policy is effective from 4 November 2025, both re-read on 1 November 2026."
        ],
        "score": 81
      },
      "requirements": {
        "setupChecked": true,
        "complianceChecked": true,
        "card": "yes",
        "freeTier": true,
        "minutes": 8,
        "credential": "api-key",
        "hosting": [
          "global",
          "EU",
          "US"
        ],
        "euResidency": "yes",
        "trainsOnData": "unknown",
        "zeroRetention": "unknown",
        "certifications": [
          "ISO 27001",
          "ISO 27701",
          "SOC 2 Type II",
          "PCI DSS"
        ],
        "selfHost": "no"
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/cloudflare-r2.json",
      "live": {
        "slug": "cloudflare-r2",
        "probe": {
          "target": "https://\u003caccount-id\u003e.r2.cloudflarestorage.com",
          "method": "get",
          "lastAt": "2026-11-07T19:22:00.132450564Z",
          "lastOk": false,
          "lastStatus": 0,
          "lastMs": 0,
          "lastNote": "DNS lookup failed",
          "authRequired": false,
          "uptime24h": 0,
          "uptime30d": 0,
          "p50ms24h": 0,
          "p95ms24h": 0,
          "samples24h": 238,
          "samples30d": 7920,
          "days": [
            {
              "date": "2026-10-07",
              "probes": 272,
              "ok": 0
            },
            {
              "date": "2026-10-08",
              "probes": 268,
              "ok": 0
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 0
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 0
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 0
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 0
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 0
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 0
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 0
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 0
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 0
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 0
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 0
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 0
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 0
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 0
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 0
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 0
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 0
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 0
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 0
            },
            {
              "date": "2026-10-28",
              "probes": 251,
              "ok": 0
            },
            {
              "date": "2026-10-29",
              "probes": 249,
              "ok": 0
            },
            {
              "date": "2026-10-30",
              "probes": 248,
              "ok": 0
            },
            {
              "date": "2026-10-31",
              "probes": 251,
              "ok": 0
            },
            {
              "date": "2026-11-01",
              "probes": 249,
              "ok": 0
            },
            {
              "date": "2026-11-02",
              "probes": 250,
              "ok": 0
            },
            {
              "date": "2026-11-03",
              "probes": 248,
              "ok": 0
            },
            {
              "date": "2026-11-04",
              "probes": 246,
              "ok": 0
            },
            {
              "date": "2026-11-05",
              "probes": 185,
              "ok": 0
            },
            {
              "date": "2026-11-06",
              "probes": 241,
              "ok": 0
            },
            {
              "date": "2026-11-07",
              "probes": 197,
              "ok": 0
            }
          ]
        },
        "vendorStatus": {
          "page": "https://www.cloudflarestatus.com",
          "indicator": "major",
          "summary": "Partial System Outage",
          "checkedAt": "2026-11-07T19:21:18.765301171Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "cloudflare/workers-sdk",
            "version": "@cloudflare/deploy-helpers@0.26.0",
            "released": "2026-11-05",
            "seenAt": "2026-11-06T23:15:51.285808677Z"
          },
          {
            "registry": "npm",
            "name": "wrangler",
            "version": "4.158.0",
            "seenAt": "2026-11-06T23:15:51.249052782Z"
          }
        ],
        "githubStars": 4705,
        "npmWeekly": 40680618,
        "securityTxt": {
          "url": "https://cloudflare.com/.well-known/security.txt",
          "state": "valid",
          "checkedAt": "2026-11-07T16:00:23.467095484Z"
        },
        "llmsTxt": {
          "url": "https://developers.cloudflare.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:32:04.99357712Z"
        },
        "domain": {
          "domain": "cloudflare.com",
          "registered": "2009-02-17",
          "source": "https://rdap.verisign.com/com/v1/domain/cloudflare.com",
          "checkedAt": "2026-11-01T14:18:56.122446983Z"
        },
        "pages": [
          {
            "url": "https://developers.cloudflare.com/changelog/?product=r2",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-04T15:42:48.883950082Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "aa7b5fb58872"
          },
          {
            "url": "https://developers.cloudflare.com/changelog/product/r2/",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:04:02.926249381Z",
            "changedAt": "2026-11-04T08:19:03.499818972Z",
            "fingerprint": "13b06d5c190b"
          },
          {
            "url": "https://developers.cloudflare.com/r2/reference/changelog/",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-03T15:31:05.544759254Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "2cb3fb7e9bc5"
          },
          {
            "url": "https://developers.cloudflare.com/r2/pricing/",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-11-07T14:04:10.795316332Z",
            "changedAt": "2026-10-31T06:08:18.312508582Z",
            "fingerprint": "e55b864c3bf1"
          },
          {
            "url": "https://www.cloudflare.com/privacypolicy/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:27:05.231965905Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "e562d2a2da97"
          },
          {
            "url": "https://www.cloudflare.com/terms/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:27:07.833721689Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "d26dd2a74bde"
          }
        ],
        "mcpTools": {
          "url": "https://mcp.cloudflare.com/mcp",
          "checkedAt": "2026-11-07T01:43:15.947634594Z",
          "status": "auth",
          "note": "asks for credentials before listing its tools",
          "changedAt": "2026-11-07T01:43:15.947634594Z"
        },
        "github": {
          "repo": "cloudflare/workers-sdk",
          "checkedAt": "2026-11-02T08:40:09.665863795Z",
          "stars": 4700,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-11-02T06:14:08Z",
          "openIssues": 391,
          "openPRs": 210,
          "issuesOpened90d": 454,
          "issuesClosed90d": 311,
          "prsMerged90d": 765,
          "ci": {
            "branch": "main",
            "runs": 50,
            "success": 49,
            "failure": 0,
            "other": 1,
            "latest": "success",
            "latestAt": "2026-11-01T23:25:54Z"
          },
          "advisories": [
            {
              "ghsa": "GHSA-36p8-mvp6-cv38",
              "cve": "CVE-2026-0933",
              "severity": "high",
              "published": "2026-01-21T18:18:04Z"
            },
            {
              "ghsa": "GHSA-4pfg-2mw5-f8jx",
              "cve": "CVE-2025-59427",
              "severity": "low",
              "published": "2025-07-07T15:09:29Z"
            },
            {
              "ghsa": "GHSA-f8mp-x433-5wpf",
              "cve": "CVE-2023-7080",
              "severity": "high",
              "published": "2023-12-29T11:57:46Z"
            },
            {
              "ghsa": "GHSA-cfph-4qqh-w828",
              "cve": "CVE-2023-7079",
              "severity": "medium",
              "published": "2023-12-29T11:53:51Z"
            },
            {
              "ghsa": "GHSA-fwvg-2739-22v7",
              "cve": "CVE-2023-7078",
              "severity": "high",
              "published": "2023-12-29T11:51:10Z"
            },
            {
              "ghsa": "GHSA-8c93-4hch-xgxp",
              "cve": "CVE-2023-3348",
              "severity": "medium",
              "published": "2023-08-03T13:45:44Z"
            }
          ],
          "replies": {
            "sampled": 25,
            "unanswered": 12,
            "medianDays": 0.1
          }
        },
        "updatedAt": "2026-11-07T19:22:00.132450564Z"
      }
    },
    "answer": "Cloudflare R2 and Google Cloud Storage score within a point of each other on agent readiness, 77.5 (BB) and 76.7 (BB). Google Cloud Storage leads on payments \u0026 pricing and transparency \u0026 trust.",
    "b": {
      "slug": "google-cloud-storage",
      "name": "Google Cloud Storage",
      "vendor": "Google Cloud",
      "vendorUrl": "https://cloud.google.com/storage",
      "kind": "http-api",
      "category": "file-storage",
      "summary": "Google Cloud Storage is Google Cloud's object store for buckets and objects, reached through JSON and XML REST APIs, a gRPC Storage Control API, the gcloud CLI, client libraries and a generally available remote MCP server.",
      "url": "https://www.anchorterminal.com/tools/google-cloud-storage",
      "markdownUrl": "https://www.anchorterminal.com/tools/google-cloud-storage.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/google-cloud-storage.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/google-cloud-storage.json",
      "dns": "google-cloud-storage.grade.anchorterminal.com",
      "transports": [
        "streamable-http"
      ],
      "remoteUrl": "https://storage.googleapis.com/storage/mcp",
      "packages": [
        {
          "registry": "npm",
          "name": "@google-cloud/storage"
        },
        {
          "registry": "pypi",
          "name": "google-cloud-storage"
        }
      ],
      "auth": "oauth",
      "authNotes": "Google OAuth 2.0 access tokens for user or service-account identities, scoped by IAM roles on the project, bucket or managed folder, with HMAC keys for the XML API's S3-style access, and V4 signed URLs that carry a signature, not the secret. The MCP server uses the same Google authentication, with its own IAM permissions per MCP method.",
      "pricing": "usage",
      "pricingNotes": "Pay per GB-month stored, per 1,000 operations and per GB of egress, by location and class. Standard in a single region is $0.005 per 1,000 Class A and $0.0004 per 1,000 Class B operations; a dual-region example bills $0.022 per GB-month. Always Free gives 5 GB-months of Standard storage, 5,000 Class A and 50,000 Class B operations in three US regions. Failed 4xx and 5xx operations are generally not charged.",
      "priceSummary": "$0.005 / 1k req",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 on Cloud Storage or its pricing page (checked 2026-11-06).",
        "endpoints": []
      },
      "toolCount": 9,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://docs.cloud.google.com/storage/docs/apis",
      "openapi": "https://storage.googleapis.com/$discovery/rest?version=v1",
      "capabilities": [
        "storage.object",
        "storage.presigned",
        "storage.s3",
        "storage.share"
      ],
      "tags": [
        "hosted",
        "usage",
        "free-tier",
        "mcp",
        "remote-mcp",
        "oauth",
        "iam",
        "google-cloud",
        "object-storage",
        "signed-urls",
        "sla",
        "grpc"
      ],
      "lastRelease": "2026-11-04",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 76.7,
        "grade": "BB",
        "agentReady": true,
        "rank": 41,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 4,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 85,
          "maintenance": 88,
          "payments": 30,
          "reliability": 80,
          "schema": 81,
          "security": 85,
          "transparency": 85
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "IAM per bucket and MCP method, signed URLs, preconditions for safe retries and a 99.95 per cent multi-region SLA make it a well-governed object store for agents. The nine-tool MCP server has no read-only or destructive annotations, reads stop at 8 MiB, and a person must set up a project and billing first.",
        "bestFor": "Agents on Google Cloud that store and share files and datasets. amazon-s3, azure-blob-storage and cloudflare-r2 are the closest listings; teams outside Google Cloud with S3 tooling may prefer S3-compatible stores.",
        "strengths": [
          "Generally available MCP server since 20 April 2026, with IAM permissions per MCP method",
          "Preconditions and a documented retry strategy make writes safe to retry",
          "SLA of 99.95 per cent a month for multi-region Standard storage",
          "Signed URLs share objects without sharing credentials",
          "Cloud Audit Logs cover admin and data access"
        ],
        "weaknesses": [
          "MCP tools carry no read-only or destructive annotations and deletes need no confirmation",
          "read_object stops at 8 MiB through MCP",
          "A high-severity multi-product incident affected Cloud Storage on 20 August 2026",
          "Project and billing setup needs a person in a browser"
        ],
        "agentNotes": [
          "Grant the agent's service account only Storage Object Viewer or Creator on the bucket it needs",
          "Send ifGenerationMatch on writes and deletes so a retry can't overwrite a newer object",
          "Use a V4 signed URL to share an object rather than changing bucket access",
          "Read objects over 8 MiB through the JSON API with Range, not the MCP read_object tool",
          "Confirm with the user before delete_bucket or delete_object"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 76.7
          }
        ],
        "editorialScores": {
          "ergonomics": 85,
          "maintenance": 88,
          "payments": 30,
          "reliability": 80,
          "schema": 81,
          "security": 85,
          "transparency": 73
        },
        "provenanceScore": 97,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-06",
            "maintenance": "2026-11-06",
            "payments": "2026-11-06",
            "reliability": "2026-11-06",
            "schema": "2026-11-06",
            "security": "2026-11-06",
            "transparency": "2026-11-06"
          },
          "last": "2026-11-06",
          "oldest": "2026-11-06",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "pip install google-cloud-storage",
        "http": "curl -H \"Authorization: Bearer $(gcloud auth print-access-token)\" \"https://storage.googleapis.com/storage/v1/b?project=PROJECT_ID\""
      },
      "letme": {
        "capability": "https://letme.dev/storage.object",
        "tool": "https://letme.dev/google-cloud-storage"
      },
      "sameCompany": [
        "gemini-api",
        "vertex-ai",
        "gemini-embedding",
        "vertex-ai-tuning",
        "cloud-run-gpus",
        "google-model-armor",
        "google-imagen",
        "google-veo",
        "google-lyria",
        "google-speech-to-text",
        "google-cloud-tts",
        "gemini-live",
        "google-adk",
        "google-memory-bank",
        "google-secret-manager",
        "google-cloud-document-ai",
        "google-weather-api",
        "chrome-devtools-mcp",
        "google-maps-platform",
        "google-cloud-translation",
        "google-calendar-api",
        "firebase-cloud-messaging",
        "google-drive-api",
        "gemini-enterprise",
        "gemini-cli",
        "google-search-console",
        "google-ads-api",
        "google-forms",
        "google-sheets-api",
        "gmail-api",
        "google-people-api"
      ],
      "area": "everyday",
      "unitPrices": [
        {
          "item": "Class A operation, Standard, regional",
          "unit": "1k-requests",
          "usd": 0.005,
          "note": "Flat namespace; $0.0065 with hierarchical namespace"
        },
        {
          "item": "Class B operation, Standard, regional",
          "unit": "1k-requests",
          "usd": 0.0004,
          "note": "Flat namespace; $0.0005 with hierarchical namespace"
        },
        {
          "item": "Standard storage, dual-region example",
          "unit": "gb-month",
          "usd": 0.022,
          "note": "Per the pricing page's Iowa and Oregon dual-region example; regional rates vary by location"
        }
      ],
      "provenance": {
        "legalEntity": "Google LLC (Google Cloud EMEA Limited and other regional entities by billing address)",
        "domain": "google.com",
        "domainRegistered": "1997-09-15",
        "endpointOnVendorDomain": true,
        "terms": "https://cloud.google.com/terms",
        "privacy": "https://policies.google.com/privacy",
        "statusPage": "https://status.cloud.google.com",
        "changelog": "https://docs.cloud.google.com/storage/docs/release-notes",
        "securityTxt": "valid",
        "checked": "2026-11-06",
        "notes": [
          "Legal entity, terms, privacy and security.txt follow the Google Cloud provenance in data/tools/google-secret-manager.json (checked 1 November 2026); not re-read for this listing.",
          "status.cloud.google.com/robots.txt allows all; its incidents.json was read on 6 November 2026.",
          "The API lives at storage.googleapis.com and the docs at docs.cloud.google.com, both Google domains."
        ],
        "score": 97
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/google-cloud-storage.json",
      "live": {
        "slug": "google-cloud-storage",
        "probe": {
          "target": "https://storage.googleapis.com/storage/mcp",
          "method": "get",
          "lastAt": "2026-11-07T19:22:09.087529908Z",
          "lastOk": true,
          "lastStatus": 405,
          "lastMs": 119,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 45,
          "p95ms24h": 121,
          "samples24h": 210,
          "samples30d": 210,
          "days": [
            {
              "date": "2026-11-06",
              "probes": 13,
              "ok": 13
            },
            {
              "date": "2026-11-07",
              "probes": 197,
              "ok": 197
            }
          ]
        },
        "versions": [
          {
            "registry": "npm",
            "name": "@google-cloud/storage",
            "version": "8.4.0",
            "seenAt": "2026-11-06T23:29:10.718971869Z"
          },
          {
            "registry": "pypi",
            "name": "google-cloud-storage",
            "version": "3.17.1",
            "released": "2026-10-15",
            "seenAt": "2026-11-06T23:29:11.680918026Z"
          }
        ],
        "npmWeekly": 26901222,
        "pypiWeekly": 39461441,
        "securityTxt": {
          "url": "https://google.com/.well-known/security.txt",
          "state": "valid",
          "expires": "2030-04-01T00:00:00z",
          "checkedAt": "2026-11-07T16:01:22.068349931Z"
        },
        "pages": [
          {
            "url": "https://docs.cloud.google.com/storage/docs/release-notes",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:05:53.84257971Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "2d3b4b4b1622"
          }
        ],
        "updatedAt": "2026-11-07T19:22:09.087529908Z"
      }
    },
    "edges": [
      {
        "by": 11,
        "category": "schema",
        "leads": "cloudflare-r2",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "No OpenAPI for the S3 data plane, but a per-operation, per-header compatibility table against AWS's S3 reference, and the Cloudflare REST API in cloudflare/api-schemas, which covers bucket management, temporary credentials and GA endpoints to list, get, upload (up to 300 MB) and delete objects, per the 4 October check, not re-read on 1 November (22). llms.txt and Markdown pages for the docs, re-read on 1 November (10). The docs say when to use what, temporary credentials against presigned URLs for example, in a table (17). Typed through the S3 models and the REST spec (13). An error table of 29 codes, each with HTTP status, details and a recommended fix, re-read on 1 November (ObjectLockedByBucketPolicy now documented as 409 rather than 403, from 28 October), and examples in several languages (15). A dated R2 changelog with five entries since July, the newest on 9 October (15).",
          "b": "The JSON API is described by a public Google API Discovery document, storage v1 revision 20261103 (25). docs.cloud.google.com/llms.txt and /storage/llms.txt return 404 (0). The reference explains each method and the docs say when to use XML, JSON or gRPC and that gsutil is legacy (14). Typed resources with enums for storage classes and predefined ACLs (14). Samples in every client library and an error reference with HTTP codes and reasons (13). API version v1 and dated release notes, the latest on 4 November 2026 (15). 25 + 0 + 14 + 14 + 13 + 15 = 81."
        },
        "scores": {
          "a": 92,
          "b": 81
        }
      },
      {
        "by": 10,
        "category": "payments",
        "leads": "google-cloud-storage",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No x402, MPP or L402 on R2's endpoints (0). Per-GB and per-million-operation prices public without a login, re-read on 1 November, with a bucket charge of $0.10 a month above 100,000 buckets added on 30 October (20). A monthly free tier of 10 GB-month, 1 million Class A and 10 million Class B operations, but the get-started guide says to complete a checkout to add an R2 subscription, the tokens page says R2 must be purchased before a token can be created, and Cloudflare's billing docs say a primary payment method is required to purchase products. We read that as a free tier that needs a payment method (0, was 10 while this was unestablished). A person signs up in a browser; USDC is accepted at the dashboard checkout through Stripe, which is not a machine payment protocol (0).",
          "b": "No x402, MPP or L402 (0). Per-operation and per-GB prices public without login, though the regional storage table draws by script (20). Always Free covers 5 GB-months and small operation counts in three US regions, but a Google Cloud billing account is needed; whether a card is required wasn't confirmed today (10). A person creates the project and billing account in a browser (0). 0 + 20 + 10 + 0 = 30."
        },
        "scores": {
          "a": 20,
          "b": 30
        }
      },
      {
        "by": 10,
        "category": "transparency",
        "leads": "google-cloud-storage",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "Closed service; wrangler, the MCP servers and the docs are open source on GitHub (18). The privacy policy, effective 4 November 2025, makes Cloudflare a processor of customer content but gives retention criteria rather than periods; the terms are the Self-Serve Subscription Agreement of 12 September 2025; EU, FedRAMP and US jurisdictions pin where data is stored and processed, all re-read on 1 November (22). No R2 deprecation policy found. r2.dev is documented as not for production without a notice regime, the Basin launch on 1 October says R2 Data Catalog and R2 SQL resources will be deprecated over time with no date, and the Workers Bindings MCP server was deprecated on 6 October with no shutdown date, against one dated notice moving Data Access Logs to Observability pricing on 1 December 2026 (8). Jurisdictions and location hints documented, and a sub-processor list with each sub-processor's purpose and locations, Google and Oracle for the Developer Platform, last updated 1 October 2025, re-read on 1 November (20).",
          "b": "Closed service under the Google Cloud terms; client libraries are Apache-2.0 (18). Google's privacy policy, the Cloud Data Processing Addendum and a sub-processor list last modified 19 October 2026 apply, per the Secret Manager listing's 1 November check (22). Dated notices in release notes and a deprecated read_text MCP tool that names its replacement; Google Cloud's deprecation policy wasn't re-read today (15). Sub-processors are listed with locations, and each bucket is created in a chosen location (18). 18 + 22 + 15 + 18 = 73."
        },
        "scores": {
          "a": 75,
          "b": 85
        }
      },
      {
        "by": 5,
        "category": "ergonomics",
        "leads": "cloudflare-r2",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "Graded as an API, the listing's kind. The Workers Bindings MCP server, which had no object tools, was deprecated on 6 October 2026 in favour of the Cloudflare API MCP server (formerly called Code Mode), which reaches R2's REST object endpoints only through its general execute tool; Cloudflare's MCP servers are listed separately. ListObjectsV2 with MaxKeys and prefixes, Range GETs and HEAD (20). Pagination and prefix and delimiter filters (20). Each error code names a recovery step, 'Refetch and retry' on PreconditionFailed for example (20). Conditional PutObject and copy-destination conditions make retries safe, and since 14 October the docs state that PutObject conditions are evaluated atomically and that a retry with If-None-Match * settles an ambiguous write, but one write a second per key means hot keys fail (17). Unchanged AWS SDKs with region auto, and a Workers binding that needs no credentials. No R2-specific SDK (13).",
          "b": "Graded as an API with a nine-tool MCP server. The fields parameter selects partial responses, and Range reads fetch part of an object (22). maxResults and pageToken paging, prefix and delimiter filters and match globs (20). JSON errors with code, message and reason, and a documented retry table (16). Generation and metageneration preconditions make retries safe; the MCP reference gives no read-only or destructive annotations (14). Client libraries in many languages with retries on by default, but every call needs Google auth and a project (13). 22 + 20 + 16 + 14 + 13 = 85."
        },
        "scores": {
          "a": 90,
          "b": 85
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Cloudflare",
        "b": "Google Cloud",
        "name": "Vendor"
      },
      {
        "a": "https://\u003caccount-id\u003e.r2.cloudflarestorage.com",
        "b": "https://storage.googleapis.com/storage/mcp",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP",
        "b": "Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "OAuth",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Pay per use",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Apache-2.0 or MIT (wrangler)",
        "b": "none",
        "name": "Licence"
      },
      {
        "a": "none",
        "b": "9",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-09",
        "b": "2026-11-04",
        "name": "Last release"
      },
      {
        "a": "2025-09-12",
        "b": "2026-09-02",
        "name": "Terms last updated"
      },
      {
        "a": "no date given",
        "b": "2026-10-01",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "4.5k stars, 27M npm/wk",
        "b": "none",
        "name": "Popularity"
      },
      {
        "a": "3.5/5 (8)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Cloudflare R2 and Google Cloud Storage score within a point of each other on agent readiness, 77.5 (BB) and 76.7 (BB). Google Cloud Storage leads on payments \u0026 pricing and transparency \u0026 trust.",
        "question": "Which is better for AI agents, Cloudflare R2 or Google Cloud Storage?"
      },
      {
        "answer": "Cloudflare R2 needs an API key. Google Cloud Storage uses an OAuth sign-in.",
        "question": "Do Cloudflare R2 and Google Cloud Storage need an API key?"
      },
      {
        "answer": "Yes. Cloudflare R2 has a hosted endpoint at https://\u003caccount-id\u003e.r2.cloudflarestorage.com and Google Cloud Storage at https://storage.googleapis.com/storage/mcp.",
        "question": "Can an agent call Cloudflare R2 and Google Cloud Storage without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Schema \u0026 documentation, 92 against 81",
          "Agent ergonomics, 90 against 85"
        ],
        "also": null,
        "goodFor": "Files an agent stores and then serves to the public, where free egress dominates, and for operators who want short-lived, path-scoped credentials.",
        "slug": "cloudflare-r2",
        "watchFor": "No versioning, tagging, ACLs or bucket policies on the S3 API; retention comes as bucket lock rules"
      },
      {
        "aheadOn": [
          "Payments \u0026 pricing, 30 against 20",
          "Transparency \u0026 trust, 85 against 75"
        ],
        "also": null,
        "goodFor": "Agents on Google Cloud that store and share files and datasets. amazon-s3, azure-blob-storage and cloudflare-r2 are the closest listings; teams outside Google Cloud with S3 tooling may prefer S3-compatible stores.",
        "slug": "google-cloud-storage",
        "watchFor": "MCP tools carry no read-only or destructive annotations and deletes need no confirmation"
      }
    ],
    "history": {
      "cloudflare-r2": [
        {
          "causes": [
            "correction"
          ],
          "date": "2026-10-28",
          "delta": -0.1,
          "from": 77.6,
          "fromGrade": "BB",
          "to": 77.5,
          "toGrade": "BB"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.2,
          "from": 77.4,
          "fromGrade": "BB",
          "to": 77.6,
          "toGrade": "BB"
        },
        {
          "causes": [
            "evidence"
          ],
          "date": "2026-10-17",
          "delta": 0.3,
          "from": 77.1,
          "fromGrade": "BB",
          "to": 77.4,
          "toGrade": "BB"
        }
      ],
      "google-cloud-storage": null
    },
    "job": {
      "capability": "storage.object",
      "name": "Object storage"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/box-api-vs-cloudflare-r2.json",
        "title": "Box API + MCP vs Cloudflare R2",
        "url": "https://www.anchorterminal.com/compare/box-api-vs-cloudflare-r2"
      },
      {
        "json": "https://www.anchorterminal.com/compare/box-api-vs-google-cloud-storage.json",
        "title": "Box API + MCP vs Google Cloud Storage",
        "url": "https://www.anchorterminal.com/compare/box-api-vs-google-cloud-storage"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-r2-vs-dropbox-api.json",
        "title": "Cloudflare R2 vs Dropbox API + MCP",
        "url": "https://www.anchorterminal.com/compare/cloudflare-r2-vs-dropbox-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-r2-vs-fast-io.json",
        "title": "Cloudflare R2 vs Fastio",
        "url": "https://www.anchorterminal.com/compare/cloudflare-r2-vs-fast-io"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-r2-vs-google-drive-api.json",
        "title": "Cloudflare R2 vs Google Drive API + MCP",
        "url": "https://www.anchorterminal.com/compare/cloudflare-r2-vs-google-drive-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-r2-vs-onedrive-sharepoint.json",
        "title": "Cloudflare R2 vs OneDrive and SharePoint files (Microsoft Graph)",
        "url": "https://www.anchorterminal.com/compare/cloudflare-r2-vs-onedrive-sharepoint"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-r2-vs-onlyoffice-mcp.json",
        "title": "Cloudflare R2 vs ONLYOFFICE Apps MCP Server",
        "url": "https://www.anchorterminal.com/compare/cloudflare-r2-vs-onlyoffice-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dropbox-api-vs-google-cloud-storage.json",
        "title": "Dropbox API + MCP vs Google Cloud Storage",
        "url": "https://www.anchorterminal.com/compare/dropbox-api-vs-google-cloud-storage"
      },
      {
        "json": "https://www.anchorterminal.com/compare/fast-io-vs-google-cloud-storage.json",
        "title": "Fastio vs Google Cloud Storage",
        "url": "https://www.anchorterminal.com/compare/fast-io-vs-google-cloud-storage"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-cloud-storage-vs-google-drive-api.json",
        "title": "Google Cloud Storage vs Google Drive API + MCP",
        "url": "https://www.anchorterminal.com/compare/google-cloud-storage-vs-google-drive-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-cloud-storage-vs-onlyoffice-mcp.json",
        "title": "Google Cloud Storage vs ONLYOFFICE Apps MCP Server",
        "url": "https://www.anchorterminal.com/compare/google-cloud-storage-vs-onlyoffice-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-s3-vs-cloudflare-r2.json",
        "title": "Amazon S3 vs Cloudflare R2",
        "url": "https://www.anchorterminal.com/compare/amazon-s3-vs-cloudflare-r2"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-s3-vs-google-cloud-storage.json",
        "title": "Amazon S3 vs Google Cloud Storage",
        "url": "https://www.anchorterminal.com/compare/amazon-s3-vs-google-cloud-storage"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-blob-storage-vs-cloudflare-r2.json",
        "title": "Azure Blob Storage vs Cloudflare R2",
        "url": "https://www.anchorterminal.com/compare/azure-blob-storage-vs-cloudflare-r2"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-blob-storage-vs-google-cloud-storage.json",
        "title": "Azure Blob Storage vs Google Cloud Storage",
        "url": "https://www.anchorterminal.com/compare/azure-blob-storage-vs-google-cloud-storage"
      },
      {
        "json": "https://www.anchorterminal.com/compare/backblaze-b2-vs-cloudflare-r2.json",
        "title": "Backblaze B2 vs Cloudflare R2",
        "url": "https://www.anchorterminal.com/compare/backblaze-b2-vs-cloudflare-r2"
      },
      {
        "json": "https://www.anchorterminal.com/compare/backblaze-b2-vs-google-cloud-storage.json",
        "title": "Backblaze B2 vs Google Cloud Storage",
        "url": "https://www.anchorterminal.com/compare/backblaze-b2-vs-google-cloud-storage"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bunny-storage-vs-cloudflare-r2.json",
        "title": "Bunny Storage vs Cloudflare R2",
        "url": "https://www.anchorterminal.com/compare/bunny-storage-vs-cloudflare-r2"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bunny-storage-vs-google-cloud-storage.json",
        "title": "Bunny Storage vs Google Cloud Storage",
        "url": "https://www.anchorterminal.com/compare/bunny-storage-vs-google-cloud-storage"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-r2-vs-digitalocean-spaces.json",
        "title": "Cloudflare R2 vs DigitalOcean Spaces",
        "url": "https://www.anchorterminal.com/compare/cloudflare-r2-vs-digitalocean-spaces"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-r2-vs-tigris.json",
        "title": "Cloudflare R2 vs Tigris",
        "url": "https://www.anchorterminal.com/compare/cloudflare-r2-vs-tigris"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-r2-vs-wasabi-hot-cloud-storage.json",
        "title": "Cloudflare R2 vs Wasabi Hot Cloud Storage",
        "url": "https://www.anchorterminal.com/compare/cloudflare-r2-vs-wasabi-hot-cloud-storage"
      },
      {
        "json": "https://www.anchorterminal.com/compare/digitalocean-spaces-vs-google-cloud-storage.json",
        "title": "DigitalOcean Spaces vs Google Cloud Storage",
        "url": "https://www.anchorterminal.com/compare/digitalocean-spaces-vs-google-cloud-storage"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-cloud-storage-vs-tigris.json",
        "title": "Google Cloud Storage vs Tigris",
        "url": "https://www.anchorterminal.com/compare/google-cloud-storage-vs-tigris"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-cloud-storage-vs-wasabi-hot-cloud-storage.json",
        "title": "Google Cloud Storage vs Wasabi Hot Cloud Storage",
        "url": "https://www.anchorterminal.com/compare/google-cloud-storage-vs-wasabi-hot-cloud-storage"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-cloud-storage-vs-onedrive-sharepoint.json",
        "title": "Google Cloud Storage vs OneDrive and SharePoint files (Microsoft Graph)",
        "url": "https://www.anchorterminal.com/compare/google-cloud-storage-vs-onedrive-sharepoint"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 2,
        "cloudflare-r2": 82,
        "edge": "cloudflare-r2",
        "google-cloud-storage": 80,
        "key": "reliability",
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 11,
        "cloudflare-r2": 92,
        "edge": "cloudflare-r2",
        "google-cloud-storage": 81,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "by": 5,
        "cloudflare-r2": 90,
        "edge": "cloudflare-r2",
        "google-cloud-storage": 85,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "by": 0,
        "cloudflare-r2": 85,
        "edge": "",
        "google-cloud-storage": 85,
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "by": 10,
        "cloudflare-r2": 20,
        "edge": "google-cloud-storage",
        "google-cloud-storage": 30,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 1,
        "cloudflare-r2": 87,
        "edge": "google-cloud-storage",
        "google-cloud-storage": 88,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "by": 10,
        "cloudflare-r2": 75,
        "edge": "google-cloud-storage",
        "google-cloud-storage": 85,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Cloudflare R2 and Google Cloud Storage score within a point of each other on agent readiness, 77.5 (BB) and 76.7 (BB). Google Cloud Storage leads on payments \u0026 pricing and transparency \u0026 trust. Both do object storage.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "cloudflare-r2": "Free egress and a monthly free tier of 10 GB-month plus 1 million writes, though enabling R2 needs a checkout with a payment method on the account. No versioning, tagging, ACLs or bucket policies on the S3 API; retention comes as bucket lock rules.",
      "google-cloud-storage": "IAM per bucket and MCP method, signed URLs, preconditions for safe retries and a 99.95 per cent multi-region SLA make it a well-governed object store for agents. The nine-tool MCP server has no read-only or destructive annotations, reads stop at 8 MiB, and a person must set up a project and billing first."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/cloudflare-r2-vs-google-cloud-storage",
    "json": "https://www.anchorterminal.com/compare/cloudflare-r2-vs-google-cloud-storage.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/cloudflare-r2-vs-google-cloud-storage.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/cloudflare-r2-vs-google-cloud-storage.min.md"
  },
  "markdown": "Cloudflare R2 and Google Cloud Storage score within a point of each other on agent readiness, 77.5 (BB) and 76.7 (BB). Google Cloud Storage leads on payments \u0026 pricing and transparency \u0026 trust. Both do object storage.\n\n- Cloudflare R2: grade BB, 77.5/100, rank #28 of 1510. Markdown https://www.anchorterminal.com/tools/cloudflare-r2.md · JSON https://www.anchorterminal.com/api/v1/tools/cloudflare-r2.json\n- Google Cloud Storage: grade BB, 76.7/100, rank #41 of 1510. Markdown https://www.anchorterminal.com/tools/google-cloud-storage.md · JSON https://www.anchorterminal.com/api/v1/tools/google-cloud-storage.json\n- Best file storage and sharing APIs for AI agents: https://www.anchorterminal.com/best/file-storage/index.md\n- All 105 storage comparisons: https://www.anchorterminal.com/compare/file-storage/index.md\n\n## Which one, for what\n\n### Cloudflare R2 (BB)\n\nGood for: Files an agent stores and then serves to the public, where free egress dominates, and for operators who want short-lived, path-scoped credentials.\n\nAhead on:\n- Schema \u0026 documentation, 92 against 81\n- Agent ergonomics, 90 against 85\n\nWatch for: No versioning, tagging, ACLs or bucket policies on the S3 API; retention comes as bucket lock rules\n\n### Google Cloud Storage (BB)\n\nGood for: Agents on Google Cloud that store and share files and datasets. amazon-s3, azure-blob-storage and cloudflare-r2 are the closest listings; teams outside Google Cloud with S3 tooling may prefer S3-compatible stores.\n\nAhead on:\n- Payments \u0026 pricing, 30 against 20\n- Transparency \u0026 trust, 85 against 75\n\nWatch for: MCP tools carry no read-only or destructive annotations and deletes need no confirmation\n\n\n## Why the edge\n\n### Schema \u0026 documentation: Cloudflare R2 +11\n\n- Cloudflare R2 (92): No OpenAPI for the S3 data plane, but a per-operation, per-header compatibility table against AWS's S3 reference, and the Cloudflare REST API in cloudflare/api-schemas, which covers bucket management, temporary credentials and GA endpoints to list, get, upload (up to 300 MB) and delete objects, per the 4 October check, not re-read on 1 November (22). llms.txt and Markdown pages for the docs, re-read on 1 November (10). The docs say when to use what, temporary credentials against presigned URLs for example, in a table (17). Typed through the S3 models and the REST spec (13). An error table of 29 codes, each with HTTP status, details and a recommended fix, re-read on 1 November (ObjectLockedByBucketPolicy now documented as 409 rather than 403, from 28 October), and examples in several languages (15). A dated R2 changelog with five entries since July, the newest on 9 October (15).\n- Google Cloud Storage (81): The JSON API is described by a public Google API Discovery document, storage v1 revision 20261103 (25). docs.cloud.google.com/llms.txt and /storage/llms.txt return 404 (0). The reference explains each method and the docs say when to use XML, JSON or gRPC and that gsutil is legacy (14). Typed resources with enums for storage classes and predefined ACLs (14). Samples in every client library and an error reference with HTTP codes and reasons (13). API version v1 and dated release notes, the latest on 4 November 2026 (15). 25 + 0 + 14 + 14 + 13 + 15 = 81.\n\n### Payments \u0026 pricing: Google Cloud Storage +10\n\n- Cloudflare R2 (20): No x402, MPP or L402 on R2's endpoints (0). Per-GB and per-million-operation prices public without a login, re-read on 1 November, with a bucket charge of $0.10 a month above 100,000 buckets added on 30 October (20). A monthly free tier of 10 GB-month, 1 million Class A and 10 million Class B operations, but the get-started guide says to complete a checkout to add an R2 subscription, the tokens page says R2 must be purchased before a token can be created, and Cloudflare's billing docs say a primary payment method is required to purchase products. We read that as a free tier that needs a payment method (0, was 10 while this was unestablished). A person signs up in a browser; USDC is accepted at the dashboard checkout through Stripe, which is not a machine payment protocol (0).\n- Google Cloud Storage (30): No x402, MPP or L402 (0). Per-operation and per-GB prices public without login, though the regional storage table draws by script (20). Always Free covers 5 GB-months and small operation counts in three US regions, but a Google Cloud billing account is needed; whether a card is required wasn't confirmed today (10). A person creates the project and billing account in a browser (0). 0 + 20 + 10 + 0 = 30.\n\n### Transparency \u0026 trust: Google Cloud Storage +10\n\n- Cloudflare R2 (75): Closed service; wrangler, the MCP servers and the docs are open source on GitHub (18). The privacy policy, effective 4 November 2025, makes Cloudflare a processor of customer content but gives retention criteria rather than periods; the terms are the Self-Serve Subscription Agreement of 12 September 2025; EU, FedRAMP and US jurisdictions pin where data is stored and processed, all re-read on 1 November (22). No R2 deprecation policy found. r2.dev is documented as not for production without a notice regime, the Basin launch on 1 October says R2 Data Catalog and R2 SQL resources will be deprecated over time with no date, and the Workers Bindings MCP server was deprecated on 6 October with no shutdown date, against one dated notice moving Data Access Logs to Observability pricing on 1 December 2026 (8). Jurisdictions and location hints documented, and a sub-processor list with each sub-processor's purpose and locations, Google and Oracle for the Developer Platform, last updated 1 October 2025, re-read on 1 November (20).\n- Google Cloud Storage (85): Closed service under the Google Cloud terms; client libraries are Apache-2.0 (18). Google's privacy policy, the Cloud Data Processing Addendum and a sub-processor list last modified 19 October 2026 apply, per the Secret Manager listing's 1 November check (22). Dated notices in release notes and a deprecated read_text MCP tool that names its replacement; Google Cloud's deprecation policy wasn't re-read today (15). Sub-processors are listed with locations, and each bucket is created in a chosen location (18). 18 + 22 + 15 + 18 = 73.\n\n### Agent ergonomics: Cloudflare R2 +5\n\n- Cloudflare R2 (90): Graded as an API, the listing's kind. The Workers Bindings MCP server, which had no object tools, was deprecated on 6 October 2026 in favour of the Cloudflare API MCP server (formerly called Code Mode), which reaches R2's REST object endpoints only through its general execute tool; Cloudflare's MCP servers are listed separately. ListObjectsV2 with MaxKeys and prefixes, Range GETs and HEAD (20). Pagination and prefix and delimiter filters (20). Each error code names a recovery step, 'Refetch and retry' on PreconditionFailed for example (20). Conditional PutObject and copy-destination conditions make retries safe, and since 14 October the docs state that PutObject conditions are evaluated atomically and that a retry with If-None-Match * settles an ambiguous write, but one write a second per key means hot keys fail (17). Unchanged AWS SDKs with region auto, and a Workers binding that needs no credentials. No R2-specific SDK (13).\n- Google Cloud Storage (85): Graded as an API with a nine-tool MCP server. The fields parameter selects partial responses, and Range reads fetch part of an object (22). maxResults and pageToken paging, prefix and delimiter filters and match globs (20). JSON errors with code, message and reason, and a documented retry table (16). Generation and metageneration preconditions make retries safe; the MCP reference gives no read-only or destructive annotations (14). Client libraries in many languages with retries on by default, but every call needs Google auth and a project (13). 22 + 20 + 16 + 14 + 13 = 85.\n\n## Score by category\n\n| Category | Weight | Cloudflare R2 | Google Cloud Storage | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 82 | 80 | Cloudflare R2 +2 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 92 | 81 | Cloudflare R2 +11 |\n| Agent ergonomics | 13% (16.2 this run) | 90 | 85 | Cloudflare R2 +5 |\n| Security \u0026 auth | 14% (17.5 this run) | 85 | 85 | even |\n| Payments \u0026 pricing | 10% (12.5 this run) | 20 | 30 | Google Cloud Storage +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 87 | 88 | Google Cloud Storage +1 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 75 | 85 | Google Cloud Storage +10 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **77.5 · BB** | **76.7 · BB** | |\n\n## Facts side by side\n\n| Fact | Cloudflare R2 | Google Cloud Storage |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Cloudflare | Google Cloud |\n| Hosted endpoint | `https://\u003caccount-id\u003e.r2.cloudflarestorage.com` | `https://storage.googleapis.com/storage/mcp` |\n| Transports | HTTP, Streamable HTTP | Streamable HTTP |\n| Auth | API key | OAuth |\n| Pricing | Freemium | Pay per use |\n| x402 | no | no |\n| Licence | Apache-2.0 or MIT (wrangler) | none |\n| Tools exposed | none | 9 |\n| Read-only variant documented | no | no |\n| llms.txt | yes | no |\n| Last release | 2026-10-09 | 2026-11-04 |\n| Terms last updated | 2025-09-12 | 2026-09-02 |\n| Privacy policy last updated | no date given | 2026-10-01 |\n| Customer content may train models | not found in the text | yes |\n| Terms restrict automated access | yes | not found in the text |\n| Terms restrict benchmarking | not found in the text | not found in the text |\n| Terms or service can change without notice | yes | not found in the text |\n| Arbitration or class-action waiver | yes | not found in the text |\n| Popularity | 4.5k stars, 27M npm/wk | none |\n| Agent reviews | 3.5/5 (8) | none |\n\n## How the scores have moved\n\n### Cloudflare R2\n\n- -0.1 on 28 October 2026: correction\n- +0.2 on 27 October 2026: checklist\n- +0.3 on 17 October 2026: new evidence\n\n### Google Cloud Storage\n\nNo score change since it was listed.\n\n## Verdicts\n\n**Cloudflare R2.** Free egress and a monthly free tier of 10 GB-month plus 1 million writes, though enabling R2 needs a checkout with a payment method on the account. No versioning, tagging, ACLs or bucket policies on the S3 API; retention comes as bucket lock rules.\n\n**Google Cloud Storage.** IAM per bucket and MCP method, signed URLs, preconditions for safe retries and a 99.95 per cent multi-region SLA make it a well-governed object store for agents. The nine-tool MCP server has no read-only or destructive annotations, reads stop at 8 MiB, and a person must set up a project and billing first.\n\n## Before you call either\n\n### Cloudflare R2\n\n1. Set region to `auto` and the endpoint to https://\u003caccount-id\u003e.r2.cloudflarestorage.com. `us-east-1` also works, other region names fail\n2. Ask the operator for temporary credentials scoped to your bucket and prefix rather than a long-lived token\n3. For public reads put a custom domain or an r2.dev subdomain on the bucket; presigned URLs only sign the S3 hostname\n4. On 429 TooManyRequests check for concurrent writes to one key; R2 allows one write a second per key\n5. Send If-None-Match with * on PutObject so a retried upload can't overwrite someone else's object; a 412 on retry means the first write landed, and the 412 is billed as a Class A operation\n\n### Google Cloud Storage\n\n1. Grant the agent's service account only Storage Object Viewer or Creator on the bucket it needs\n2. Send ifGenerationMatch on writes and deletes so a retry can't overwrite a newer object\n3. Use a V4 signed URL to share an object rather than changing bucket access\n4. Read objects over 8 MiB through the JSON API with Range, not the MCP read_object tool\n5. Confirm with the user before delete_bucket or delete_object\n\n## Questions\n\n### Which is better for AI agents, Cloudflare R2 or Google Cloud Storage?\n\nCloudflare R2 and Google Cloud Storage score within a point of each other on agent readiness, 77.5 (BB) and 76.7 (BB). Google Cloud Storage leads on payments \u0026 pricing and transparency \u0026 trust.\n\n### Do Cloudflare R2 and Google Cloud Storage need an API key?\n\nCloudflare R2 needs an API key. Google Cloud Storage uses an OAuth sign-in.\n\n### Can an agent call Cloudflare R2 and Google Cloud Storage without installing anything?\n\nYes. Cloudflare R2 has a hosted endpoint at https://\u003caccount-id\u003e.r2.cloudflarestorage.com and Google Cloud Storage at https://storage.googleapis.com/storage/mcp.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/cloudflare-r2-vs-google-cloud-storage.json, and with the fewest tokens: https://www.anchorterminal.com/compare/cloudflare-r2-vs-google-cloud-storage.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"cloudflare-r2\", \"b\": \"google-cloud-storage\"}`. From a terminal: `anchor compare cloudflare-r2 google-cloud-storage`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/cloudflare-r2.json and https://www.anchorterminal.com/api/v1/tools/google-cloud-storage.json\n\n## Other comparisons with Cloudflare R2 or Google Cloud Storage\n\n- [Box API + MCP vs Cloudflare R2](https://www.anchorterminal.com/compare/box-api-vs-cloudflare-r2.md)\n- [Box API + MCP vs Google Cloud Storage](https://www.anchorterminal.com/compare/box-api-vs-google-cloud-storage.md)\n- [Cloudflare R2 vs Dropbox API + MCP](https://www.anchorterminal.com/compare/cloudflare-r2-vs-dropbox-api.md)\n- [Cloudflare R2 vs Fastio](https://www.anchorterminal.com/compare/cloudflare-r2-vs-fast-io.md)\n- [Cloudflare R2 vs Google Drive API + MCP](https://www.anchorterminal.com/compare/cloudflare-r2-vs-google-drive-api.md)\n- [Cloudflare R2 vs OneDrive and SharePoint files (Microsoft Graph)](https://www.anchorterminal.com/compare/cloudflare-r2-vs-onedrive-sharepoint.md)\n- [Cloudflare R2 vs ONLYOFFICE Apps MCP Server](https://www.anchorterminal.com/compare/cloudflare-r2-vs-onlyoffice-mcp.md)\n- [Dropbox API + MCP vs Google Cloud Storage](https://www.anchorterminal.com/compare/dropbox-api-vs-google-cloud-storage.md)\n- [Fastio vs Google Cloud Storage](https://www.anchorterminal.com/compare/fast-io-vs-google-cloud-storage.md)\n- [Google Cloud Storage vs Google Drive API + MCP](https://www.anchorterminal.com/compare/google-cloud-storage-vs-google-drive-api.md)\n- [Google Cloud Storage vs ONLYOFFICE Apps MCP Server](https://www.anchorterminal.com/compare/google-cloud-storage-vs-onlyoffice-mcp.md)\n- [Amazon S3 vs Cloudflare R2](https://www.anchorterminal.com/compare/amazon-s3-vs-cloudflare-r2.md)\n- [Amazon S3 vs Google Cloud Storage](https://www.anchorterminal.com/compare/amazon-s3-vs-google-cloud-storage.md)\n- [Azure Blob Storage vs Cloudflare R2](https://www.anchorterminal.com/compare/azure-blob-storage-vs-cloudflare-r2.md)\n- [Azure Blob Storage vs Google Cloud Storage](https://www.anchorterminal.com/compare/azure-blob-storage-vs-google-cloud-storage.md)\n- [Backblaze B2 vs Cloudflare R2](https://www.anchorterminal.com/compare/backblaze-b2-vs-cloudflare-r2.md)\n- [Backblaze B2 vs Google Cloud Storage](https://www.anchorterminal.com/compare/backblaze-b2-vs-google-cloud-storage.md)\n- [Bunny Storage vs Cloudflare R2](https://www.anchorterminal.com/compare/bunny-storage-vs-cloudflare-r2.md)\n- [Bunny Storage vs Google Cloud Storage](https://www.anchorterminal.com/compare/bunny-storage-vs-google-cloud-storage.md)\n- [Cloudflare R2 vs DigitalOcean Spaces](https://www.anchorterminal.com/compare/cloudflare-r2-vs-digitalocean-spaces.md)\n- [Cloudflare R2 vs Tigris](https://www.anchorterminal.com/compare/cloudflare-r2-vs-tigris.md)\n- [Cloudflare R2 vs Wasabi Hot Cloud Storage](https://www.anchorterminal.com/compare/cloudflare-r2-vs-wasabi-hot-cloud-storage.md)\n- [DigitalOcean Spaces vs Google Cloud Storage](https://www.anchorterminal.com/compare/digitalocean-spaces-vs-google-cloud-storage.md)\n- [Google Cloud Storage vs Tigris](https://www.anchorterminal.com/compare/google-cloud-storage-vs-tigris.md)\n- [Google Cloud Storage vs Wasabi Hot Cloud Storage](https://www.anchorterminal.com/compare/google-cloud-storage-vs-wasabi-hot-cloud-storage.md)\n- [Google Cloud Storage vs OneDrive and SharePoint files (Microsoft Graph)](https://www.anchorterminal.com/compare/google-cloud-storage-vs-onedrive-sharepoint.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-07",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Cloudflare R2 vs Google Cloud Storage",
        "url": ""
      }
    ],
    "description": "Cloudflare R2 and Google Cloud Storage score within a point of each other for object storage, 77.5 and 76.7 out of 100. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Cloudflare R2 BB 77.5",
      "Google Cloud Storage BB 76.7",
      "scores"
    ],
    "h1": "Cloudflare R2 vs Google Cloud Storage",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/cloudflare-r2-vs-google-cloud-storage",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Cloudflare R2 vs Google Cloud Storage for AI agents (2026)",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/cloudflare-r2-vs-google-cloud-storage"
  },
  "tokens": {
    "markdown": 4250,
    "slim": 2230
  },
  "version": 1
}
