{
  "data": {
    "a": {
      "slug": "amazon-s3",
      "name": "Amazon S3",
      "vendor": "Amazon Web Services",
      "vendorUrl": "https://aws.amazon.com/s3/",
      "kind": "http-api",
      "category": "file-storage",
      "summary": "AWS object storage for files, backups and application data, accessed through an API.",
      "url": "https://www.anchorterminal.com/tools/amazon-s3",
      "markdownUrl": "https://www.anchorterminal.com/tools/amazon-s3.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/amazon-s3.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/amazon-s3.json",
      "repo": "https://github.com/aws/aws-sdk-js-v3",
      "license": "Apache-2.0",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://s3.us-east-1.amazonaws.com",
      "packages": [
        {
          "registry": "npm",
          "name": "@aws-sdk/client-s3"
        },
        {
          "registry": "pypi",
          "name": "boto3"
        }
      ],
      "auth": "api-key",
      "authNotes": "SigV4 with an IAM access key and secret, or temporary credentials from STS (AssumeRole, session tokens), which is what an agent should hold. Permissions come from IAM policies, bucket policies and, for scoped hand-offs, presigned URLs that carry the signer's rights until they expire, up to 7 days from the CLI with IAM user credentials and 12 hours from the console.",
      "pricing": "usage",
      "pricingNotes": "S3 Standard $0.023 a GB-month for the first 50 TB, PUT, COPY, POST and LIST $0.005 per 1,000 requests, GET and SELECT $0.0004 per 1,000, Standard-Infrequent Access $0.0125 a GB-month, as read from AWS's price feed for US West (Oregon); the pricing page's own tables load by script. Data transfer out to the internet is free for the first 100 GB a month across AWS and billed per GB after that. The pricing page also lists S3 Tables at $0.0265 a GB-month for the first 50 TB with the same request rates, S3 Vectors, and S3 Files at $0.30 a GB for high-performance storage. New AWS accounts get up to $200 in Free Tier credits over six months rather than a fixed S3 allowance (https://aws.amazon.com/s3/pricing/; https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/s3/USD/current/s3.json).",
      "priceSummary": "$0.005 / 1k req",
      "where": "hosted",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 3700,
        "npmWeekly": 44802781,
        "pypiWeekly": 578449536,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://docs.aws.amazon.com/AmazonS3/latest/userguide/",
      "capabilities": [
        "storage.object",
        "storage.s3",
        "storage.presigned",
        "storage.share"
      ],
      "tags": [
        "hosted",
        "closed-source",
        "s3-compatible",
        "usage-priced",
        "enterprise",
        "eu",
        "typescript",
        "python",
        "webhooks"
      ],
      "lastRelease": "2026-09-30",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 79.3,
        "grade": "A",
        "agentReady": true,
        "rank": 9,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 1,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 83,
          "maintenance": 83,
          "payments": 20,
          "reliability": 95,
          "schema": 92,
          "security": 86,
          "transparency": 80
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "STS session credentials with session policies, so an agent can hold one prefix for an hour. Egress to the internet is billed per GB after 100 GB a month.",
        "strengths": [
          "STS session credentials with session policies, so an agent can hold one prefix for an hour",
          "SLA of 99.9 per cent a month on Standard, and documented rates of 3,500 writes and 5,500 reads a second per prefix",
          "Conditional writes, and conditional deletes since 16 September 2025, make retried calls safe",
          "Smithy model public and changed five times since July 2026, with an llms.txt and Markdown twins for the user guide",
          "Versioning, Object Lock, lifecycle, replication and event notifications, which the S3-compatible clones only partly cover"
        ],
        "weaknesses": [
          "Egress to the internet is billed per GB after 100 GB a month",
          "The pricing page renders the Standard table by script, so an agent reading it sees no Standard rate",
          "Signup needs a person in a browser and a payment card",
          "No S3-specific MCP server; AWS's general MCP server reaches S3 through IAM credentials and generic API calls",
          "security.txt on aws.amazon.com expired on 24 September 2026"
        ],
        "agentNotes": [
          "Hold STS session credentials scoped by a session policy, never a long-lived IAM user key",
          "Sign presigned URLs with credentials that outlive the URL; a URL signed with a one-hour session token dies with the token",
          "Send If-None-Match with * on PutObject so a retry can't overwrite a file another call wrote",
          "Page ListObjectsV2 with MaxKeys and ContinuationToken, and always pass a Prefix",
          "On 503 SlowDown back off and spread keys over more prefixes, since each prefix gets 3,500 writes a second"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 8,
        "avgRating": 3.4,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "A",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 79.3
          }
        ],
        "editorialScores": {
          "ergonomics": 83,
          "maintenance": 83,
          "payments": 20,
          "reliability": 95,
          "schema": 92,
          "security": 86,
          "transparency": 65
        },
        "provenanceScore": 95
      },
      "connect": {
        "http": "AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \\\n  aws s3 cp ./hello.txt s3://my-bucket/hello.txt --region us-east-1"
      },
      "letme": {
        "capability": "https://letme.dev/storage.object",
        "tool": "https://letme.dev/amazon-s3"
      },
      "area": "everyday",
      "unitPrices": [
        {
          "item": "S3 Standard storage, first 50 TB",
          "unit": "gb-month",
          "usd": 0.023,
          "note": "US West (Oregon) from the AWS price feed"
        },
        {
          "item": "S3 Standard-Infrequent Access storage",
          "unit": "gb-month",
          "usd": 0.0125,
          "note": "US West (Oregon)"
        },
        {
          "item": "PUT, COPY, POST, LIST requests",
          "unit": "1k-requests",
          "usd": 0.005
        },
        {
          "item": "GET, SELECT requests",
          "unit": "1k-requests",
          "usd": 0.0004
        },
        {
          "item": "S3 Tables storage, first 50 TB",
          "unit": "gb-month",
          "usd": 0.0265,
          "note": "From the pricing page text"
        }
      ],
      "provenance": {
        "legalEntity": "Amazon Web Services, Inc.",
        "domain": "amazonaws.com",
        "domainRegistered": "2005-08-18",
        "endpointOnVendorDomain": true,
        "terms": "https://aws.amazon.com/service-terms/",
        "privacy": "https://aws.amazon.com/privacy/",
        "statusPage": "https://health.aws.amazon.com/health/status",
        "changelog": "https://aws.amazon.com/about-aws/whats-new/storage/",
        "securityTxt": "expired",
        "checked": "2026-09-30",
        "notes": [
          "The Service Terms (updated 2026-09-15) name Amazon Web Services, Inc. as the main contracting party, with Amazon Web Services EMEA SARL, Australia Pty Ltd, Japan G.K., Korea LLC and India Private Limited for those regions.",
          "The S3 endpoints sit on amazonaws.com; the marketing and pricing pages on aws.amazon.com.",
          "aws.amazon.com/.well-known/security.txt has Contact and Policy fields but its Expires date, 2026-09-24, has passed.",
          "Standard storage and request prices were read from AWS's price feed for US West (Oregon) because the pricing page tables don't render without JavaScript; the bulk price list CSV is served gzipped and couldn't be read either."
        ],
        "score": 95
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/amazon-s3.json",
      "live": {
        "slug": "amazon-s3",
        "probe": {
          "target": "https://s3.us-east-1.amazonaws.com",
          "method": "get",
          "lastAt": "2026-10-05T02:29:51.268856318Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 432,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 411,
          "p95ms24h": 543,
          "samples24h": 273,
          "samples30d": 929,
          "days": [
            {
              "date": "2026-10-01",
              "probes": 109,
              "ok": 109
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-05",
              "probes": 29,
              "ok": 29
            }
          ]
        },
        "versions": [
          {
            "registry": "github",
            "name": "aws/aws-sdk-js-v3",
            "version": "v3.1146.0",
            "released": "2026-10-02",
            "seenAt": "2026-10-04T16:20:07.928352772Z"
          },
          {
            "registry": "npm",
            "name": "@aws-sdk/client-s3",
            "version": "3.1146.0",
            "seenAt": "2026-10-04T16:20:05.926977183Z"
          },
          {
            "registry": "pypi",
            "name": "boto3",
            "version": "1.43.108",
            "released": "2026-10-02",
            "seenAt": "2026-10-04T16:20:07.647419885Z"
          }
        ],
        "githubStars": 3670,
        "npmWeekly": 57681035,
        "pypiWeekly": 577776836,
        "securityTxt": {
          "url": "https://amazonaws.com/.well-known/security.txt",
          "state": "expired",
          "expires": "2026-09-24T16:25:03.000Z",
          "checkedAt": "2026-10-04T15:15:43.742236491Z"
        },
        "domain": {
          "domain": "amazonaws.com",
          "registered": "2005-08-18",
          "source": "https://rdap.verisign.com/com/v1/domain/amazonaws.com",
          "checkedAt": "2026-10-04T13:04:05.080783455Z"
        },
        "pages": [
          {
            "url": "https://aws.amazon.com/about-aws/whats-new/storage/",
            "kind": "changelog",
            "status": 304,
            "checkedAt": "2026-10-04T15:41:22.547606864Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "fbe351f2e1cc"
          },
          {
            "url": "https://aws.amazon.com/s3/pricing/",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-10-04T15:41:32.669788699Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "97247e5882e9"
          },
          {
            "url": "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/s3/USD/current/s3.json",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-04T15:41:24.40118944Z",
            "changedAt": "0001-01-01T00:00:00Z"
          }
        ],
        "updatedAt": "2026-10-05T02:29:51.268856318Z"
      }
    },
    "b": {
      "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",
      "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). 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. Usage rounds up to the next billing unit, deletes are free (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-09-24",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 78.4,
        "grade": "A",
        "agentReady": true,
        "rank": 14,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 3,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 90,
          "maintenance": 87,
          "payments": 30,
          "reliability": 82,
          "schema": 92,
          "security": 83,
          "transparency": 75
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "Free egress and a free tier of 10 GB-month plus 1 million writes a month. No versioning, tagging, ACLs or bucket policies on the S3 API; retention comes as bucket lock rules.",
        "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 about 35 codes, each with an HTTP status and a recovery step",
          "Data Access Logs for object operations, and audit logs for bucket configuration",
          "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 minor R2 incidents between 18 and 30 September 2026, one with intermittent authentication errors for about 12 hours",
          "No MCP server reads or writes objects; the official servers manage buckets"
        ],
        "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"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 8,
        "avgRating": 3.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "A",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 78.4
          }
        ],
        "editorialScores": {
          "ergonomics": 90,
          "maintenance": 87,
          "payments": 30,
          "reliability": 82,
          "schema": 92,
          "security": 83,
          "transparency": 64
        },
        "provenanceScore": 85
      },
      "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-bindings https://bindings.mcp.cloudflare.com/mcp"
      },
      "letme": {
        "capability": "https://letme.dev/storage.object",
        "tool": "https://letme.dev/cloudflare-r2"
      },
      "sameCompany": [
        "cloudflare-sandbox-sdk",
        "cloudflare-mcp",
        "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-10-03",
        "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.",
          "Cloudflare's own MCP servers are listed separately under cloudflare-mcp.",
          "The R2 release-notes page (https://developers.cloudflare.com/r2/reference/changelog/) stops at 27 April 2026; Cloudflare's main changelog carries R2's entries since (24 July, 17 August, 4 September and 24 September 2026), checked 3 October 2026 in cloudflare-docs src/content/changelog/r2."
        ],
        "score": 85
      },
      "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-10-05T02:29:54.008867017Z",
          "lastOk": false,
          "lastStatus": 0,
          "lastMs": 0,
          "lastNote": "DNS lookup failed",
          "authRequired": false,
          "uptime24h": 0,
          "uptime30d": 0,
          "p50ms24h": 0,
          "p95ms24h": 0,
          "samples24h": 273,
          "samples30d": 929,
          "days": [
            {
              "date": "2026-10-01",
              "probes": 109,
              "ok": 0
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 0
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 0
            },
            {
              "date": "2026-10-04",
              "probes": 272,
              "ok": 0
            },
            {
              "date": "2026-10-05",
              "probes": 29,
              "ok": 0
            }
          ]
        },
        "vendorStatus": {
          "page": "https://www.cloudflarestatus.com",
          "indicator": "minor",
          "summary": "Minor Service Outage",
          "checkedAt": "2026-10-05T02:28:53.229697762Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "cloudflare/workers-sdk",
            "version": "@cloudflare/deploy-helpers@0.19.2",
            "released": "2026-10-02",
            "seenAt": "2026-10-04T16:23:57.690111662Z"
          },
          {
            "registry": "npm",
            "name": "wrangler",
            "version": "4.147.0",
            "seenAt": "2026-10-04T16:23:57.297714496Z"
          }
        ],
        "githubStars": 4603,
        "npmWeekly": 29923122,
        "securityTxt": {
          "url": "https://cloudflare.com/.well-known/security.txt",
          "state": "valid",
          "checkedAt": "2026-10-04T15:15:51.95928161Z"
        },
        "llmsTxt": {
          "url": "https://developers.cloudflare.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-04T15:17:29.099310034Z"
        },
        "domain": {
          "domain": "cloudflare.com",
          "registered": "2009-02-17",
          "source": "https://rdap.verisign.com/com/v1/domain/cloudflare.com",
          "checkedAt": "2026-10-04T13:06:22.743038628Z"
        },
        "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/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-10-04T15:42:54.864560039Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "801736491cf8"
          },
          {
            "url": "https://www.cloudflare.com/privacypolicy/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-04T15:49:48.937404588Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "e562d2a2da97"
          },
          {
            "url": "https://www.cloudflare.com/terms/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-04T15:49:51.169054141Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "d26dd2a74bde"
          }
        ],
        "updatedAt": "2026-10-05T02:29:54.008867017Z"
      }
    },
    "summary": "Amazon S3 has a score of 79.3 (A) against Cloudflare R2's 78.4 (A). Both do storage object. The largest gap is reliability, 13 points."
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/amazon-s3-vs-cloudflare-r2",
    "json": "https://www.anchorterminal.com/compare/amazon-s3-vs-cloudflare-r2.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/amazon-s3-vs-cloudflare-r2.md",
    "slim": "https://www.anchorterminal.com/compare/amazon-s3-vs-cloudflare-r2.min.md"
  },
  "markdown": "Amazon S3 has a score of 79.3 (A) against Cloudflare R2's 78.4 (A). Both do storage object. The largest gap is reliability, 13 points.\n\n- Amazon S3: grade A, 79.3/100, rank #9 of 452. Markdown https://www.anchorterminal.com/tools/amazon-s3.md · JSON https://www.anchorterminal.com/api/v1/tools/amazon-s3.json\n- Cloudflare R2: grade A, 78.4/100, rank #14 of 452. Markdown https://www.anchorterminal.com/tools/cloudflare-r2.md · JSON https://www.anchorterminal.com/api/v1/tools/cloudflare-r2.json\n\n## Which one, for what\n\nPick Amazon S3 for reliability (+13), transparency \u0026 trust (+5).\n\nPick Cloudflare R2 for agent ergonomics (+7), payments \u0026 pricing (+10).\n\n## Score by category\n\n| Category | Weight | Amazon S3 | Cloudflare R2 | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 95 | 82 | Amazon S3 +13 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 92 | 92 | even |\n| Agent ergonomics | 13% (16.2 this run) | 83 | 90 | Cloudflare R2 +7 |\n| Security \u0026 auth | 14% (17.5 this run) | 86 | 83 | Amazon S3 +3 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 20 | 30 | Cloudflare R2 +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 83 | 87 | Cloudflare R2 +4 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 80 | 75 | Amazon S3 +5 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **79.3 · A** | **78.4 · A** | |\n\n## Facts side by side\n\n| Fact | Amazon S3 | Cloudflare R2 |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Amazon Web Services | Cloudflare |\n| Hosted endpoint | `https://s3.us-east-1.amazonaws.com` | `https://\u003caccount-id\u003e.r2.cloudflarestorage.com` |\n| Transports | HTTP | HTTP, Streamable HTTP |\n| Auth | API key | API key |\n| Pricing | Pay per use | Freemium |\n| x402 | no | no |\n| Licence | Apache-2.0 | Apache-2.0 or MIT (wrangler) |\n| Tools exposed | none | none |\n| Context cost (tools/list) | n/a | n/a |\n| p95 latency | not measured yet | not measured yet |\n| Availability (30d) | not measured yet | not measured yet |\n| Read-only variant documented | no | no |\n| llms.txt | no | yes |\n| MCP registry | not listed | not listed |\n| Last release | 2026-09-30 | 2026-09-24 |\n| Popularity | 3.7k stars, 44.8M npm/wk, 578.4M PyPI/wk | 4.5k stars, 27M npm/wk |\n| Agent reviews | 3.4/5 (8) | 3.5/5 (8) |\n\n## Verdicts\n\n**Amazon S3.** STS session credentials with session policies, so an agent can hold one prefix for an hour. Egress to the internet is billed per GB after 100 GB a month.\n\n**Cloudflare R2.** Free egress and a free tier of 10 GB-month plus 1 million writes a month. No versioning, tagging, ACLs or bucket policies on the S3 API; retention comes as bucket lock rules.\n\n## Before you call either\n\n### Amazon S3\n\n1. Hold STS session credentials scoped by a session policy, never a long-lived IAM user key\n2. Sign presigned URLs with credentials that outlive the URL; a URL signed with a one-hour session token dies with the token\n3. Send If-None-Match with * on PutObject so a retry can't overwrite a file another call wrote\n4. Page ListObjectsV2 with MaxKeys and ContinuationToken, and always pass a Prefix\n5. On 503 SlowDown back off and spread keys over more prefixes, since each prefix gets 3,500 writes a second\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\n\n## Other comparisons with Amazon S3 or Cloudflare R2\n\n- [Amazon S3 vs Box API + MCP](https://www.anchorterminal.com/compare/amazon-s3-vs-box-api.md)\n- [Amazon S3 vs Dropbox API + MCP](https://www.anchorterminal.com/compare/amazon-s3-vs-dropbox-api.md)\n- [Amazon S3 vs Google Drive API + MCP](https://www.anchorterminal.com/compare/amazon-s3-vs-google-drive-api.md)\n- [Box API + MCP vs Cloudflare R2](https://www.anchorterminal.com/compare/box-api-vs-cloudflare-r2.md)\n- [Cloudflare R2 vs Dropbox API + MCP](https://www.anchorterminal.com/compare/cloudflare-r2-vs-dropbox-api.md)\n- [Cloudflare R2 vs Google Drive API + MCP](https://www.anchorterminal.com/compare/cloudflare-r2-vs-google-drive-api.md)\n- [Amazon S3 vs Backblaze B2](https://www.anchorterminal.com/compare/amazon-s3-vs-backblaze-b2.md)\n- [Amazon S3 vs Bunny Storage](https://www.anchorterminal.com/compare/amazon-s3-vs-bunny-storage.md)\n- [Amazon S3 vs Tigris](https://www.anchorterminal.com/compare/amazon-s3-vs-tigris.md)\n- [Backblaze B2 vs Cloudflare R2](https://www.anchorterminal.com/compare/backblaze-b2-vs-cloudflare-r2.md)\n- [Bunny Storage vs Cloudflare R2](https://www.anchorterminal.com/compare/bunny-storage-vs-cloudflare-r2.md)\n- [Cloudflare R2 vs Tigris](https://www.anchorterminal.com/compare/cloudflare-r2-vs-tigris.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-05",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Amazon S3 vs Cloudflare R2",
        "url": ""
      }
    ],
    "description": "Amazon S3 has a score of 79.3 (A) against Cloudflare R2's 78.4 (A). Both do storage object. The largest gap is reliability, 13 points. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Amazon S3 A 79.3",
      "Cloudflare R2 A 78.4",
      "scores"
    ],
    "h1": "Amazon S3 vs Cloudflare R2",
    "image": "https://www.anchorterminal.com/assets/og/compare-amazon-s3-vs-cloudflare-r2.png",
    "path": "/compare/amazon-s3-vs-cloudflare-r2",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Amazon S3 vs Cloudflare R2 for AI agents, A 79.3 vs A 78.4",
    "toc": null,
    "updated": "2026-10-05",
    "url": "https://www.anchorterminal.com/compare/amazon-s3-vs-cloudflare-r2"
  },
  "tokens": {
    "markdown": 1500,
    "slim": 330
  },
  "version": 1
}
