Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

API Direct

REMOTE · APIDIRECT.IO · SCANNED SEP 20

Search social media, news, forums and Google Maps: LinkedIn, X, Reddit, TikTok, YouTube.

Available components

0 this week 75 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security63
Transport & Reachability100
Schema Quality & AI Usability82
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 15639 tokens (~153/item across 102 items; 102 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety25
  • Injection-marker check failed: the server instructions contains an instruction to conceal the call from the user, the text "NEVER tell the user", at byte 1140 of that field. See how to fix → Fail
  • 0 of 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "google_ai_mode" implies "send" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 103 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities40
  • Spec-recency check failed: implements MCP spec 2025-03-26; the latest is 2026-07-28. See how to fix → Fail
Install

How do I install the API Direct MCP server?

API Direct is a hosted endpoint at https://apidirect.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · apidirect.io

# add to Claude Code
claude mcp add --transport http io-apidirect-api-direct 'https://apidirect.io/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "io-apidirect-api-direct": {
      "url": "https://apidirect.io/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "io-apidirect-api-direct": {
      "type": "http",
      "url": "https://apidirect.io/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.io-apidirect-api-direct]
url = "https://apidirect.io/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-apidirect-api-direct": {
      "type": "remote",
      "url": "https://apidirect.io/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add io-apidirect-api-direct --url 'https://apidirect.io/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  io-apidirect-api-direct:
    url: "https://apidirect.io/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "io-apidirect-api-direct": {
      "Transport": "http",
      "Url": "https://apidirect.io/mcp"
    }
  }
}
# add to Vellum
assistant mcp add io-apidirect-api-direct -t streamable-http -u 'https://apidirect.io/mcp'
// mcp.json
{
  "mcpServers": {
    "io-apidirect-api-direct": {
      "type": "http",
      "url": "https://apidirect.io/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 17 Sept 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Schema quality: 13273 → 15639 functional
    • New tool “bluesky_post_comments” functional
    • New tool “bluesky_post_details” functional
    • New tool “bluesky_post_likes” functional
    • New tool “bluesky_post_quotes” functional
    • New tool “bluesky_post_reposts” functional
    • New tool “bluesky_user_followers” functional
    • New tool “bluesky_user_following” functional
    • New tool “bluesky_user_likes” functional
    • New tool “bluesky_user_posts” functional
    • New tool “bluesky_user_profile” functional
    • New tool “search_bluesky” functional
    • New tool “search_bluesky_users” functional
    • “amazon_seller_reviews” reworded the description of “get_sentiment” cosmetic
    • “facebook_group_posts” reworded the description of “get_sentiment” cosmetic
    • “facebook_page_posts” reworded the description of “get_sentiment” cosmetic
    • “facebook_page_reels” reworded the description of “get_sentiment” cosmetic
    • “facebook_page_reviews” reworded the description of “get_sentiment” cosmetic
    • “facebook_page_videos” reworded the description of “get_sentiment” cosmetic
    • “facebook_post_comments” reworded the description of “get_sentiment” cosmetic
    • “instagram_comment_replies” reworded the description of “get_sentiment” cosmetic
    • “instagram_hashtag_posts” reworded the description of “get_sentiment” cosmetic
    • “instagram_post_comments” reworded the description of “get_sentiment” cosmetic
    • “instagram_post_details” reworded the description of “get_sentiment” cosmetic
    • “instagram_user_posts” reworded the description of “get_sentiment” cosmetic
    • “linkedin_company_posts” reworded the description of “get_sentiment” cosmetic
    • “linkedin_person_posts” reworded the description of “get_sentiment” cosmetic
    • “linkedin_post_details” reworded the description of “get_sentiment” cosmetic
    • “place_reviews” reworded the description of “get_sentiment” cosmetic
    • “search_facebook_posts” reworded the description of “get_sentiment” cosmetic
    • “search_facebook_videos” reworded the description of “get_sentiment” cosmetic
    • “search_forums” reworded the description of “get_sentiment” cosmetic
    • “search_instagram” reworded the description of “get_sentiment” cosmetic
    • “search_linkedin” reworded the description of “get_sentiment” cosmetic
    • “search_reddit” reworded the description of “get_sentiment” cosmetic
    • “search_reddit_comments” reworded the description of “get_sentiment” cosmetic
    • “search_threads” reworded the description of “get_sentiment” cosmetic
    • “search_tiktok” reworded the description of “get_sentiment” cosmetic
    • “search_twitter” reworded the description of “get_sentiment” cosmetic
    • “search_youtube” reworded the description of “get_sentiment” cosmetic
    • “threads_user_posts” reworded the description of “get_sentiment” cosmetic
    • “trustpilot_company_reviews” reworded the description of “get_sentiment” cosmetic
    • “truthsocial_user_posts” reworded the description of “get_sentiment” cosmetic
    • “twitter_tweet_comments” reworded the description of “get_sentiment” cosmetic
    • “twitter_tweet_details” reworded the description of “get_sentiment” cosmetic
    • “twitter_tweet_quotes” reworded the description of “get_sentiment” cosmetic
    • “twitter_user_replies” reworded the description of “get_sentiment” cosmetic
    • “twitter_user_tweets” reworded the description of “get_sentiment” cosmetic
  • 16 Sept 26 0
    • Tool “instagram_user_followers” rewrote its description, which is the text the model reads security
    • Tool “instagram_user_following” rewrote its description, which is the text the model reads security
    • “instagram_user_followers” reworded the description of “pages” cosmetic
  • 14 Sept 26 0
    • Stability: 0.97 → pass security
  • 13 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 10 Sept 26 +1
    • New tool “search_trustpilot_categories” functional
    • New tool “search_trustpilot_companies” functional
    • New tool “trustpilot_category_companies” functional
    • New tool “trustpilot_category_details” functional
    • New tool “trustpilot_category_newest” functional
    • New tool “trustpilot_company_reviews” functional
    • New tool “trustpilot_user_profile” functional
  • 8 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.

  • 6 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.

  • 5 Sept 26 0
    • “amazon_seller_products” reworded the description of “page” cosmetic
    • “amazon_seller_reviews” reworded the description of “page” cosmetic
    • “facebook_group_posts” reworded the description of “pages” cosmetic
    • “facebook_page_photos” reworded the description of “pages” cosmetic
    • “facebook_page_posts” reworded the description of “pages” cosmetic
    • “facebook_page_reviews” reworded the description of “pages” cosmetic
    • “facebook_page_videos” reworded the description of “pages” cosmetic
    • “facebook_post_comments” reworded the description of “pages” cosmetic
    • “get_youtube_comments” reworded the description of “pages” cosmetic
    • “instagram_post_comments” reworded the description of “pages” cosmetic
    • “instagram_user_followers” reworded the description of “pages” cosmetic
    • “instagram_user_following” reworded the description of “pages” cosmetic
    • “instagram_user_posts” reworded the description of “pages” cosmetic
    • “linkedin_company_posts” reworded the description of “page” cosmetic
    • “linkedin_person_posts” reworded the description of “page” cosmetic
    • “search_facebook_events” reworded the description of “pages” cosmetic
    • “search_facebook_pages” reworded the description of “pages” cosmetic
    • “search_facebook_posts” reworded the description of “pages” cosmetic
    • “search_facebook_videos” reworded the description of “pages” cosmetic
    • “search_forums” reworded the description of “page” cosmetic
    • “search_instagram” reworded the description of “pages” cosmetic
    • “search_linkedin” reworded the description of “page” cosmetic
    • “search_linkedin_jobs” reworded the description of “page” cosmetic
    • “search_reddit” reworded the description of “page” cosmetic
    • “search_reddit_comments” reworded the description of “pages” cosmetic
    • “search_twitter” reworded the description of “pages” cosmetic
    • “search_twitter_users” reworded the description of “pages” cosmetic
    • “search_youtube” reworded the description of “pages” cosmetic
    • “search_youtube_channels” reworded the description of “pages” cosmetic
    • “truthsocial_user_posts” reworded the description of “pages” cosmetic
    • “twitter_tweet_comments” reworded the description of “pages” cosmetic
    • “twitter_tweet_quotes” reworded the description of “pages” cosmetic
    • “twitter_tweet_retweets” reworded the description of “pages” cosmetic
    • “twitter_user_followers” reworded the description of “pages” cosmetic
    • “twitter_user_replies” reworded the description of “pages” cosmetic
    • “twitter_user_tweets” reworded the description of “pages” cosmetic
    • “twitter_verified_followers” reworded the description of “pages” cosmetic

    37 cosmetic changes on this day. Switch on “Show cosmetic changes” to see them.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Probed https://apidirect.io/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=apidirect.io CN=YR2,O=Let's Encrypt,C=US 18 Aug 2026 16 Nov 2026 RSA 2048 SHA256-RSA 5de70c92e883fed71ea2ae45bd95659fcb3
SANs: apidirect.io
CN=YR2,O=Let's Encrypt,C=US (CA) CN=Root YR,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 RSA 2048 SHA256-RSA 4ebd24947e24d394802d84a52fd5b319
CN=Root YR,O=ISRG,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 RSA 4096 SHA256-RSA f24b6d17f9d9ad7cb1c9fea78782699f

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of apidirect.io. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
io. present 57355 8 Verified
apidirect.io. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=63072000

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://apidirect.io/mcp Verified 200
http (plaintext) http://apidirect.io/mcp HTTPS enforced 308 https://apidirect.io/mcp
MCP tools · 102 exposed · ~14,256 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
search_bluesky ~212

Search Bluesky posts by keyword. Billed $0.003 per page.

NameTypeReqDescription
end_datestringOnly posts up to this date (format: YYYY-MM-DD)
get_sentimentbooleanAdd AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request en…
pagesintegerNumber of pages to fetch, 1-20 (default: 1). Each page returns up to 50 posts; you are billed per page returned.
querystringyesSearch keyword (max 500 characters). Bluesky search syntax works: "exact phrase", -exclude, from:handle, lang:en, #tag
sort_bystringSort order: "most_recent" or "relevance"
start_datestringOnly posts from this date onward (format: YYYY-MM-DD)

No output schema declared.

No examples provided.

search_bluesky_users ~79

Search Bluesky users by keyword. Billed $0.003 per page.

NameTypeReqDescription
pagesintegerNumber of pages to fetch, 1-20 (default: 1). Each page returns up to 50 users; you are billed per page returned.
querystringyesSearch keyword (max 500 characters)

No output schema declared.

No examples provided.

search_facebook_events ~134

Search Facebook events by keyword. Optionally scope results to a place with location_id (resolve one via the search_facebook_locations tool).

NameTypeReqDescription
end_datestringFilter events until this date (YYYY-MM-DD)
location_idstringFacebook location ID (from search_facebook_locations) to scope results to a place
pagesintegerNumber of pages to fetch (1-15, default 1). Billed per page.
querystringyesSearch keyword (max 500 characters)
start_datestringFilter events from this date (YYYY-MM-DD)

No output schema declared.

No examples provided.

search_facebook_locations ~83

Resolve a place name (city, region, or country) to Facebook location IDs. Use the returned id as the location_id argument to search_facebook_posts or search_facebook_events to scope a search to that place.

NameTypeReqDescription
querystringyesPlace name to resolve, e.g. "London" or "Paris, France" (max 500 characters)

No output schema declared.

No examples provided.

search_facebook_pages ~55

Search Facebook pages by keyword.

NameTypeReqDescription
pagesintegerNumber of pages to fetch (1-15, default 1). Billed per page.
querystringyesSearch keyword (max 500 characters)

No output schema declared.

No examples provided.

search_facebook_posts ~200

Search Facebook posts by keyword across all of Facebook. Optionally scope results to a place with location_id (resolve one via the search_facebook_locations tool).

NameTypeReqDescription
end_datestringFilter posts until this date
get_sentimentbooleanAdd AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request en…
location_idstringFacebook location ID (from search_facebook_locations) to scope results to a place
pagesintegerNumber of pages to fetch (1-15, default 1). Billed per page.
querystringyesSearch keyword (max 500 characters)
sort_bystringSort order: most_recent or relevance (default: relevance)
start_datestringFilter posts from this date

No output schema declared.

No examples provided.

search_facebook_videos ~152

Search Facebook videos by keyword.

NameTypeReqDescription
end_datestringFilter videos until this date
get_sentimentbooleanAdd AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request en…
pagesintegerNumber of pages to fetch (1-15, default 1). Billed per page.
querystringyesSearch keyword (max 500 characters)
sort_bystringSort order: most_recent or relevance (default: relevance)
start_datestringFilter videos from this date

No output schema declared.

No examples provided.

search_forums ~156

Search forum posts across the web.

NameTypeReqDescription
countrystring2-letter ISO country code, e.g. "us", "gb"
get_sentimentbooleanAdd AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request en…
pageintegerPage number, 1-10 (default: 1). 10 posts per page
querystringyesSearch keyword (max 500 characters)
timestringTime filter: "any", "hour", "day", "week", "month", or "year"

No output schema declared.

No examples provided.

search_instagram ~102

Search Instagram posts by keyword.

NameTypeReqDescription
get_sentimentbooleanAdd AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request en…
pagesintegerNumber of pages to fetch, 1-20 (default: 1)
querystringyesSearch keyword (max 500 characters)

No output schema declared.

No examples provided.

search_instagram_users ~43

Search Instagram users by keyword. Returns username, full name, verification status, and profile picture.

NameTypeReqDescription
querystringyesSearch keyword (max 500 characters)

No output schema declared.

No examples provided.

search_linkedin ~434

Search LinkedIn posts. Provide a `query` and/or a filter below. Powerful filters: author (posts BY a person), author_title (posts by people with a given job title, e.g. Founder/CEO — applies alongside a query), author_company (posts by employees of a company id), from_company (posts by a company page id), mentions_company (posts that MENTION a company id), mentions_member (posts that mention a person), author_industry. Returns post content, engagement metrics, attached media, a has_content_entities repost flag, and optional AI sentiment.

NameTypeReqDescription
authorstringPosts authored by this person — profile URL, public slug (e.g. williamhgates), or member URN. Comma-separate for multiple.
author_companystringPosts by people who work at this company. Numeric LinkedIn company id (from search_linkedin_companies).
author_industrystringPosts by authors in these numeric LinkedIn industry id(s), comma-separated. Advanced; applies alongside a query.
author_titlestringPosts by authors whose job title matches this free text (e.g. "CEO", "Founder"). Applies alongside a query.
from_companystringPosts authored by a company page. Numeric company id(s), comma-separated.
get_sentimentbooleanAdd AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request en…
mentions_companystringPosts that mention this company. Numeric company id.
mentions_memberstringPosts that mention this person (profile URL, public slug, or member URN).
pageintegerPage number, 1-25 (default: 1). 20 posts per page
querystringSearch keyword (max 500 characters). Optional if you supply a filter below.
sort_bystringSort order: "most_recent" or "relevance"

No output schema declared.

No examples provided.

search_linkedin_companies ~68

Search LinkedIn companies by keyword. Returns company name, description, followers, and logo.

NameTypeReqDescription
pageintegerPage number, 1-100 (default: 1). 10 results per page.
querystringyesSearch keyword (max 500 characters)

No output schema declared.

No examples provided.

search_linkedin_jobs ~257

Search LinkedIn job listings by keyword. Returns title, company (with company_id), location, posting date, job type, experience level, workplace type, industry, salary, and full description. Filter by recency, job type, company, and location — useful as a hiring/expansion/funding signal.

NameTypeReqDescription
company_idsstringFilter by company — comma-separated numeric LinkedIn company id(s) (from search_linkedin_companies).
job_typestringJob type filter: full_time, part_time, contract, temporary, volunteer, internship, other. Comma-separated for multiple.
location_idstringFilter by location — a numeric LinkedIn location id (see the Job Location IDs doc).
pageintegerPage number, 1-40 (default: 1). 25 jobs per page
posted_agostringMaximum job age: "1h", "24h", "7d", or "30d" (default: all time)
querystringyesSearch keyword (max 500 characters)
sort_bystringSort order: "most_recent" or "relevance" (default: relevance)

No output schema declared.

No examples provided.

search_news ~136

Search news articles from thousands of sources worldwide.

NameTypeReqDescription
countrystring2-letter country code (default: "us")
languagestring2-letter language code (default: "en")
limitintegerNumber of results, 1-100 (default: 10)
querystringyesSearch keyword (max 500 characters)
sourcestringFilter by news source domain, e.g. "bbc.com"
time_publishedstringTime filter: "anytime", "1h", "1d", "7d", or "1y"

No output schema declared.

No examples provided.

search_places ~222

Search Google Maps places (local businesses, points of interest) by free-text query. Returns place_id, name, address, phone, website, rating, review count, opening hours, coordinates, and more. Optionally bias results by geographic center (lat/lng/zoom). Each page returns up to 10 results.

NameTypeReqDescription
countrystring2-letter country code (default: "us")
languagestring2-letter language code (default: "en")
latnumberCenter latitude for geographic bias (use with lng)
lngnumberCenter longitude for geographic bias (use with lat)
pagesintegerNumber of pages, 1-20 (default: 1). Each page returns up to 10 results and is billed as one request.
querystringyesSearch keyword, e.g. "coffee shops brooklyn" (max 500 characters)
zoomintegerMap zoom level 1-20 (default: 13). Smaller widens radius.

No output schema declared.

No examples provided.

search_reddit ~128

Search Reddit posts.

NameTypeReqDescription
get_sentimentbooleanAdd AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request en…
pageintegerPage number, 1-12 (default: 1). 20 posts per page
querystringyesSearch keyword (max 500 characters)
sort_bystringSort order: "most_recent", "relevance", "hot", or "top"

No output schema declared.

No examples provided.

search_reddit_comments ~123

Search Reddit comments.

NameTypeReqDescription
get_sentimentbooleanAdd AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request en…
pagesintegerNumber of pages to fetch, 1-10 (default: 1)
querystringyesSearch keyword (max 500 characters)
sort_bystringSort order: "most_recent", "relevance", or "top"

No output schema declared.

No examples provided.

search_reddit_users ~45

Search Reddit users by keyword. Returns profile data including username, karma scores, account age, and bio.

NameTypeReqDescription
querystringyesSearch keyword (max 500 characters)

No output schema declared.

No examples provided.

search_threads ~111

Search Threads (Meta's Threads app) posts by keyword. Returns post text, author, engagement metrics, media, and post permalinks. Billed $0.006 per request.

NameTypeReqDescription
get_sentimentbooleanAdd AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request en…
querystringyesSearch keyword (max 500 characters)

No output schema declared.

No examples provided.

search_threads_users ~57

Search Threads (Meta's Threads app) users by keyword. Returns username, full name, verification status, and profile picture. Billed $0.006 per request.

NameTypeReqDescription
querystringyesSearch keyword (max 500 characters)

No output schema declared.

No examples provided.

search_tiktok ~194

Search TikTok videos by keyword.

NameTypeReqDescription
get_sentimentbooleanAdd AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request en…
pagesintegerNumber of pages to fetch, 1-10 (default: 1)
publish_timeintegerTime filter: 0=ALL, 1=24h, 7=week, 30=month, 90=3months, 180=6months
querystringyesSearch keyword (max 500 characters)
regionstring2-letter region code, e.g. "us", "gb", "jp"
sort_bystringSort order: "relevance", "most_recent", or "most_liked"

No output schema declared.

No examples provided.

search_tiktok_users ~70

Search TikTok users by keyword. Returns username, bio, follower/following counts, likes, and video count.

NameTypeReqDescription
pagesintegerNumber of pages to fetch, 1-10 (default: 1)
querystringyesSearch keyword (max 500 characters)

No output schema declared.

No examples provided.

search_trustpilot_categories ~82

Search Trustpilot categories by keyword. Returns up to 6 fuzzy matches with category_id and name; the search never returns zero matches, so check the names. Feed a category_id into trustpilot_category_companies or trustpilot_category_details.

NameTypeReqDescription
querystringyesKeyword (max 200 characters), e.g. 'bank' or 'shop'

No output schema declared.

No examples provided.

search_trustpilot_companies ~154

Search Trustpilot companies by name or keyword. Each match includes business_unit_id, name, domain, website, Trustpilot page URL, logo, TrustScore rating, stars, review count, categories, and location. Also returns matching categories (feed a category_id into trustpilot_category_companies). 10 results per page; filter by minimum rating and minimum review count.

NameTypeReqDescription
min_ratingstringMinimum TrustScore
min_review_countstringMinimum number of reviews
pageintegerPage number, 1-500 (default: 1). Each page returns up to 10 results.
querystringyesCompany name or keyword (max 500 characters)

No output schema declared.

No examples provided.

search_twitter ~120

Search Twitter/X posts.

NameTypeReqDescription
get_sentimentbooleanAdd AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request en…
pagesintegerNumber of pages to fetch, 1-20 (default: 1)
querystringyesSearch keyword (max 500 characters)
sort_bystringSort order: "most_recent" or "relevance"

No output schema declared.

No examples provided.

search_twitter_users ~68

Search Twitter/X users by keyword. Returns profile data including username, bio, follower counts, and verification status.

NameTypeReqDescription
pagesintegerNumber of pages to fetch, 1-20 (default: 1)
querystringyesSearch keyword (max 500 characters)

No output schema declared.

No examples provided.

search_web ~231

Search the web (Google organic results). Returns title, URL, snippet, source and domain for each result. Supports country and language targeting, time filters, city-level geo, and an optional Google AI Overview.

NameTypeReqDescription
countrystring2-letter country code (default: "us")
devicestringDevice profile: "desktop" or "mobile"
include_ai_overviewbooleanInclude Google AI Overview when available (+$0.002 flat surcharge)
languagestring2-letter language code (default: "en")
locationstringCity-level geo location (e.g. "London,England,United Kingdom")
pagesintegerNumber of result pages to fetch, 1-10 (default: 1). 10 results per page.
querystringyesSearch keyword (max 500 characters). Supports Google advanced operators (site:, inurl:, intitle:, etc.)
timestringTime filter: "any", "hour", "day", "week", "month", or "year"

No output schema declared.

No examples provided.

search_youtube ~133

Search YouTube videos.

NameTypeReqDescription
get_sentimentbooleanAdd AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request en…
pagesintegerNumber of pages to fetch, 1-20 (default: 1)
querystringyesSearch keyword (max 500 characters)
upload_datestringFilter by upload date: "last_hour", "today", "this_week", "this_month", or "this_year"

No output schema declared.

No examples provided.

search_youtube_channels ~65

Search YouTube channels by keyword. Returns channel name, description, subscriber count, and thumbnail.

NameTypeReqDescription
pagesintegerNumber of pages to fetch, 1-20 (default: 1)
querystringyesSearch keyword (max 500 characters)

No output schema declared.

No examples provided.

threads_user_posts ~121

Get a single Threads (Meta's Threads app) user's recent posts by username. Returns post text, engagement metrics, media, timestamps, and permalinks. Billed $0.006 per request.

NameTypeReqDescription
get_sentimentbooleanAdd AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request en…
usernamestringyesThreads username, with or without leading @ (max 100 characters)

No output schema declared.

No examples provided.

threads_user_profile ~72

Get the full profile for a single Threads (Meta's Threads app) user by username. Returns biography, bio links, follower count, verification status, and profile metadata. Billed $0.006 per request.

NameTypeReqDescription
usernamestringyesThreads username, with or without leading @ (max 100 characters)

No output schema declared.

No examples provided.

tiktok_user_profile ~147

Get the full profile for a single TikTok user by username, numeric user ID, or profile URL. Returns bio, bio link, follower/following counts, total likes, video count, verification status, join date, and linked Instagram/X/YouTube accounts. Provide exactly one of username, user_id, or url.

NameTypeReqDescription
urlstringTikTok profile URL, e.g. https://www.tiktok.com/@tiktok (max 500 characters)
user_idstringNumeric TikTok user ID, as returned by search_tiktok_users
usernamestringTikTok username, with or without leading @ (max 100 characters)

No output schema declared.

No examples provided.

tiktok_video_details ~124

Get full details for a single TikTok video by video URL or numeric video ID. Returns the caption, play/like/comment/share/save counts, watermark-free playback and download URLs, cover images, music track info, and author details. Provide exactly one of url or video_id.

NameTypeReqDescription
urlstringTikTok video URL, e.g. https://www.tiktok.com/@tiktok/video/7516594811734854943 (max 500 characters)
video_idstringNumeric TikTok video ID, as returned by search_tiktok

No output schema declared.

No examples provided.

trustpilot_category_companies ~208

List the companies in a Trustpilot category (20 per page, up to 500 pages) with name, domain, TrustScore, review count, categories and location, plus the category's size and subcategories. Filter by country, minimum rating and claimed status; sort by recommended or recently reviewed. Category IDs: see /docs/trustpilot-category-ids or search_trustpilot_categories.

NameTypeReqDescription
category_idstringyesTrustpilot category slug (e.g. electronics_technology, bank) or a trustpilot.com/categories/... URL
claimedbooleanOnly companies that have claimed their Trustpilot profile
countrystring2-letter ISO 3166-1 country code (default: all countries)
min_ratingstringMinimum TrustScore
pageintegerPage number, 1-500 (default: 1). Each page returns up to 20 companies.
sort_bystringSort order

No output schema declared.

No examples provided.

trustpilot_category_details ~79

Get a Trustpilot category: display name, number of businesses, parent category, and its subcategories with their ids and business counts. Works for top-level, second- and third-level category slugs.

NameTypeReqDescription
category_idstringyesTrustpilot category slug (e.g. electronics_technology) or a trustpilot.com/categories/... URL

No output schema declared.

No examples provided.

trustpilot_category_newest ~84

Get the newest companies added to a Trustpilot category (a short unpaginated list, often 0-10 entries) with name, domain, TrustScore, review count and location, plus the category's size and subcategories.

NameTypeReqDescription
category_idstringyesTrustpilot category slug (e.g. bank) or a trustpilot.com/categories/... URL

No output schema declared.

No examples provided.

trustpilot_company_reviews ~329

Get a company's Trustpilot reviews plus its full profile (TrustScore, star rating, review counts, per-star breakdown, categories, claimed/verification status, reply behaviour, contact details). Each review has rating, title, text, dates, verification level, likes, author id/name/country and the company's reply. Filter by star rating, recency, language, verified-only, has-reply, or keyword. 20 reviews per page, up to 10 pages in one call.

NameTypeReqDescription
domainstringyesCompany website domain (e.g. gossby.com) or its Trustpilot review-page URL
get_sentimentbooleanAdd AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request en…
languagestring2-letter ISO 639-1 language code (default: all languages)
pagesintegerPages to fetch, 1-10 (default: 1). Each page returns up to 20 reviews and is billed as one request.
posted_agostringOnly reviews from this period
querystringOnly reviews matching this keyword
ratingstringOnly these star ratings, comma-separated 1-5 (e.g. '1,2')
sort_bystringSort order
verifiedbooleanOnly verified reviews
with_repliesbooleanOnly reviews the company replied to

No output schema declared.

No examples provided.

trustpilot_user_profile ~133

Get a Trustpilot reviewer's public profile (name, country, review count, verified, likes, reads) and the reviews they have written across all companies, 20 per page, each with the company name/domain, rating, title, text, dates and the company's reply. The user_id is a review's author_id.

NameTypeReqDescription
pageintegerPage number, 1-500 (default: 1). Each page returns up to 20 reviews.
user_idstringyesReviewer ID (24 hex characters, a review's author_id) or a trustpilot.com/users/... URL

No output schema declared.

No examples provided.

truthsocial_user_posts ~172

Get a single Truth Social user's recent posts (their feed) by username. Returns post text, engagement metrics (replies, reposts, likes), media attachments, hashtags, reply status, and permalinks. Up to 20 posts per page; billed $0.006 per page.

NameTypeReqDescription
get_sentimentbooleanAdd AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request en…
pagesintegerNumber of pages to fetch, 1-20 (default: 1). Each page returns up to 20 posts
usernamestringyesTruth Social username, with or without leading @ (max 100 characters)

No output schema declared.

No examples provided.

twitter_trends ~51

Get the current trending topics for a specific location on Twitter/X. Use woeid=1 for Worldwide.

NameTypeReqDescription
woeidintegeryesWhere On Earth ID for the location. Use 1 for Worldwide.

No output schema declared.

No examples provided.

twitter_tweet_comments ~106

Get the comments (replies) on a specific tweet.

NameTypeReqDescription
get_sentimentbooleanAdd AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request en…
pagesintegerNumber of pages to fetch, 1-20 (default: 1)
tweet_idstringyesNumeric tweet ID

No output schema declared.

No examples provided.

twitter_tweet_details ~94

Get detailed information for a single tweet by its ID. Returns full content, engagement metrics, and author info.

NameTypeReqDescription
get_sentimentbooleanAdd AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request en…
tweet_idstringyesNumeric tweet ID

No output schema declared.

No examples provided.

twitter_tweet_quotes ~103

Get the quote tweets for a specific tweet.

NameTypeReqDescription
get_sentimentbooleanAdd AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request en…
pagesintegerNumber of pages to fetch, 1-20 (default: 1)
tweet_idstringyesNumeric tweet ID

No output schema declared.

No examples provided.

twitter_tweet_retweets ~54

Get the users who retweeted a specific tweet.

NameTypeReqDescription
pagesintegerNumber of pages to fetch, 1-20 (default: 1)
tweet_idstringyesNumeric tweet ID

No output schema declared.

No examples provided.

twitter_user_followers ~59

Get the followers of a specific Twitter/X user.

NameTypeReqDescription
pagesintegerNumber of pages to fetch, 1-20 (default: 1)
usernamestringyesTwitter username (without @, max 50 characters)

No output schema declared.

No examples provided.

twitter_user_following ~68

Get the accounts that a specific Twitter/X user is following.

NameTypeReqDescription
pagesintegerNumber of pages to fetch, 1-175 (default: 1). Each page returns ~50 accounts.
usernamestringyesTwitter username (without @, max 50 characters)

No output schema declared.

No examples provided.

twitter_user_profile ~54

Get detailed profile information for a Twitter/X user by username. Returns follower/following counts, bio, verification status, and account metadata.

NameTypeReqDescription
usernamestringyesTwitter username (without @, max 50 characters)

No output schema declared.

No examples provided.

twitter_user_replies ~110

Get replies posted by a specific Twitter/X user.

NameTypeReqDescription
get_sentimentbooleanAdd AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request en…
pagesintegerNumber of pages to fetch, 1-20 (default: 1)
usernamestringyesTwitter username (without @, max 50 characters)

No output schema declared.

No examples provided.

twitter_user_tweets ~110

Get tweets posted by a specific Twitter/X user.

NameTypeReqDescription
get_sentimentbooleanAdd AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request en…
pagesintegerNumber of pages to fetch, 1-20 (default: 1)
usernamestringyesTwitter username (without @, max 50 characters)

No output schema declared.

No examples provided.

twitter_verified_followers ~65

Get the verified (blue checkmark) followers of a specific Twitter/X user.

NameTypeReqDescription
pagesintegerNumber of pages to fetch, 1-20 (default: 1)
usernamestringyesTwitter username (without @, max 50 characters)

No output schema declared.

No examples provided.

Common questions

What is the API Direct MCP server?

API Direct is an MCP server listed in the public MCP registry as io.apidirect/api-direct. Search social media, news, forums and Google Maps: LinkedIn, X, Reddit, TikTok, YouTube. This page covers its hosted endpoint (https://apidirect.io/mcp).

Is the API Direct MCP server safe to use?

API Direct scores 75 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the API Direct MCP server expose?

API Direct exposes 102 tools: list_skills, get_skill, search_linkedin, linkedin_person_posts, linkedin_post_details, and 97 more. Their descriptions and schemas cost roughly 14,256 tokens of context every time the server is loaded.

Does the API Direct MCP server require authentication?

No. We connected to API Direct without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the API Direct MCP server still maintained?

API Direct is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.