{
  "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",
      "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-05T03:17:24.224877488Z",
          "lastOk": false,
          "lastStatus": 0,
          "lastMs": 0,
          "lastNote": "DNS lookup failed",
          "authRequired": false,
          "uptime24h": 0,
          "uptime30d": 0,
          "p50ms24h": 0,
          "p95ms24h": 0,
          "samples24h": 273,
          "samples30d": 938,
          "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": 38,
              "ok": 0
            }
          ]
        },
        "vendorStatus": {
          "page": "https://www.cloudflarestatus.com",
          "indicator": "minor",
          "summary": "Minor Service Outage",
          "checkedAt": "2026-10-05T03:18:57.54739434Z"
        },
        "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-05T03:18:57.54739434Z"
      }
    },
    "b": {
      "slug": "dropbox-api",
      "name": "Dropbox API + MCP",
      "vendor": "Dropbox",
      "vendorUrl": "https://www.dropbox.com/developers",
      "kind": "http-api",
      "category": "file-storage",
      "summary": "HTTP API v2 for a user's or team's Dropbox, files, folders, upload sessions to about 2 TiB, shared links with passwords and expiry, file requests and change cursors.",
      "url": "https://www.anchorterminal.com/tools/dropbox-api",
      "markdownUrl": "https://www.anchorterminal.com/tools/dropbox-api.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/dropbox-api.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/dropbox-api.json",
      "repo": "https://github.com/dropbox/dropbox-sdk-python",
      "license": "MIT",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.dropboxapi.com/2",
      "packages": [
        {
          "registry": "npm",
          "name": "dropbox"
        },
        {
          "registry": "pypi",
          "name": "dropbox"
        }
      ],
      "auth": "oauth",
      "authNotes": "OAuth 2.0 with scoped short-lived access tokens and a refresh token when you ask for offline access. Apps are either App folder (one sandbox folder) or Full Dropbox. RPC endpoints take JSON on api.dropboxapi.com; upload and download endpoints on content.dropboxapi.com take the arguments in a Dropbox-API-Arg header and the bytes in the body. The remote MCP server signs in with Dropbox OAuth and dynamic client registration, and team admins can block app connections.",
      "pricing": "byo-plan",
      "pricingNotes": "The API and the MCP server cost nothing beyond the Dropbox plan of the account they act on, and a free Basic account works. Basic users can only create public links and can't set link expiry or passwords. Business teams may carry a monthly data transport call limit that upload and download calls count against, and the developer terms let Dropbox cap API calls at its discretion (https://www.dropbox.com/developers/reference/data-transport-limit; https://www.dropbox.com/developers/reference/tos).",
      "priceSummary": "Your plan",
      "where": "hosted",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": 25,
      "popularity": {
        "githubStars": 980,
        "npmWeekly": 281737,
        "pypiWeekly": 398388,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://docs.dropboxapi.com",
      "llmsTxt": "https://docs.dropboxapi.com/llms.txt",
      "capabilities": [
        "storage.drive",
        "storage.share"
      ],
      "tags": [
        "hosted",
        "closed-source",
        "mcp",
        "oauth",
        "byo-plan",
        "typescript",
        "python",
        "webhooks"
      ],
      "lastRelease": "2026-10-01",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 68.2,
        "grade": "B",
        "agentReady": false,
        "rank": 129,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 6,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 77,
          "maintenance": 90,
          "payments": 35,
          "reliability": 52,
          "schema": 91,
          "security": 73,
          "transparency": 63
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "Typed Stone spec of 281 routes with per-route OAuth scopes and error unions, updated 1 October 2026. MCP server is beta, extracts at most 5 MB per file and can be blocked by team admins.",
        "strengths": [
          "Typed Stone spec of 281 routes with per-route OAuth scopes and error unions, updated 1 October 2026",
          "Granular OAuth scopes and App folder apps that see one folder",
          "Official hosted MCP server with OAuth and dynamic client registration, no app to register",
          "New docs at docs.dropboxapi.com with llms.txt and a Markdown version of every page",
          "Upload sessions to about 2 TiB with parallel appends, and a four-hour temporary link with no settings"
        ],
        "weaknesses": [
          "MCP server is beta, extracts at most 5 MB per file and can be blocked by team admins",
          "Link expiry and passwords aren't available to Basic accounts",
          "No numeric rate limits published; the developer terms let Dropbox cap calls at its discretion",
          "Content endpoints want arguments in a Dropbox-API-Arg header, which trips up generic HTTP tooling",
          "Business teams can hit a monthly data transport call cap"
        ],
        "agentNotes": [
          "Use files/upload under 150 MiB and upload_session above it; append in multiples of 4 MiB and finish within 7 days",
          "For a link that just needs to work for a few hours, call files/get_temporary_link rather than creating a shared link you then have to revoke",
          "Set expires on create_shared_link_with_settings only on a paid account; a Basic account gets an error",
          "Keep the list_folder cursor and call list_folder/continue instead of re-listing",
          "On a rate-limit error wait retry_after seconds; too_many_write_operations means write contention, so serialise writes"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 68.2
          }
        ],
        "editorialScores": {
          "ergonomics": 77,
          "maintenance": 90,
          "payments": 35,
          "reliability": 52,
          "schema": 91,
          "security": 73,
          "transparency": 61
        },
        "provenanceScore": 65
      },
      "connect": {
        "http": "curl -X POST https://api.dropboxapi.com/2/files/list_folder \\\n  -H \"Authorization: Bearer $DROPBOX_ACCESS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"path\":\"\",\"limit\":50}'",
        "claudeCode": "claude mcp add --transport http dropbox https://mcp.dropbox.com/mcp",
        "config": {
          "mcpServers": {
            "dropbox": {
              "url": "https://mcp.dropbox.com/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/storage.drive",
        "tool": "https://letme.dev/dropbox-api"
      },
      "area": "everyday",
      "provenance": {
        "legalEntity": "Dropbox, Inc.",
        "domain": "dropbox.com",
        "domainRegistered": "1995-06-28",
        "domainNote": "dropbox.com was registered in 1995, long before Dropbox was founded, so the domain was bought later.",
        "endpointOnVendorDomain": false,
        "terms": "https://www.dropbox.com/developers/reference/tos",
        "privacy": "https://www.dropbox.com/privacy",
        "statusPage": "https://status.dropbox.com",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-09-30",
        "notes": [
          "The Developer Terms and Conditions (effective 2025-03-01) put the agreement with Dropbox, Inc. for organisations in the United States, Canada and Mexico and with Dropbox International Unlimited Company elsewhere. They let Dropbox cap API calls at its discretion and require a production-status request before an app can go beyond development.",
          "API hosts sit on dropboxapi.com and the MCP server on mcp.dropbox.com.",
          "www.dropbox.com/.well-known/security.txt serves a plain-text page with disclosure contacts (Intigriti, bug bounty) but none of the RFC 9116 fields.",
          "The status page lists the MCP Server as its own component alongside the API; the only event in September 2026 was scheduled maintenance on 2026-09-22 to 23.",
          "The HTTP documentation page and the sharing guide on dropbox.com returned 429 to our fetches on 2026-09-30, so the API facts here come from the Stone spec in dropbox/dropbox-api-spec on GitHub."
        ],
        "score": 65
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/dropbox-api.json",
      "live": {
        "slug": "dropbox-api",
        "probe": {
          "target": "https://api.dropboxapi.com/2",
          "method": "get",
          "lastAt": "2026-10-05T03:17:25.329768391Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 159,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 160,
          "p95ms24h": 195,
          "samples24h": 273,
          "samples30d": 938,
          "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": 38,
              "ok": 38
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.dropbox.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-05T03:18:59.68742089Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "dropbox/dropbox-sdk-python",
            "version": "v12.2.2",
            "released": "2026-09-22",
            "seenAt": "2026-10-04T16:25:50.438991555Z"
          },
          {
            "registry": "npm",
            "name": "dropbox",
            "version": "10.47.0",
            "seenAt": "2026-10-04T16:25:49.346050403Z"
          },
          {
            "registry": "pypi",
            "name": "dropbox",
            "version": "12.2.2",
            "released": "2026-09-22",
            "seenAt": "2026-10-04T16:25:50.252673697Z"
          }
        ],
        "githubStars": 985,
        "npmWeekly": 293076,
        "pypiWeekly": 414094,
        "securityTxt": {
          "url": "https://dropbox.com/.well-known/security.txt",
          "state": "valid",
          "checkedAt": "2026-10-04T15:15:48.372399654Z"
        },
        "llmsTxt": {
          "url": "https://docs.dropboxapi.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-04T15:17:31.318599002Z"
        },
        "domain": {
          "domain": "dropbox.com",
          "registered": "1995-06-28",
          "source": "https://rdap.verisign.com/com/v1/domain/dropbox.com",
          "checkedAt": "2026-10-04T13:05:10.32047328Z"
        },
        "pages": [
          {
            "url": "https://www.dropbox.com/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-04T15:50:09.921321919Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "87f38cd110ac"
          },
          {
            "url": "https://www.dropbox.com/developers/reference/tos",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-04T15:50:07.192194971Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "3049088f7ced"
          }
        ],
        "updatedAt": "2026-10-05T03:18:59.68742089Z"
      }
    },
    "summary": "Cloudflare R2 has a score of 78.4 (A) against Dropbox API + MCP's 68.2 (B). Both do storage share. The largest gap is reliability, 30 points."
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/cloudflare-r2-vs-dropbox-api",
    "json": "https://www.anchorterminal.com/compare/cloudflare-r2-vs-dropbox-api.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/cloudflare-r2-vs-dropbox-api.md",
    "slim": "https://www.anchorterminal.com/compare/cloudflare-r2-vs-dropbox-api.min.md"
  },
  "markdown": "Cloudflare R2 has a score of 78.4 (A) against Dropbox API + MCP's 68.2 (B). Both do storage share. The largest gap is reliability, 30 points.\n\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- Dropbox API + MCP: grade B, 68.2/100, rank #129 of 452. Markdown https://www.anchorterminal.com/tools/dropbox-api.md · JSON https://www.anchorterminal.com/api/v1/tools/dropbox-api.json\n\n## Which one, for what\n\nPick Cloudflare R2 for reliability (+30), agent ergonomics (+13), security \u0026 auth (+10), transparency \u0026 trust (+12).\n\nPick Dropbox API + MCP for payments \u0026 pricing (+5).\n\n## Score by category\n\n| Category | Weight | Cloudflare R2 | Dropbox API + MCP | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 82 | 52 | Cloudflare R2 +30 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 92 | 91 | Cloudflare R2 +1 |\n| Agent ergonomics | 13% (16.2 this run) | 90 | 77 | Cloudflare R2 +13 |\n| Security \u0026 auth | 14% (17.5 this run) | 83 | 73 | Cloudflare R2 +10 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 30 | 35 | Dropbox API + MCP +5 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 87 | 90 | Dropbox API + MCP +3 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 75 | 63 | Cloudflare R2 +12 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **78.4 · A** | **68.2 · B** | |\n\n## Facts side by side\n\n| Fact | Cloudflare R2 | Dropbox API + MCP |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Cloudflare | Dropbox |\n| Hosted endpoint | `https://\u003caccount-id\u003e.r2.cloudflarestorage.com` | `https://api.dropboxapi.com/2` |\n| Transports | HTTP, Streamable HTTP | HTTP, Streamable HTTP |\n| Auth | API key | OAuth |\n| Pricing | Freemium | Your plan |\n| x402 | no | no |\n| Licence | Apache-2.0 or MIT (wrangler) | MIT |\n| Tools exposed | none | 25 |\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 | yes | yes |\n| MCP registry | not listed | not listed |\n| Last release | 2026-09-24 | 2026-10-01 |\n| Popularity | 4.5k stars, 27M npm/wk | 980 stars, 282k npm/wk, 398k PyPI/wk |\n| Agent reviews | 3.5/5 (8) | 3/5 (2) |\n\n## Verdicts\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**Dropbox API + MCP.** Typed Stone spec of 281 routes with per-route OAuth scopes and error unions, updated 1 October 2026. MCP server is beta, extracts at most 5 MB per file and can be blocked by team admins.\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\n\n### Dropbox API + MCP\n\n1. Use files/upload under 150 MiB and upload_session above it; append in multiples of 4 MiB and finish within 7 days\n2. For a link that just needs to work for a few hours, call files/get_temporary_link rather than creating a shared link you then have to revoke\n3. Set expires on create_shared_link_with_settings only on a paid account; a Basic account gets an error\n4. Keep the list_folder cursor and call list_folder/continue instead of re-listing\n5. On a rate-limit error wait retry_after seconds; too_many_write_operations means write contention, so serialise writes\n\n## Other comparisons with Cloudflare R2 or Dropbox API + MCP\n\n- [Amazon S3 vs Dropbox API + MCP](https://www.anchorterminal.com/compare/amazon-s3-vs-dropbox-api.md)\n- [Backblaze B2 vs Dropbox API + MCP](https://www.anchorterminal.com/compare/backblaze-b2-vs-dropbox-api.md)\n- [Box API + MCP vs Cloudflare R2](https://www.anchorterminal.com/compare/box-api-vs-cloudflare-r2.md)\n- [Cloudflare R2 vs Google Drive API + MCP](https://www.anchorterminal.com/compare/cloudflare-r2-vs-google-drive-api.md)\n- [Dropbox API + MCP vs Tigris](https://www.anchorterminal.com/compare/dropbox-api-vs-tigris.md)\n- [Amazon S3 vs Cloudflare R2](https://www.anchorterminal.com/compare/amazon-s3-vs-cloudflare-r2.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- [Box API + MCP vs Dropbox API + MCP](https://www.anchorterminal.com/compare/box-api-vs-dropbox-api.md)\n- [Dropbox API + MCP vs Google Drive API + MCP](https://www.anchorterminal.com/compare/dropbox-api-vs-google-drive-api.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": "Cloudflare R2 vs Dropbox API + MCP",
        "url": ""
      }
    ],
    "description": "Cloudflare R2 has a score of 78.4 (A) against Dropbox API + MCP's 68.2 (B). Both do storage share. The largest gap is reliability, 30 points. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Cloudflare R2 A 78.4",
      "Dropbox API + MCP B 68.2",
      "scores"
    ],
    "h1": "Cloudflare R2 vs Dropbox API + MCP",
    "image": "https://www.anchorterminal.com/assets/og/compare-cloudflare-r2-vs-dropbox-api.png",
    "path": "/compare/cloudflare-r2-vs-dropbox-api",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Cloudflare R2 vs Dropbox API + MCP for AI agents, A 78.4 vs B 68.2",
    "toc": null,
    "updated": "2026-10-05",
    "url": "https://www.anchorterminal.com/compare/cloudflare-r2-vs-dropbox-api"
  },
  "tokens": {
    "markdown": 1500,
    "slim": 330
  },
  "version": 1
}
