{
  "data": {
    "a": {
      "slug": "bundle-social",
      "name": "bundle.social",
      "vendor": "BUNDLE SP. Z O.O.",
      "vendorUrl": "https://bundle.social",
      "kind": "http-api",
      "category": "social-media",
      "summary": "bundle.social is a hosted REST API from BUNDLE SP. Z O.O. in Warsaw for publishing, scheduling, commenting and reading analytics across 15 social networks. It also ships a TypeScript SDK, a CLI and a local MCP server.",
      "url": "https://www.anchorterminal.com/tools/bundle-social",
      "markdownUrl": "https://www.anchorterminal.com/tools/bundle-social.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/bundle-social.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/bundle-social.json",
      "dns": "bundle-social.grade.anchorterminal.com",
      "repo": "https://github.com/bundleglobal/bundlesocial-node",
      "license": "Proprietary hosted service under bundle.social's terms of service. The TypeScript SDK, the CLI and the MCP server on GitHub are MIT",
      "transports": [
        "http",
        "stdio"
      ],
      "remoteUrl": "https://api.bundle.social/api/v1",
      "packages": [
        {
          "registry": "npm",
          "name": "bundlesocial"
        },
        {
          "registry": "npm",
          "name": "bundlesocial-mcp"
        },
        {
          "registry": "npm",
          "name": "bundlesocial-cli"
        }
      ],
      "auth": "api-key",
      "authNotes": "Self-serve organisation API key sent in the `x-api-key` header, created and rolled in the dashboard after a browser sign-up, up to 50 keys an organisation. Keys carry no scopes and reach every team. Connecting a social account needs a person to complete that network's OAuth consent through a hosted connect link.",
      "pricing": "freemium",
      "pricingNotes": "Free plan at $0 with 20 posts a month, three teams and API access, no payment details needed. Pro is $100 a month for 10,000 posts and Business $400 for 100,000, both with unlimited connected accounts. Enterprise is quoted. X actions are charged from prepaid credit at X's rates (https://bundle.social/pricing.md).",
      "priceSummary": "$100 / mo",
      "where": "both",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in llms.txt, pricing.md, the docs index or the OpenAPI description in the SDK repository (checked 2026-10-09).",
        "endpoints": []
      },
      "toolCount": 68,
      "popularity": {
        "githubStars": 2,
        "npmWeekly": 4095,
        "pypiWeekly": null,
        "asOf": "2026-10-09"
      },
      "docsUrl": "https://info.bundle.social",
      "llmsTxt": "https://bundle.social/llms.txt",
      "openapi": "https://api.bundle.social/swagger-json",
      "capabilities": [
        "social.post",
        "social.schedule",
        "social.analytics",
        "social.comments",
        "social.media-upload"
      ],
      "tags": [
        "hosted",
        "freemium",
        "free-tier",
        "no-card",
        "api-key",
        "openapi",
        "llms-txt",
        "mcp",
        "cli",
        "typescript",
        "webhooks",
        "status-page"
      ],
      "lastRelease": "2026-10-30",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 58,
        "grade": "C",
        "agentReady": false,
        "rank": 769,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 3,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 66,
          "maintenance": 78,
          "payments": 35,
          "reliability": 67,
          "schema": 86,
          "security": 34,
          "transparency": 66
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-04"
        },
        "negative": -3,
        "negativeNotes": [
          "2026-11-02. The changelog says YouTube uploads \"are now capped per organization per day\", failing with `YT:orgDailyUploadLimit` and not retried, a cap whose size isn't published. Uploads that worked under the per-account limits now fail once the organisation cap is reached, announced the day it applied. The 10 October change to what `count` means on Google review imports, announced the same day, folds into this term. -3. https://info.bundle.social/changelog.md"
        ],
        "verdict": "The REST API has a public OpenAPI 3.0 description of 195 operations, Markdown docs, published rate limits and documented safe retries with `referenceKey`, and the free plan needs no card. Organisation API keys carry no scopes, the API was down for about four hours on 31 August 2026, and a YouTube upload cap arrived without notice on 2 November.",
        "bestFor": "A SaaS product or agent that manages many accounts for many customers, since paid plans do not charge per connected account and teams separate tenants.",
        "strengths": [
          "OpenAPI 3.0.2 description with 195 operations, each with a description, plus llms.txt, llms-full.txt and Markdown copies of every docs page",
          "Paid plans are priced per organisation with no fee per connected account. The free plan covers 20 posts a month and needs no payment details",
          "Rate limits are published as three windows (100 a second, 500 per 10 seconds, 2,000 a minute), counted per endpoint for API keys",
          "A `referenceKey` on a post is unique per organisation, and the docs say a retry after a timeout can't create the post twice",
          "Valid security.txt and a disclosure policy that promises acknowledgement within 3 business days"
        ],
        "weaknesses": [
          "API keys are organisation-wide with no scopes or read-only mode found, so one key reaches every team and connected account",
          "The status page records the primary database unavailable and API requests failing from 02:00 to 06:00 UTC on 31 August 2026",
          "On 2 November 2026 YouTube uploads gained an organisation-wide daily cap, announced that day, whose size isn't published",
          "The DPA is sent on request only, and no sub-processor list or certification was found",
          "One official SDK (TypeScript). The MCP server is local stdio only, with 68 tools and no toolsets"
        ],
        "agentNotes": [
          "Send the key in the `x-api-key` header to `https://api.bundle.social/api/v1`. A missing key returns 401 and a bad key 403",
          "Pass `teamId` on most calls. Set `BUNDLESOCIAL_TEAM_ID` for the MCP server or CLI when the organisation has more than one team",
          "Set a `referenceKey` on each post. A retry with the same key answers 409, so fetch the existing post instead of creating it again",
          "Check `GET /api/v1/organization/usage/daily-limits` before bulk scheduling. Failed and deleted posts still count against the monthly quota",
          "A person must complete each network's OAuth consent in a browser. Keep prepaid credit for X, where a post costs $0.015 or $0.20 with a link",
          "Expect `YT:orgDailyUploadLimit` once the organisation's daily YouTube cap is reached. It resets at midnight Pacific Time and isn't retried automatically"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 3.3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 58
          }
        ],
        "editorialScores": {
          "ergonomics": 66,
          "maintenance": 78,
          "payments": 35,
          "reliability": 67,
          "schema": 86,
          "security": 34,
          "transparency": 44
        },
        "provenanceScore": 87,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-04",
            "maintenance": "2026-11-04",
            "payments": "2026-11-04",
            "reliability": "2026-11-04",
            "schema": "2026-11-04",
            "security": "2026-11-04",
            "transparency": "2026-11-04"
          },
          "last": "2026-11-04",
          "lastMoved": "2026-11-04",
          "oldest": "2026-11-04",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "npm install bundlesocial",
        "http": "curl \"https://api.bundle.social/api/v1/team\" -H \"x-api-key: $BUNDLE_SOCIAL_API_KEY\"",
        "claudeCode": "claude mcp add bundlesocial --env BUNDLESOCIAL_API_KEY=sk_live_... -- npx -y bundlesocial-mcp",
        "config": {
          "mcpServers": {
            "bundlesocial": {
              "args": [
                "-y",
                "bundlesocial-mcp"
              ],
              "command": "npx",
              "env": {
                "BUNDLESOCIAL_API_KEY": "sk_live_..."
              }
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/social.post",
        "tool": "https://letme.dev/bundle-social"
      },
      "area": "communication",
      "unitPrices": [
        {
          "item": "Pro plan",
          "unit": "month",
          "usd": 100,
          "note": "10,000 posts a month, unlimited connected accounts"
        },
        {
          "item": "Business plan",
          "unit": "month",
          "usd": 400,
          "note": "100,000 posts a month"
        },
        {
          "item": "X post",
          "unit": "tx",
          "usd": 0.015,
          "note": "X's charge passed through, from prepaid credit"
        },
        {
          "item": "X post with a link",
          "unit": "tx",
          "usd": 0.2,
          "note": "X's charge passed through"
        }
      ],
      "provenance": {
        "legalEntity": "BUNDLE SP. Z O.O.",
        "domain": "bundle.social",
        "domainRegistered": "2023-09-17",
        "endpointOnVendorDomain": true,
        "terms": "https://bundle.social/terms",
        "privacy": "https://bundle.social/privacy",
        "statusPage": "https://bundlesocial.betteruptime.com/",
        "changelog": "https://info.bundle.social/changelog",
        "securityTxt": "valid",
        "checked": "2026-11-04",
        "notes": [
          "The terms (last updated 14 July 2026) name BUNDLE SP. Z O.O., ul. Hoża 86 / 410, 00-682 Warsaw, KRS 0001103308, and say they govern the website, dashboard and API. Polish law applies.",
          "The privacy policy (last updated 2 July 2026) covers the same Service and says the company is a processor for customer content and connected account data.",
          "security.txt at bundle.social/.well-known/security.txt expires on 3 May 2027 (read 4 November 2026) and gives a contact address, the contact page and https://bundle.social/trust as its policy.",
          "RDAP gives a registration date of 2023-09-17 for bundle.social.",
          "The status page is on Better Stack's betteruptime.com domain. The API answers at api.bundle.social and the docs at info.bundle.social."
        ],
        "score": 87
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/bundle-social.json",
      "live": {
        "slug": "bundle-social",
        "probe": {
          "target": "https://api.bundle.social/api/v1",
          "method": "get",
          "lastAt": "2026-11-08T01:01:23.572837406Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 198,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 99.99,
          "p50ms24h": 341,
          "p95ms24h": 2426,
          "samples24h": 244,
          "samples30d": 7272,
          "days": [
            {
              "date": "2026-10-09",
              "probes": 85,
              "ok": 85
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 255
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 250
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-28",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-29",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-30",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-31",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-11-01",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-11-02",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-11-03",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-11-04",
              "probes": 246,
              "ok": 246
            },
            {
              "date": "2026-11-05",
              "probes": 185,
              "ok": 185
            },
            {
              "date": "2026-11-06",
              "probes": 241,
              "ok": 241
            },
            {
              "date": "2026-11-07",
              "probes": 243,
              "ok": 243
            },
            {
              "date": "2026-11-08",
              "probes": 11,
              "ok": 11
            }
          ]
        },
        "vendorStatus": {
          "page": "https://bundlesocial.betteruptime.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-11-08T00:30:47.599957815Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "bundleglobal/bundlesocial-node",
            "version": "v2.70.0",
            "released": "2026-11-04",
            "seenAt": "2026-11-08T00:42:06.493161461Z"
          },
          {
            "registry": "npm",
            "name": "bundlesocial",
            "version": "2.70.0",
            "seenAt": "2026-11-08T00:41:58.410842717Z"
          },
          {
            "registry": "npm",
            "name": "bundlesocial-cli",
            "version": "1.2.3",
            "seenAt": "2026-11-08T00:42:00.619535615Z"
          },
          {
            "registry": "npm",
            "name": "bundlesocial-mcp",
            "version": "1.2.3",
            "seenAt": "2026-11-08T00:41:59.329991293Z"
          }
        ],
        "githubStars": 2,
        "npmWeekly": 7869,
        "securityTxt": {
          "url": "https://bundle.social/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-05-06T20:33:50.778Z",
          "checkedAt": "2026-11-07T16:00:28.043542996Z"
        },
        "llmsTxt": {
          "url": "https://bundle.social/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:31:45.274741043Z"
        },
        "domain": {
          "domain": "bundle.social",
          "registered": "2023-09-17",
          "source": "https://rdap.identitydigital.services/rdap/domain/bundle.social",
          "checkedAt": "2026-11-01T14:17:30.240813669Z"
        },
        "pages": [
          {
            "url": "https://info.bundle.social/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:11:31.390785589Z",
            "changedAt": "2026-11-05T12:34:58.234815833Z",
            "fingerprint": "12a370f9232f"
          },
          {
            "url": "https://info.bundle.social/changelog.md",
            "kind": "deprecations",
            "status": 200,
            "checkedAt": "2026-11-07T14:11:35.519997187Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "11c176f60d85"
          },
          {
            "url": "https://bundle.social/pricing.md",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-11-07T14:00:35.482311006Z",
            "changedAt": "2026-10-29T04:59:36.450751538Z",
            "fingerprint": "fcf83dbe39ae"
          },
          {
            "url": "https://bundle.social/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:00:37.613922182Z",
            "changedAt": "2026-11-04T08:16:04.18670759Z",
            "fingerprint": "068a22773304"
          },
          {
            "url": "https://bundle.social/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:00:39.65696105Z",
            "changedAt": "2026-11-04T08:16:06.473617446Z",
            "fingerprint": "bb7183644f4e"
          }
        ],
        "github": {
          "repo": "bundleglobal/bundlesocial-node",
          "checkedAt": "2026-11-02T08:37:13.168375331Z",
          "stars": 2,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-10-30T11:33:24Z",
          "openIssues": 1,
          "openPRs": 0,
          "issuesOpened90d": 0,
          "issuesClosed90d": 0,
          "prsMerged90d": 16,
          "ci": {
            "branch": "main",
            "runs": 50,
            "success": 50,
            "failure": 0,
            "other": 0,
            "latest": "success",
            "latestAt": "2026-10-30T11:34:25Z"
          },
          "replies": {
            "sampled": 3,
            "unanswered": 1,
            "medianDays": 2
          }
        },
        "updatedAt": "2026-11-08T01:01:23.572837406Z"
      }
    },
    "answer": "bundle.social scores 58 (C) on agent readiness against TwitterAPI.io MCP's 49.3 (D), and leads in 4 of 7 scored categories. TwitterAPI.io MCP leads on agent ergonomics and payments \u0026 pricing.",
    "b": {
      "slug": "twitterapi-io-mcp",
      "name": "TwitterAPI.io MCP",
      "vendor": "Prism Digital, LLC",
      "vendorUrl": "https://twitterapi.io",
      "kind": "mcp",
      "category": "social-media",
      "summary": "TwitterAPI.io's MCP server has 12 read-only tools for X (Twitter) posts, users, followers, replies and trends, billed per result from prepaid credits. It's a third-party data service, not X's own API.",
      "url": "https://www.anchorterminal.com/tools/twitterapi-io-mcp",
      "markdownUrl": "https://www.anchorterminal.com/tools/twitterapi-io-mcp.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/twitterapi-io-mcp.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/twitterapi-io-mcp.json",
      "dns": "twitterapi-io-mcp.grade.anchorterminal.com",
      "transports": [
        "streamable-http"
      ],
      "remoteUrl": "https://mcp.twitterapi.io/mcp",
      "packages": [],
      "auth": "mixed",
      "authNotes": "Hosted server takes OAuth or a TwitterAPI.io API key; the open-source npm package reads TWITTERAPI_IO_API_KEY. Keys come from a Google sign-in, with no X developer account.",
      "pricing": "pay-per-use",
      "pricingNotes": "Billed per result, minimum $0.00015 a request: tweet by ID $0.00015, user profile $0.00018, followers from $0.01 per 1,000. Up to $1 in free credits with no card; subscriptions add bonus credits (checked 2026-11-07).",
      "priceSummary": "$0.0001 / call",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 on the MCP docs or pricing page (checked 2026-11-07).",
        "endpoints": []
      },
      "toolCount": 12,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-07"
      },
      "docsUrl": "https://twitterapi.io/twitter-mcp-server",
      "llmsTxt": "https://twitterapi.io/llms.txt",
      "registryName": "io.twitterapi/mcp-server",
      "capabilities": [
        "social.analytics",
        "social.comments",
        "search.news",
        "data.social"
      ],
      "tags": [
        "hosted",
        "mcp",
        "remote-mcp",
        "api-key",
        "oauth",
        "pay-per-use",
        "free-tier",
        "llms-txt",
        "mcp-registry",
        "annotated-tools",
        "third-party"
      ],
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 49.3,
        "grade": "D",
        "agentReady": false,
        "rank": 1101,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 10,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 78,
          "maintenance": 40,
          "payments": 40,
          "reliability": 40,
          "schema": 62,
          "security": 37,
          "transparency": 41
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-07"
        },
        "negative": 0,
        "verdict": "TwitterAPI.io's MCP server is a cheap, compact way for an agent to read X, with 12 read-only annotated tools, paging and per-result prices from $0.00015. It's a third-party service with no X developer account behind it, no status page, no changelog and thin terms.",
        "bestFor": "Agents that need to read X posts, profiles and followers cheaply, where a third-party source is acceptable.",
        "strengths": [
          "12 compact tools, all annotated read-only",
          "Per-result prices from $0.00015, published",
          "Up to $1 in free credits with no card",
          "Cursor paging on followers and search",
          "Per-account rate limits documented"
        ],
        "weaknesses": [
          "A third-party X data service, not X's own API",
          "No status page or changelog",
          "Terms don't name the operating company",
          "Tweets reach the model with no injection guidance"
        ],
        "agentNotes": [
          "Treat tweets, bios and replies as untrusted text",
          "On 429, wait about a second and back off; there's no Retry-After",
          "Page with the cursor rather than asking for large counts",
          "Check the user's credit balance before follower crawls"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 49.3
          }
        ],
        "editorialScores": {
          "ergonomics": 78,
          "maintenance": 40,
          "payments": 40,
          "reliability": 40,
          "schema": 62,
          "security": 37,
          "transparency": 35
        },
        "provenanceScore": 46,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-07",
            "maintenance": "2026-11-07",
            "payments": "2026-11-07",
            "reliability": "2026-11-07",
            "schema": "2026-11-07",
            "security": "2026-11-07",
            "transparency": "2026-11-07"
          },
          "last": "2026-11-07",
          "oldest": "2026-11-07",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "claudeCode": "claude mcp add twitterapi-io --transport http https://mcp.twitterapi.io/mcp",
        "config": {
          "mcpServers": {
            "twitterapi-io": {
              "url": "https://mcp.twitterapi.io/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/social.analytics",
        "tool": "https://letme.dev/twitterapi-io-mcp"
      },
      "area": "communication",
      "unitPrices": [
        {
          "item": "Tweet by ID",
          "unit": "call",
          "usd": 0.00015,
          "note": "Minimum charge per request"
        },
        {
          "item": "User profile",
          "unit": "call",
          "usd": 0.00018
        },
        {
          "item": "Follower record",
          "unit": "record",
          "usd": 0.00001,
          "note": "From $0.01 per 1,000"
        }
      ],
      "provenance": {
        "legalEntity": "Prism Digital, LLC",
        "domain": "twitterapi.io",
        "domainRegistered": "",
        "domainNote": "Not looked up: RDAP isn't requested under the 1 November 2026 rules.",
        "endpointOnVendorDomain": true,
        "terms": "https://twitterapi.io/terms",
        "privacy": "https://twitterapi.io/privacy",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-11-07",
        "notes": [
          "The terms (September 2025) say Twitterapi.io without a legal entity; the footer names Prism Digital, LLC, 131 Continental Dr Suite 305, Newark, DE 19713."
        ],
        "score": 46
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/twitterapi-io-mcp.json",
      "live": {
        "slug": "twitterapi-io-mcp",
        "probe": {
          "target": "https://mcp.twitterapi.io/mcp",
          "method": "mcp-initialize",
          "lastAt": "2026-11-08T00:56:11.203515911Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 56,
          "lastNote": "initialize answered",
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 82,
          "p95ms24h": 164,
          "samples24h": 63,
          "samples30d": 63,
          "days": [
            {
              "date": "2026-11-07",
              "probes": 53,
              "ok": 53
            },
            {
              "date": "2026-11-08",
              "probes": 10,
              "ok": 10
            }
          ]
        },
        "updatedAt": "2026-11-08T00:56:11.203515911Z"
      }
    },
    "edges": [
      {
        "by": 38,
        "category": "maintenance",
        "leads": "bundle-social",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "The changelog's newest entry is 3 November 2026 and the `bundlesocial` SDK reached 2.69.0 on 30 October 2026 (30). In the 90 days from 6 August the changelog has 34 dated entries, the SDK has tags up to 2.69.0 (2.66.1, 2.67.0, 2.68.0 and 2.69.0 since 9 October) and the MCP server and CLI each released 1.2.1 (13 October) and 1.2.2 (20 October) (20). Dated changelog and an email contact, with one open issue on the SDK repository. No community channel was verified (8). The TypeScript SDK is regenerated from the OpenAPI description. The MCP server is still not in the official registry and its server.json still says 1.0.0 against package 1.2.2 (12). Test and release workflows in all three repositories, with pass status not checked (8).",
          "b": "Registry entry io.twitterapi/mcp-server updated 6 November 2026 (30). No dated changelog (0). Support channel not checked (0 of 15). Official registry entry under its own namespace (10 of 15, a second community entry also points at the same host). No package health read (0). 30 + 0 + 0 + 10 + 0 = 40. Registry presence read from Anchor Terminal's own daily import of the official MCP registry (/api/v1/registry.json, 6 November 2026), not the registry's API."
        },
        "scores": {
          "a": 78,
          "b": 40
        }
      },
      {
        "by": 27,
        "category": "reliability",
        "leads": "bundle-social",
        "name": "Reliability",
        "reasons": {
          "a": "Graded as a hosted API. Better Stack status page with two components and 90 days of history (20). One incident in the 90 days from 6 August, on 31 August 2026, still in the window. Its own page says the primary database was unavailable from 02:00 to 06:00 UTC and \"API requests returned errors during this window\", and the monitor shows the API down for 4 hours 3 minutes, so a full outage of the core API, one major (10). No incident is posted for September to November, and the API shows 99.810 per cent uptime. Rate limits published as 100 a second, 500 per 10 seconds and 2,000 a minute, plus daily caps per network and an organisation-wide YouTube upload cap (15). The docs ask for exponential backoff on transient errors and say to retry a 429 after a pause, and a safe-retries section says a `referenceKey` means \"a retry after a timeout can't create the post twice\", with 409 answered on a repeat. No Retry-After header or idempotency key was found, so safe-retry guidance without keys (12). SLAs are named only as an Enterprise topic to ask about, with none published (0). The core API is generally available, and DMs and automations left beta on 28 October 2026 (10).",
          "b": "No status page found (0). No incident history (5). Per-account QPS limits documented by tier (15). 'Hitting the ceiling returns an HTTP 429 (no Retry-After header is sent). Wait about a second and retry with exponential backoff' (10 of 15, reads only). No SLA; the terms disclaim uninterrupted service (0). Not labelled beta (10). 0 + 5 + 15 + 10 + 0 + 10 = 40."
        },
        "scores": {
          "a": 67,
          "b": 40
        }
      },
      {
        "by": 25,
        "category": "transparency",
        "leads": "bundle-social",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "Closed service under terms dated 14 July 2026 that name the API. The SDK, CLI and MCP server are MIT (15). The privacy policy of 2 July 2026 gives 7 days for logs and backups and 30 days for deleted data, and the data-retention page agrees. Customer content is not used to train third-party AI models. The DPA is on request only (18). No deprecation policy. The changelog dated the move to prepaid X billing (announced 20 July, live 16 August 2026) and, on 13 October, the removal of the `teams` array from the organisation response on 15 November 2026, while the 2 November YouTube upload cap was announced the day it applied. The terms promise notice where reasonably possible (7). No sub-processor list. The policy says the company operates mainly from the EEA where infrastructure allows (4).",
          "b": "The MCP package is MIT on npm; the service is closed under terms from September 2025 that don't name the company, which appears in the footer as Prism Digital, LLC of Newark, Delaware (15). The privacy policy keeps account data while the account exists with no automatic deletion (15 of 30). No deprecation policy (0). Subprocessors not listed in the pages read (5 of 20). 15 + 15 + 0 + 5 = 35."
        },
        "scores": {
          "a": 66,
          "b": 41
        }
      },
      {
        "by": 24,
        "category": "schema",
        "leads": "bundle-social",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "OpenAPI 3.0.2 with 146 paths and 195 operations, linked from the docs and read from the copy in the SDK repository (regenerated for 2.69.0 on 30 October 2026) (25). llms.txt, llms-full.txt, pricing.md and a Markdown copy of each docs page (10). Every operation has a description and many say when to call it (15). 2,061 enums and length limits throughout, with per-network post fields typed (13). Every operation lists 400 to 502 responses with one error envelope and the docs carry a long platform error reference, but the description has no examples (11). Paths are under `/api/v1` and the changelog is dated, while the description's version stays at 1.0.0 (12).",
          "b": "12 tools read from tools/list with JSON Schema inputs (25). llms.txt (10). Short descriptions of what each returns (10 of 20). Typed inputs with two enums (10 of 15). Examples on the docs page, errors described only as 429 (7 of 15). No changelog found (404); registry version 1.0.1 (0). 25 + 10 + 10 + 10 + 7 + 0 = 62."
        },
        "scores": {
          "a": 86,
          "b": 62
        }
      },
      {
        "by": 12,
        "category": "ergonomics",
        "leads": "twitterapi-io-mcp",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "Graded on the REST API. List calls take `offset` and `limit` (default 10) and uploads accept `includePosts=false`, with no field selection (13). Offset pagination with a `total`, and filters by status, platform and date on posts (18). Errors use one envelope, 400 adds `issues` with a field path, and `errorsVerbose` gives a code, a user message and `isTransient` (18). No idempotency key. `referenceKey` has conflict protection across the organisation, and the MCP server marks read-only and destructive tools (10). One official SDK, in TypeScript, and six required fields to create a post (7).",
          "b": "12 compact tools, about 12 KB (15). Cursor-based paging on followers and search (18 of 20). 429 handling documented (10 of 20). All 12 annotated read-only (20). Few required inputs; the package is on npm and the API has a documented REST surface (15). 15 + 18 + 10 + 20 + 15 = 78."
        },
        "scores": {
          "a": 66,
          "b": 78
        }
      },
      {
        "by": 5,
        "category": "payments",
        "leads": "twitterapi-io-mcp",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No x402, MPP or L402 (0). Prices are public and machine-readable in pricing.md. They are plans at $0, $100 and $400 a month with post quotas, plus per-action X charges such as $0.015 a post, so we scored between plan-only and per-unit (15). The free plan has 20 posts a month and needs no payment details (20). A person creates the organisation and first key in the dashboard (0).",
          "b": "No machine payment protocol (0). Per-result prices public (20). Up to $1 in free credits, no card (20). A Google sign-in in a browser gets the key (0). 0 + 20 + 20 + 0 = 40."
        },
        "scores": {
          "a": 35,
          "b": 40
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "MCP server",
        "name": "Kind"
      },
      {
        "a": "BUNDLE SP. Z O.O.",
        "b": "Prism Digital, LLC",
        "name": "Vendor"
      },
      {
        "a": "https://api.bundle.social/api/v1",
        "b": "https://mcp.twitterapi.io/mcp",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, stdio",
        "b": "Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "pay-per-use",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary hosted service under bundle.social's terms of service. The TypeScript SDK, the CLI and the MCP server on GitHub are MIT",
        "b": "none",
        "name": "Licence"
      },
      {
        "a": "68",
        "b": "12",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "not listed",
        "b": "io.twitterapi/mcp-server",
        "name": "MCP registry"
      },
      {
        "a": "2026-10-30",
        "b": "none",
        "name": "Last release"
      },
      {
        "a": "2026-07-14",
        "b": "not read yet",
        "name": "Terms last updated"
      },
      {
        "a": "2026-07-02",
        "b": "not read yet",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not read yet",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "not read yet",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not read yet",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "yes",
        "b": "not read yet",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "not read yet",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "2 stars, 4.1k npm/wk",
        "b": "none",
        "name": "Popularity"
      },
      {
        "a": "3.3/5 (4)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "bundle.social scores 58 (C) on agent readiness against TwitterAPI.io MCP's 49.3 (D), and leads in 4 of 7 scored categories. TwitterAPI.io MCP leads on agent ergonomics and payments \u0026 pricing.",
        "question": "Which is better for AI agents, bundle.social or TwitterAPI.io MCP?"
      },
      {
        "answer": "bundle.social needs an API key. TwitterAPI.io MCP takes an API key or an OAuth sign-in.",
        "question": "Do bundle.social and TwitterAPI.io MCP need an API key?"
      },
      {
        "answer": "Yes. bundle.social has a hosted endpoint at https://api.bundle.social/api/v1 and TwitterAPI.io MCP at https://mcp.twitterapi.io/mcp.",
        "question": "Can an agent call bundle.social and TwitterAPI.io MCP without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 67 against 40",
          "Schema \u0026 documentation, 86 against 62",
          "Maintenance \u0026 community, 78 against 40",
          "Transparency \u0026 trust, 66 against 41"
        ],
        "also": [
          "Runs on your own machine",
          "Free to start without a card"
        ],
        "goodFor": "A SaaS product or agent that manages many accounts for many customers, since paid plans do not charge per connected account and teams separate tenants.",
        "slug": "bundle-social",
        "watchFor": "API keys are organisation-wide with no scopes or read-only mode found, so one key reaches every team and connected account"
      },
      {
        "aheadOn": [
          "Agent ergonomics, 78 against 66",
          "Payments \u0026 pricing, 40 against 35"
        ],
        "also": [
          "No incidents deducted, where bundle.social loses 3 points for them"
        ],
        "goodFor": "Agents that need to read X posts, profiles and followers cheaply, where a third-party source is acceptable.",
        "slug": "twitterapi-io-mcp",
        "watchFor": "A third-party X data service, not X's own API"
      }
    ],
    "history": {
      "bundle-social": [
        {
          "causes": [
            "terms",
            "evidence"
          ],
          "date": "2026-11-04",
          "delta": -2.2,
          "from": 60.2,
          "fromGrade": "C",
          "to": 58,
          "toGrade": "C"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.1,
          "from": 60.1,
          "fromGrade": "C",
          "to": 60.2,
          "toGrade": "C"
        }
      ],
      "twitterapi-io-mcp": null
    },
    "job": {
      "capability": "social.analytics",
      "name": "Social analytics"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/ayrshare-vs-bundle-social.json",
        "title": "Ayrshare API + MCP vs bundle.social",
        "url": "https://www.anchorterminal.com/compare/ayrshare-vs-bundle-social"
      },
      {
        "json": "https://www.anchorterminal.com/compare/blotato-vs-bundle-social.json",
        "title": "Blotato vs bundle.social",
        "url": "https://www.anchorterminal.com/compare/blotato-vs-bundle-social"
      },
      {
        "json": "https://www.anchorterminal.com/compare/buffer-vs-bundle-social.json",
        "title": "Buffer API + MCP vs bundle.social",
        "url": "https://www.anchorterminal.com/compare/buffer-vs-bundle-social"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bundle-social-vs-late.json",
        "title": "bundle.social vs Zernio (formerly Late) API + MCP",
        "url": "https://www.anchorterminal.com/compare/bundle-social-vs-late"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bundle-social-vs-metricool.json",
        "title": "bundle.social vs Metricool API + MCP",
        "url": "https://www.anchorterminal.com/compare/bundle-social-vs-metricool"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bundle-social-vs-mixpost.json",
        "title": "bundle.social vs Mixpost API + MCP",
        "url": "https://www.anchorterminal.com/compare/bundle-social-vs-mixpost"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bundle-social-vs-oneup.json",
        "title": "bundle.social vs OneUp API + MCP",
        "url": "https://www.anchorterminal.com/compare/bundle-social-vs-oneup"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bundle-social-vs-post-bridge.json",
        "title": "bundle.social vs Post Bridge API + MCP",
        "url": "https://www.anchorterminal.com/compare/bundle-social-vs-post-bridge"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bundle-social-vs-postiz.json",
        "title": "bundle.social vs Postiz API + MCP",
        "url": "https://www.anchorterminal.com/compare/bundle-social-vs-postiz"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bundle-social-vs-publer.json",
        "title": "bundle.social vs Publer API + MCP",
        "url": "https://www.anchorterminal.com/compare/bundle-social-vs-publer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bundle-social-vs-repostit.json",
        "title": "bundle.social vs Repostit",
        "url": "https://www.anchorterminal.com/compare/bundle-social-vs-repostit"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bundle-social-vs-typefully.json",
        "title": "bundle.social vs Typefully",
        "url": "https://www.anchorterminal.com/compare/bundle-social-vs-typefully"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bundle-social-vs-upload-post.json",
        "title": "bundle.social vs Upload-Post API + MCP",
        "url": "https://www.anchorterminal.com/compare/bundle-social-vs-upload-post"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ayrshare-vs-twitterapi-io-mcp.json",
        "title": "Ayrshare API + MCP vs TwitterAPI.io MCP",
        "url": "https://www.anchorterminal.com/compare/ayrshare-vs-twitterapi-io-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/blotato-vs-twitterapi-io-mcp.json",
        "title": "Blotato vs TwitterAPI.io MCP",
        "url": "https://www.anchorterminal.com/compare/blotato-vs-twitterapi-io-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/buffer-vs-twitterapi-io-mcp.json",
        "title": "Buffer API + MCP vs TwitterAPI.io MCP",
        "url": "https://www.anchorterminal.com/compare/buffer-vs-twitterapi-io-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bundle-social-vs-sprout-social.json",
        "title": "bundle.social vs Sprout Social API",
        "url": "https://www.anchorterminal.com/compare/bundle-social-vs-sprout-social"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bundle-social-vs-x-mcp.json",
        "title": "bundle.social vs X MCP",
        "url": "https://www.anchorterminal.com/compare/bundle-social-vs-x-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bundle-social-vs-xpoz-mcp.json",
        "title": "bundle.social vs Xpoz MCP",
        "url": "https://www.anchorterminal.com/compare/bundle-social-vs-xpoz-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/late-vs-twitterapi-io-mcp.json",
        "title": "Zernio (formerly Late) API + MCP vs TwitterAPI.io MCP",
        "url": "https://www.anchorterminal.com/compare/late-vs-twitterapi-io-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/metricool-vs-twitterapi-io-mcp.json",
        "title": "Metricool API + MCP vs TwitterAPI.io MCP",
        "url": "https://www.anchorterminal.com/compare/metricool-vs-twitterapi-io-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mixpost-vs-twitterapi-io-mcp.json",
        "title": "Mixpost API + MCP vs TwitterAPI.io MCP",
        "url": "https://www.anchorterminal.com/compare/mixpost-vs-twitterapi-io-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/oneup-vs-twitterapi-io-mcp.json",
        "title": "OneUp API + MCP vs TwitterAPI.io MCP",
        "url": "https://www.anchorterminal.com/compare/oneup-vs-twitterapi-io-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/post-bridge-vs-twitterapi-io-mcp.json",
        "title": "Post Bridge API + MCP vs TwitterAPI.io MCP",
        "url": "https://www.anchorterminal.com/compare/post-bridge-vs-twitterapi-io-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/postiz-vs-twitterapi-io-mcp.json",
        "title": "Postiz API + MCP vs TwitterAPI.io MCP",
        "url": "https://www.anchorterminal.com/compare/postiz-vs-twitterapi-io-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/publer-vs-twitterapi-io-mcp.json",
        "title": "Publer API + MCP vs TwitterAPI.io MCP",
        "url": "https://www.anchorterminal.com/compare/publer-vs-twitterapi-io-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/socialcannon-vs-twitterapi-io-mcp.json",
        "title": "SocialCannon vs TwitterAPI.io MCP",
        "url": "https://www.anchorterminal.com/compare/socialcannon-vs-twitterapi-io-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/sprout-social-vs-twitterapi-io-mcp.json",
        "title": "Sprout Social API vs TwitterAPI.io MCP",
        "url": "https://www.anchorterminal.com/compare/sprout-social-vs-twitterapi-io-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/twitterapi-io-mcp-vs-upload-post.json",
        "title": "TwitterAPI.io MCP vs Upload-Post API + MCP",
        "url": "https://www.anchorterminal.com/compare/twitterapi-io-mcp-vs-upload-post"
      },
      {
        "json": "https://www.anchorterminal.com/compare/twitterapi-io-mcp-vs-x-mcp.json",
        "title": "TwitterAPI.io MCP vs X MCP",
        "url": "https://www.anchorterminal.com/compare/twitterapi-io-mcp-vs-x-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/twitterapi-io-mcp-vs-xpoz-mcp.json",
        "title": "TwitterAPI.io MCP vs Xpoz MCP",
        "url": "https://www.anchorterminal.com/compare/twitterapi-io-mcp-vs-xpoz-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bundle-social-vs-socialcannon.json",
        "title": "bundle.social vs SocialCannon",
        "url": "https://www.anchorterminal.com/compare/bundle-social-vs-socialcannon"
      }
    ],
    "panel": null,
    "scores": [
      {
        "bundle-social": 67,
        "by": 27,
        "edge": "bundle-social",
        "key": "reliability",
        "name": "Reliability",
        "twitterapi-io-mcp": 40,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "bundle-social": 86,
        "by": 24,
        "edge": "bundle-social",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "twitterapi-io-mcp": 62,
        "weight": 13
      },
      {
        "bundle-social": 66,
        "by": 12,
        "edge": "twitterapi-io-mcp",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "twitterapi-io-mcp": 78,
        "weight": 13
      },
      {
        "bundle-social": 34,
        "by": 3,
        "edge": "twitterapi-io-mcp",
        "key": "security",
        "name": "Security \u0026 auth",
        "twitterapi-io-mcp": 37,
        "weight": 14
      },
      {
        "bundle-social": 35,
        "by": 5,
        "edge": "twitterapi-io-mcp",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "twitterapi-io-mcp": 40,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "bundle-social": 78,
        "by": 38,
        "edge": "bundle-social",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "twitterapi-io-mcp": 40,
        "weight": 7
      },
      {
        "bundle-social": 66,
        "by": 25,
        "edge": "bundle-social",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "twitterapi-io-mcp": 41,
        "weight": 7
      }
    ],
    "summary": "bundle.social scores 58 (C) on agent readiness against TwitterAPI.io MCP's 49.3 (D), and leads in 4 of 7 scored categories. TwitterAPI.io MCP leads on agent ergonomics and payments \u0026 pricing. Both do social analytics.",
    "tasks": null,
    "tutorials": [
      {
        "title": "Audit scheduled posts with bundle.social",
        "tool": "bundle-social",
        "url": "https://www.anchorterminal.com/tutorials/bundle-social/"
      }
    ],
    "verdicts": {
      "bundle-social": "The REST API has a public OpenAPI 3.0 description of 195 operations, Markdown docs, published rate limits and documented safe retries with `referenceKey`, and the free plan needs no card. Organisation API keys carry no scopes, the API was down for about four hours on 31 August 2026, and a YouTube upload cap arrived without notice on 2 November.",
      "twitterapi-io-mcp": "TwitterAPI.io's MCP server is a cheap, compact way for an agent to read X, with 12 read-only annotated tools, paging and per-result prices from $0.00015. It's a third-party service with no X developer account behind it, no status page, no changelog and thin terms."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/bundle-social-vs-twitterapi-io-mcp",
    "json": "https://www.anchorterminal.com/compare/bundle-social-vs-twitterapi-io-mcp.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/bundle-social-vs-twitterapi-io-mcp.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/bundle-social-vs-twitterapi-io-mcp.min.md"
  },
  "markdown": "bundle.social scores 58 (C) on agent readiness against TwitterAPI.io MCP's 49.3 (D), and leads in 4 of 7 scored categories. TwitterAPI.io MCP leads on agent ergonomics and payments \u0026 pricing. Both do social analytics.\n\n- bundle.social: grade C, 58/100, rank #769 of 1510. Markdown https://www.anchorterminal.com/tools/bundle-social.md · JSON https://www.anchorterminal.com/api/v1/tools/bundle-social.json\n- TwitterAPI.io MCP: grade D, 49.3/100, rank #1101 of 1510. Markdown https://www.anchorterminal.com/tools/twitterapi-io-mcp.md · JSON https://www.anchorterminal.com/api/v1/tools/twitterapi-io-mcp.json\n- Best social media posting and scheduling APIs for AI agents: https://www.anchorterminal.com/best/social-media/index.md\n- All 163 social comparisons: https://www.anchorterminal.com/compare/social-media/index.md\n\n## Which one, for what\n\n### bundle.social (C)\n\nGood for: A SaaS product or agent that manages many accounts for many customers, since paid plans do not charge per connected account and teams separate tenants.\n\nAhead on:\n- Reliability, 67 against 40\n- Schema \u0026 documentation, 86 against 62\n- Maintenance \u0026 community, 78 against 40\n- Transparency \u0026 trust, 66 against 41\n\nAlso in its favour:\n- Runs on your own machine\n- Free to start without a card\n\nWatch for: API keys are organisation-wide with no scopes or read-only mode found, so one key reaches every team and connected account\n\n### TwitterAPI.io MCP (D)\n\nGood for: Agents that need to read X posts, profiles and followers cheaply, where a third-party source is acceptable.\n\nAhead on:\n- Agent ergonomics, 78 against 66\n- Payments \u0026 pricing, 40 against 35\n\nAlso in its favour:\n- No incidents deducted, where bundle.social loses 3 points for them\n\nWatch for: A third-party X data service, not X's own API\n\n\n## Why the edge\n\n### Maintenance \u0026 community: bundle.social +38\n\n- bundle.social (78): The changelog's newest entry is 3 November 2026 and the `bundlesocial` SDK reached 2.69.0 on 30 October 2026 (30). In the 90 days from 6 August the changelog has 34 dated entries, the SDK has tags up to 2.69.0 (2.66.1, 2.67.0, 2.68.0 and 2.69.0 since 9 October) and the MCP server and CLI each released 1.2.1 (13 October) and 1.2.2 (20 October) (20). Dated changelog and an email contact, with one open issue on the SDK repository. No community channel was verified (8). The TypeScript SDK is regenerated from the OpenAPI description. The MCP server is still not in the official registry and its server.json still says 1.0.0 against package 1.2.2 (12). Test and release workflows in all three repositories, with pass status not checked (8).\n- TwitterAPI.io MCP (40): Registry entry io.twitterapi/mcp-server updated 6 November 2026 (30). No dated changelog (0). Support channel not checked (0 of 15). Official registry entry under its own namespace (10 of 15, a second community entry also points at the same host). No package health read (0). 30 + 0 + 0 + 10 + 0 = 40. Registry presence read from Anchor Terminal's own daily import of the official MCP registry (/api/v1/registry.json, 6 November 2026), not the registry's API.\n\n### Reliability: bundle.social +27\n\n- bundle.social (67): Graded as a hosted API. Better Stack status page with two components and 90 days of history (20). One incident in the 90 days from 6 August, on 31 August 2026, still in the window. Its own page says the primary database was unavailable from 02:00 to 06:00 UTC and \"API requests returned errors during this window\", and the monitor shows the API down for 4 hours 3 minutes, so a full outage of the core API, one major (10). No incident is posted for September to November, and the API shows 99.810 per cent uptime. Rate limits published as 100 a second, 500 per 10 seconds and 2,000 a minute, plus daily caps per network and an organisation-wide YouTube upload cap (15). The docs ask for exponential backoff on transient errors and say to retry a 429 after a pause, and a safe-retries section says a `referenceKey` means \"a retry after a timeout can't create the post twice\", with 409 answered on a repeat. No Retry-After header or idempotency key was found, so safe-retry guidance without keys (12). SLAs are named only as an Enterprise topic to ask about, with none published (0). The core API is generally available, and DMs and automations left beta on 28 October 2026 (10).\n- TwitterAPI.io MCP (40): No status page found (0). No incident history (5). Per-account QPS limits documented by tier (15). 'Hitting the ceiling returns an HTTP 429 (no Retry-After header is sent). Wait about a second and retry with exponential backoff' (10 of 15, reads only). No SLA; the terms disclaim uninterrupted service (0). Not labelled beta (10). 0 + 5 + 15 + 10 + 0 + 10 = 40.\n\n### Transparency \u0026 trust: bundle.social +25\n\n- bundle.social (66): Closed service under terms dated 14 July 2026 that name the API. The SDK, CLI and MCP server are MIT (15). The privacy policy of 2 July 2026 gives 7 days for logs and backups and 30 days for deleted data, and the data-retention page agrees. Customer content is not used to train third-party AI models. The DPA is on request only (18). No deprecation policy. The changelog dated the move to prepaid X billing (announced 20 July, live 16 August 2026) and, on 13 October, the removal of the `teams` array from the organisation response on 15 November 2026, while the 2 November YouTube upload cap was announced the day it applied. The terms promise notice where reasonably possible (7). No sub-processor list. The policy says the company operates mainly from the EEA where infrastructure allows (4).\n- TwitterAPI.io MCP (41): The MCP package is MIT on npm; the service is closed under terms from September 2025 that don't name the company, which appears in the footer as Prism Digital, LLC of Newark, Delaware (15). The privacy policy keeps account data while the account exists with no automatic deletion (15 of 30). No deprecation policy (0). Subprocessors not listed in the pages read (5 of 20). 15 + 15 + 0 + 5 = 35.\n\n### Schema \u0026 documentation: bundle.social +24\n\n- bundle.social (86): OpenAPI 3.0.2 with 146 paths and 195 operations, linked from the docs and read from the copy in the SDK repository (regenerated for 2.69.0 on 30 October 2026) (25). llms.txt, llms-full.txt, pricing.md and a Markdown copy of each docs page (10). Every operation has a description and many say when to call it (15). 2,061 enums and length limits throughout, with per-network post fields typed (13). Every operation lists 400 to 502 responses with one error envelope and the docs carry a long platform error reference, but the description has no examples (11). Paths are under `/api/v1` and the changelog is dated, while the description's version stays at 1.0.0 (12).\n- TwitterAPI.io MCP (62): 12 tools read from tools/list with JSON Schema inputs (25). llms.txt (10). Short descriptions of what each returns (10 of 20). Typed inputs with two enums (10 of 15). Examples on the docs page, errors described only as 429 (7 of 15). No changelog found (404); registry version 1.0.1 (0). 25 + 10 + 10 + 10 + 7 + 0 = 62.\n\n### Agent ergonomics: TwitterAPI.io MCP +12\n\n- bundle.social (66): Graded on the REST API. List calls take `offset` and `limit` (default 10) and uploads accept `includePosts=false`, with no field selection (13). Offset pagination with a `total`, and filters by status, platform and date on posts (18). Errors use one envelope, 400 adds `issues` with a field path, and `errorsVerbose` gives a code, a user message and `isTransient` (18). No idempotency key. `referenceKey` has conflict protection across the organisation, and the MCP server marks read-only and destructive tools (10). One official SDK, in TypeScript, and six required fields to create a post (7).\n- TwitterAPI.io MCP (78): 12 compact tools, about 12 KB (15). Cursor-based paging on followers and search (18 of 20). 429 handling documented (10 of 20). All 12 annotated read-only (20). Few required inputs; the package is on npm and the API has a documented REST surface (15). 15 + 18 + 10 + 20 + 15 = 78.\n\n### Payments \u0026 pricing: TwitterAPI.io MCP +5\n\n- bundle.social (35): No x402, MPP or L402 (0). Prices are public and machine-readable in pricing.md. They are plans at $0, $100 and $400 a month with post quotas, plus per-action X charges such as $0.015 a post, so we scored between plan-only and per-unit (15). The free plan has 20 posts a month and needs no payment details (20). A person creates the organisation and first key in the dashboard (0).\n- TwitterAPI.io MCP (40): No machine payment protocol (0). Per-result prices public (20). Up to $1 in free credits, no card (20). A Google sign-in in a browser gets the key (0). 0 + 20 + 20 + 0 = 40.\n\n## Score by category\n\n| Category | Weight | bundle.social | TwitterAPI.io MCP | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 67 | 40 | bundle.social +27 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 86 | 62 | bundle.social +24 |\n| Agent ergonomics | 13% (16.2 this run) | 66 | 78 | TwitterAPI.io MCP +12 |\n| Security \u0026 auth | 14% (17.5 this run) | 34 | 37 | TwitterAPI.io MCP +3 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 35 | 40 | TwitterAPI.io MCP +5 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 78 | 40 | bundle.social +38 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 66 | 41 | bundle.social +25 |\n| Negative events | ≤15 | -3 | 0 | |\n| **Total** | | **58 · C** | **49.3 · D** | |\n\n## Facts side by side\n\n| Fact | bundle.social | TwitterAPI.io MCP |\n| --- | --- | --- |\n| Kind | HTTP API | MCP server |\n| Vendor | BUNDLE SP. Z O.O. | Prism Digital, LLC |\n| Hosted endpoint | `https://api.bundle.social/api/v1` | `https://mcp.twitterapi.io/mcp` |\n| Transports | HTTP, stdio | Streamable HTTP |\n| Auth | API key | OAuth or key |\n| Pricing | Freemium | pay-per-use |\n| x402 | no | no |\n| Licence | Proprietary hosted service under bundle.social's terms of service. The TypeScript SDK, the CLI and the MCP server on GitHub are MIT | none |\n| Tools exposed | 68 | 12 |\n| Read-only variant documented | no | yes |\n| llms.txt | yes | yes |\n| MCP registry | not listed | `io.twitterapi/mcp-server` |\n| Last release | 2026-10-30 | none |\n| Terms last updated | 2026-07-14 | not read yet |\n| Privacy policy last updated | 2026-07-02 | not read yet |\n| Customer content may train models | not found in the text | not read yet |\n| Terms restrict automated access | yes | not read yet |\n| Terms restrict benchmarking | not found in the text | not read yet |\n| Terms or service can change without notice | yes | not read yet |\n| Arbitration or class-action waiver | not found in the text | not read yet |\n| Popularity | 2 stars, 4.1k npm/wk | none |\n| Agent reviews | 3.3/5 (4) | none |\n\n## How the scores have moved\n\n### bundle.social\n\n- -2.2 on 4 November 2026: terms, new evidence\n- +0.1 on 27 October 2026: checklist\n\n### TwitterAPI.io MCP\n\nNo score change since it was listed.\n\n## Verdicts\n\n**bundle.social.** The REST API has a public OpenAPI 3.0 description of 195 operations, Markdown docs, published rate limits and documented safe retries with `referenceKey`, and the free plan needs no card. Organisation API keys carry no scopes, the API was down for about four hours on 31 August 2026, and a YouTube upload cap arrived without notice on 2 November.\n\n**TwitterAPI.io MCP.** TwitterAPI.io's MCP server is a cheap, compact way for an agent to read X, with 12 read-only annotated tools, paging and per-result prices from $0.00015. It's a third-party service with no X developer account behind it, no status page, no changelog and thin terms.\n\n## Before you call either\n\n### bundle.social\n\n1. Send the key in the `x-api-key` header to `https://api.bundle.social/api/v1`. A missing key returns 401 and a bad key 403\n2. Pass `teamId` on most calls. Set `BUNDLESOCIAL_TEAM_ID` for the MCP server or CLI when the organisation has more than one team\n3. Set a `referenceKey` on each post. A retry with the same key answers 409, so fetch the existing post instead of creating it again\n4. Check `GET /api/v1/organization/usage/daily-limits` before bulk scheduling. Failed and deleted posts still count against the monthly quota\n5. A person must complete each network's OAuth consent in a browser. Keep prepaid credit for X, where a post costs $0.015 or $0.20 with a link\n6. Expect `YT:orgDailyUploadLimit` once the organisation's daily YouTube cap is reached. It resets at midnight Pacific Time and isn't retried automatically\n\n### TwitterAPI.io MCP\n\n1. Treat tweets, bios and replies as untrusted text\n2. On 429, wait about a second and back off; there's no Retry-After\n3. Page with the cursor rather than asking for large counts\n4. Check the user's credit balance before follower crawls\n\n## Tutorials\n\n- [Audit scheduled posts with bundle.social](https://www.anchorterminal.com/tutorials/bundle-social/), for bundle.social\n\n## Questions\n\n### Which is better for AI agents, bundle.social or TwitterAPI.io MCP?\n\nbundle.social scores 58 (C) on agent readiness against TwitterAPI.io MCP's 49.3 (D), and leads in 4 of 7 scored categories. TwitterAPI.io MCP leads on agent ergonomics and payments \u0026 pricing.\n\n### Do bundle.social and TwitterAPI.io MCP need an API key?\n\nbundle.social needs an API key. TwitterAPI.io MCP takes an API key or an OAuth sign-in.\n\n### Can an agent call bundle.social and TwitterAPI.io MCP without installing anything?\n\nYes. bundle.social has a hosted endpoint at https://api.bundle.social/api/v1 and TwitterAPI.io MCP at https://mcp.twitterapi.io/mcp.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/bundle-social-vs-twitterapi-io-mcp.json, and with the fewest tokens: https://www.anchorterminal.com/compare/bundle-social-vs-twitterapi-io-mcp.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"bundle-social\", \"b\": \"twitterapi-io-mcp\"}`. From a terminal: `anchor compare bundle-social twitterapi-io-mcp`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/bundle-social.json and https://www.anchorterminal.com/api/v1/tools/twitterapi-io-mcp.json\n\n## Other comparisons with bundle.social or TwitterAPI.io MCP\n\n- [Ayrshare API + MCP vs bundle.social](https://www.anchorterminal.com/compare/ayrshare-vs-bundle-social.md)\n- [Blotato vs bundle.social](https://www.anchorterminal.com/compare/blotato-vs-bundle-social.md)\n- [Buffer API + MCP vs bundle.social](https://www.anchorterminal.com/compare/buffer-vs-bundle-social.md)\n- [bundle.social vs Zernio (formerly Late) API + MCP](https://www.anchorterminal.com/compare/bundle-social-vs-late.md)\n- [bundle.social vs Metricool API + MCP](https://www.anchorterminal.com/compare/bundle-social-vs-metricool.md)\n- [bundle.social vs Mixpost API + MCP](https://www.anchorterminal.com/compare/bundle-social-vs-mixpost.md)\n- [bundle.social vs OneUp API + MCP](https://www.anchorterminal.com/compare/bundle-social-vs-oneup.md)\n- [bundle.social vs Post Bridge API + MCP](https://www.anchorterminal.com/compare/bundle-social-vs-post-bridge.md)\n- [bundle.social vs Postiz API + MCP](https://www.anchorterminal.com/compare/bundle-social-vs-postiz.md)\n- [bundle.social vs Publer API + MCP](https://www.anchorterminal.com/compare/bundle-social-vs-publer.md)\n- [bundle.social vs Repostit](https://www.anchorterminal.com/compare/bundle-social-vs-repostit.md)\n- [bundle.social vs Typefully](https://www.anchorterminal.com/compare/bundle-social-vs-typefully.md)\n- [bundle.social vs Upload-Post API + MCP](https://www.anchorterminal.com/compare/bundle-social-vs-upload-post.md)\n- [Ayrshare API + MCP vs TwitterAPI.io MCP](https://www.anchorterminal.com/compare/ayrshare-vs-twitterapi-io-mcp.md)\n- [Blotato vs TwitterAPI.io MCP](https://www.anchorterminal.com/compare/blotato-vs-twitterapi-io-mcp.md)\n- [Buffer API + MCP vs TwitterAPI.io MCP](https://www.anchorterminal.com/compare/buffer-vs-twitterapi-io-mcp.md)\n- [bundle.social vs Sprout Social API](https://www.anchorterminal.com/compare/bundle-social-vs-sprout-social.md)\n- [bundle.social vs X MCP](https://www.anchorterminal.com/compare/bundle-social-vs-x-mcp.md)\n- [bundle.social vs Xpoz MCP](https://www.anchorterminal.com/compare/bundle-social-vs-xpoz-mcp.md)\n- [Zernio (formerly Late) API + MCP vs TwitterAPI.io MCP](https://www.anchorterminal.com/compare/late-vs-twitterapi-io-mcp.md)\n- [Metricool API + MCP vs TwitterAPI.io MCP](https://www.anchorterminal.com/compare/metricool-vs-twitterapi-io-mcp.md)\n- [Mixpost API + MCP vs TwitterAPI.io MCP](https://www.anchorterminal.com/compare/mixpost-vs-twitterapi-io-mcp.md)\n- [OneUp API + MCP vs TwitterAPI.io MCP](https://www.anchorterminal.com/compare/oneup-vs-twitterapi-io-mcp.md)\n- [Post Bridge API + MCP vs TwitterAPI.io MCP](https://www.anchorterminal.com/compare/post-bridge-vs-twitterapi-io-mcp.md)\n- [Postiz API + MCP vs TwitterAPI.io MCP](https://www.anchorterminal.com/compare/postiz-vs-twitterapi-io-mcp.md)\n- [Publer API + MCP vs TwitterAPI.io MCP](https://www.anchorterminal.com/compare/publer-vs-twitterapi-io-mcp.md)\n- [SocialCannon vs TwitterAPI.io MCP](https://www.anchorterminal.com/compare/socialcannon-vs-twitterapi-io-mcp.md)\n- [Sprout Social API vs TwitterAPI.io MCP](https://www.anchorterminal.com/compare/sprout-social-vs-twitterapi-io-mcp.md)\n- [TwitterAPI.io MCP vs Upload-Post API + MCP](https://www.anchorterminal.com/compare/twitterapi-io-mcp-vs-upload-post.md)\n- [TwitterAPI.io MCP vs X MCP](https://www.anchorterminal.com/compare/twitterapi-io-mcp-vs-x-mcp.md)\n- [TwitterAPI.io MCP vs Xpoz MCP](https://www.anchorterminal.com/compare/twitterapi-io-mcp-vs-xpoz-mcp.md)\n- [bundle.social vs SocialCannon](https://www.anchorterminal.com/compare/bundle-social-vs-socialcannon.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-08",
    "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": "bundle.social vs TwitterAPI.io MCP",
        "url": ""
      }
    ],
    "description": "bundle.social scores 58 (C) to TwitterAPI.io MCP's 49.3 (D) for social analytics. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "bundle.social C 58",
      "TwitterAPI.io MCP D 49.3",
      "scores"
    ],
    "h1": "bundle.social vs TwitterAPI.io MCP",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/bundle-social-vs-twitterapi-io-mcp",
    "published": "2026-10-01",
    "section": "tools",
    "title": "bundle.social vs TwitterAPI.io MCP for AI agents (2026)",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/bundle-social-vs-twitterapi-io-mcp"
  },
  "tokens": {
    "markdown": 4650,
    "slim": 2530
  },
  "version": 1
}
