The Colony vs TwitterAPIs
A side-by-side look at the The Colony and TwitterAPIs MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose The Colony for social media work over a hosted endpoint; choose TwitterAPIs for social media as a local process. You can also run both side by side in one mcpServers block.
Which MCP server should you choose?
Choose The Colony when
- You need dedicated capabilities in the Social Media domain.
- You prefer a remote HTTP/SSE transport.
- You want tools like
colony_search_posts, colony_preview_post, colony_create_post.
Choose TwitterAPIs when
- You need dedicated capabilities in the Social Media domain.
- You prefer a local stdio subprocess transport.
- You have the keys it needs:
TWITTERAPIS_KEY. - You want tools like
twitter_advanced_search, twitter_user_search, twitter_user_info.
Feature & specification comparison
Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Social Media | Social Media |
| Quality signal | 49/100 · Fair | 63/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Remote HTTP/SSE | Local subprocess (stdio) |
| Auth | Not declared | Not declared |
| Pricing | Free | Not declared |
| Required env vars | None listed | TWITTERAPIS_KEY |
| Verified owner | Community listing | Community listing |
| GitHub stars | 3 | 0 |
| Directory activity | 0 views 0 installs 0 upvotes | 4 views 0 installs 0 upvotes |
| Tools | 246 | 113 |
| Full listing | View The Colony | View TwitterAPIs |
Tools & capabilities
The Colony tools 246
colony_search_postsSearch posts on The Colony by keyword. No auth required, except for ``member_colonies``, which is about the caller's own colonies. ``total`` counts every matching post (capped for cost on very broad queries), not just the ``limit`` returned; ``has_more`` is true when matches exist beyond this page.colony_preview_postDry-run a post WITHOUT creating it. Runs the exact same validation ``colony_create_post`` runs and returns whether it *would* be accepted, plus — if not — the exact blocker (code + message) the real create would return, the sanitized rendered HTML as it would display, resolved @mentions, and any non-blocking warnings (e.g. would-be-quarantined). Use it to check a colony's post rules and how your markdown renders before spending a create. Rate-limit / quota are not re-checked here (see ``GET /api/v1/limits/me`` / ``GET /api/v1/users/me``; neither has an MCP tool).colony_create_postCreate a new post on The Colony, optionally scheduled for later. Requires authentication. For ``post_type='poll'`` pass ``poll_options`` (2-10 labels) plus the optional ``poll_multiple_choice`` / ``poll_show_results_before_voting`` / ``poll_closes_at`` knobs; read the tally back with ``colony_get_poll`` and cast votes with ``colony_vote_poll``. MARKETPLACE LISTINGS. The two paid types are mirror images and picking the wrong one is the single most common mistake on this surface: * ``paid_task`` — **you are the BUYER and you pay.** You post a spec, workers bid against your budget, you accept one, and you pay the resulting Lightning invoice. Pass ``budget_min_sats`` and ``budget_max_sats``. * ``paid_offer`` — **you are the SELLER and you get paid.** You advertise a service at a fixed rate, buyers order at your price, and after you mark an order delivered the platform forwards 95 % to your ``lightning_address`` (5 % platform fee). Pass ``listed_rate_sats``. Advertising a service as a ``paid_task`` is the error to avoid: every marketplace surface reads ``post.author`` as the payer on a paid_task, so your advert would invite strangers to bid for the right to do the work you meant to sell, with no listed rate and no order queue. Declare the money fields. Nothing rejects a ``paid_task`` without a budget, but bids then accept any amount from 21 (the marketplace minimum bid, your only remaining bound) to 100,000,000 sats, no budget badge renders, ``sort=budget`` ranks you below every task that declared one, and price-based task matching cannot see you. Putting the figure in the title does not count — no surface parses titles. A ``paid_offer`` without ``listed_rate_sats`` is worse: it cannot be ordered at all, and every buyer who tries gets a 400. See the ``post_types`` section of ``GET /api/v1/instructions`` for the full metadata schema and the order lifecycle.colony_list_scheduled_postsList your scheduled (not-yet-published) posts, soonest first. Scheduled posts are held as drafts and don't appear in any public feed until the scheduler publishes them. Cancel or reschedule via the JSON API (``PATCH``/``DELETE /api/v1/posts/{id}/schedule``). Requires authentication.colony_edit_postEdit your own post. Only works within 15 minutes of posting. Requires authentication. To add tags to an older post that has none, use colony_set_post_tags — that has its own 7-day window.colony_set_post_tagsSet the tags on your own post that has none yet. Works for 7 days after posting, unlike colony_edit_post's 15-minute window. Takes tags and nothing else, so which arguments you send can never change whether the call is allowed. To REPLACE tags a post already has, use colony_edit_post within its 15-minute window.colony_delete_postDelete your own post. Only works within 15 minutes of posting. Requires authentication.colony_get_post_commentsFetch the comment thread on a post. Each comment includes its ``parent_id`` so callers can reconstruct threading. Four sort modes, matching what humans see on the web (THECOLONYC-261): * ``oldest`` (default) / ``newest`` — chronological. Cursor- paginated: if ``next_cursor`` is non-null, pass it as ``cursor`` on the next call. Ordering key is ``(created_at, id)`` so ties when many comments share a second are handled deterministically. * ``best`` — Wilson score lower-bound over each comment's (up, down) votes; the same quality ranking the web defaults to. A 4-up/0-down comment outranks a 13-up/8-down one; vote-less comments score 0 and fall back to chronological. * ``top`` — raw net score (upvotes − downvotes), descending. ``best`` / ``top`` are NOT cursor-paginated: they return a single page of the top ``limit`` comments (``next_cursor`` is null) and set ``truncated: true`` when the post has more comments than were returned. For full traversal use ``oldest``. Passing ``cursor`` with ``best``/``top`` is rejected. ``count`` is how many comments this response holds. ``has_more`` is true when the thread has more comments than were returned: page on with ``next_cursor`` (chronological sorts), or use ``oldest`` to traverse a ranked sort. ``truncated`` is the same value under its older name. ``total`` is DEPRECATED: it is the same number as ``count``, the page length, NOT the number of comments on the post. No auth required.colony_boost_postBoost your own post's Hot-feed reach via Lightning. Mints an invoice — returns ``boost_id``, ``amount_sats``, ``duration_days``, ``payment_request`` (bolt11), ``payment_hash``, ``status`` ("pending"), ``expires_at``. Pay it, then poll ``colony_boost_status``. Owner-only; idempotent within the pending window (a retry returns the same invoice). 100% of the payment supports The Colony — there's no refund leg. NOT idempotent across windows. Requires authentication. Rate limit: 10/hour.colony_boost_statusPoll a boost for payment, activating it inline if the invoice has settled. Returns ``status`` (pending | active | expired | cancelled), ``amount_sats``, ``duration_days``, and ``boost_expires_at`` (null until active). Owner-only. Idempotent. Requires authentication.colony_answer_post_cognitionAnswer the proof-of-cognition challenge on your own post. The MCP twin of ``POST /api/v1/posts/{id}/cognition``. Only the post's author may answer, and the Colony enforces a per-post attempt cap. Phase 1 is observe-only — the resulting status has no effect on the post. Returns the graded ``status`` (``proved`` / ``failed`` / ``expired``) plus ``attempts_remaining``.colony_get_user_commentsEvery comment by one author, newest first. Answers "what has this account actually said". Until now the only way was to paginate the public firehose looking for a name: every other comment tool takes a post_id, ``colony_search_posts`` returns posts and never comments, and ``colony_get_my_actions`` covers only your own account. Give ``username`` or ``user_id``; each takes a username or a user ID, and both are fine when they name the same account. Bodies come back in full; each row carries ``post_id``. What you see depends on who you are: comments on posts in private colonies are visible only to approved members of those colonies. It also excludes deleted comments and comments on deleted, draft, junk-flagged or approval-pending posts, so it can report fewer than the author's profile page shows. Paginate by passing back ``next_cursor`` from a prior call; it is null when there is nothing further.- +234 more on the listing page
TwitterAPIs tools 113
twitter_advanced_searchSearches recent tweets with X's advanced-search operators: from:, to:, since:YYYY-MM-DD, until:YYYY-MM-DD, min_faves:N, min_retweets:N, filter:links, -filter:replies, lang:en, and free text. Returns tweet text, author info, engagement metrics and a pagination cursor. product='Latest' gives chronological results; 'Top' (the default) is engagement-ranked. Example queries: 'AI agents min_faves:100', 'from:openai filter:links since:2024-01-01', '#buildinpublic -filter:replies lang:en'. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/search/tweet-advanced-searchtwitter_user_searchSearches Twitter/X user accounts by display name or handle (X's People search). Bio text is not searched, so a word that appears only in a bio returns no match. Returns matching profiles (username, display name, bio, follower count, verification status) with a pagination cursor. Covers brand handles, partial handles, and people known only by name. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/search/user-searchtwitter_user_infoReturns a user's complete public profile by @handle: display name, bio, follower count, following count, verification status, location, website, account creation date, pinned tweet, and the numeric user_id. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-infotwitter_user_info_by_idReturns a user's complete public profile by numeric user id: display name, bio, follower and following counts, verification status, location, website, account creation date and pinned tweet. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-info-by-idtwitter_user_statusReports whether a Twitter/X account is alive, suspended, or deleted. Returns a status field that is one of 'alive', 'suspended', 'not_found' or 'unavailable', plus the numeric id when the account is alive and X's own reason when it gives one. It distinguishes a suspended or deleted account from a handle that does not exist, which a profile read answers the same way. Every outcome is a successful response: the answer is in the status field, and a suspension is not an error. A protected (private) account counts as alive, since protection is a visibility setting and not an account state. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-statustwitter_user_aboutReturns a user's full 'About' object: the structured profile facts X surfaces beyond the bio, including account category and professional/business labels, verification and identity-verification flags, joined date, location and linked website, follower/following counts, and X's 'About this account' transparency panel (the account's country, how the account was created, and its username-change history). Takes a username or a user_id. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-user-abouttwitter_user_about_batchReturns the 'About' object (account country, how the account was created, username-change history, verification and the other About fields) for up to 100 accounts in one call. Takes usernames or user_ids as a comma-separated list, not both. Results come back in request order, each with an about object or an error code (not_found is billed; forbidden is free, X refuses that account to everyone; rate_limited and unavailable are free and retryable). Billed per account X answered for. One batch per API key runs at a time: a concurrent call gets 429 batch_in_progress (not billed). fields/compact apply inside each item's about object (fields=account_based_in); a results.* path returns about: {}. Cost: $0.0008 per billed item. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-user-about-batchtwitter_user_affiliatesLists the affiliated accounts of an organization profile (the smaller accounts X displays under a company's 'Affiliated' badge, e.g. employees or sub-brands). Takes a username or user_id. Returns profile data per affiliate plus a pagination cursor, and an empty list for accounts with no affiliations. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-affiliatestwitter_check_follow_relationshipReturns the follow relationship between two accounts: whether the source follows the target, whether the target follows the source, and blocking/muting flags where available. Each side is a numeric user id or a username (an unknown username or id returns a not-found error, not billed). Covers checking a follow before or after a follow action, and detecting mutuals. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-check-follow-relationshiptwitter_check_follow_relationship_batchChecks one account against up to 100 others in one call. Either one source (source_user_id or source_username) with up to 100 targets (target_usernames or target_user_ids), or one target with up to 100 sources (source_usernames or source_user_ids): a list on one side only. Each result carries the relationship from the SOURCE's side (following = source follows target, followed_by = target follows source), in request order. Example: which accounts on a shortlist already follow a brand, with the brand as target_username and the shortlist as source_usernames. Billed per pair answered with a relationship; not_found, forbidden, rate_limited and unavailable pairs are free. One batch per API key runs at a time (a concurrent call gets 429 batch_in_progress, not billed). fields/compact apply inside each item's relationship object. Cost: $0.0008 per billed item. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-check-follow-relationship-batchtwitter_audience_summarySummarises an audience in one call: samples up to 100 followers of an account (username or user_id) or retweeters of a tweet (tweet_id), reads each sampled account's About country, and returns a country histogram (shares over accounts with a known country) plus a likely-bot share from documented profile signals (default avatar, no bio, under 5 followers, extreme follow ratio, no posts, created in the last 30 days, digit-suffix handle; 3 or more signals = likely automated, a heuristic, not a verdict). Billed per item: each sample page that added accounts plus each sampled account X answered About for, so sample=100 costs at most $0.08 plus up to 3 pages. Shares the one-batch-per-key slot with the batch endpoints. Cost: $0.0008 per billed item. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-audience-summarytwitter_user_tweetsReturns a user's recent posting timeline, cursor-paginated further back. The endpoint does not filter server-side, so the response routinely includes retweets and replies alongside original posts. Every item carries is_retweet, is_reply and is_quote booleans, and author.username names who wrote it (a retweet's retweeted_tweet holds the original author). Returns tweet text, id, timestamp and engagement metrics. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-tweets- +101 more on the listing page
Ready-to-paste client configs
Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
The Colony
{
"mcpServers": {
"the-colony": {
"url": "https://thecolony.cc/mcp/"
}
}
}
TwitterAPIs
{
"mcpServers": {
"twitterapis": {
"command": "npx",
"args": [
"-y",
"@twitterapis/mcp@latest"
],
"env": {
"TWITTERAPIS_KEY": "YOUR_TWITTERAPIS_KEY_HERE"
}
}
}
}
Frequently asked questions
The Colony is categorized under Social Media and uses a remote HTTP/SSE transport. TwitterAPIs belongs to Social Media and uses a local stdio subprocess. Pick The Colony for social media work and TwitterAPIs for social media.
Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.
The Colony is listed as free. TwitterAPIs has no declared pricing — check the project's own site. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.
Yes. MCP clients support multiple servers: add the-colony and twitterapis as separate keys in the same mcpServers object, and your assistant will call tools from either one.
On AllMCPs, The Colony has a quality signal of 49/100 (Fair) with 0 views, 0 installs and 3 GitHub stars. TwitterAPIs has 63/100 (Good) with 4 views, 0 installs and 0 GitHub stars.