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
amazon_best_sellers ~161

Get Amazon best-seller rankings for a category — Best Sellers, New Releases, Movers & Shakers, Most Wished For, or Gift Ideas. Each item includes rank, rank change, ASIN, title, price, and rating. Each page returns up to 50 ranked items (rankings typically cover the top 100).

NameTypeReqDescription
categorystringyesCategory slug, e.g. electronics or software (see /docs/amazon-categories)
countrystringMarketplace country code (default: "us")
pageintegerPage number, 1 or 2 (default: 1). Each page returns up to 50 items; rankings cover the top 100.
typestringRanking type

No output schema declared.

No examples provided.

amazon_product_details ~104

Get full details for an Amazon product by ASIN (the 10-character code returned by search_amazon_products). Returns pricing, buy box with seller_id, availability, condition, photos, videos, specs, about bullets, description, rating breakdown per star, and top reviews.

NameTypeReqDescription
asinstringyes10-character Amazon ASIN (e.g. B07ZPKN6YR)
countrystringMarketplace country code (default: "us")

No output schema declared.

No examples provided.

amazon_seller_products ~123

Get the catalog of products sold by an Amazon seller by seller ID. Returns the same product objects as search_amazon_products plus the seller's total catalog size. Each page returns ~16 results; sortable by price, reviews, newest, or best sellers.

NameTypeReqDescription
countrystringMarketplace country code (default: "us")
pageintegerPage number, 1-50 (default: 1). Each page returns ~16 results.
seller_idstringyesAmazon seller ID
sort_bystringSort order

No output schema declared.

No examples provided.

amazon_seller_profile ~115

Get an Amazon seller's profile by seller ID (from a product's main_buy_box.seller_id). Returns seller name, logo, about text, registered business name and address, average rating, total ratings, positive-feedback percentage, and a feedback breakdown over 30 days / 90 days / 12 months / lifetime.

NameTypeReqDescription
countrystringMarketplace country code (default: "us")
seller_idstringyesAmazon seller ID (e.g. A2L77EE7U53NWQ)

No output schema declared.

No examples provided.

amazon_seller_reviews ~176

Get customer feedback for an Amazon seller by seller ID. Each review includes author name, text, star rating, date, and whether the seller responded. Filter by star rating (5_stars..1_stars) or positive/critical sentiment; paginate with page until has_next_page is false.

NameTypeReqDescription
countrystringMarketplace country code (default: "us")
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-50 (default: 1)
seller_idstringyesAmazon seller ID
star_ratingstringStar rating filter

No output schema declared.

No examples provided.

batch_requests ~145

Execute up to 100 API Direct requests in a single call — any mix of the other tools' endpoints (e.g. 50 twitter_user_profile lookups + 50 instagram_user_profile lookups). Items run concurrently server-side and each returns its own status and body, in input order. The batch call itself is free; each item bills at its endpoint's normal rate. Not supported inside a batch: /v1/web/ai-mode. Large batches can take several minutes. See /docs/batch.

NameTypeReqDescription
requestsarrayyes1-100 items to execute. Each item's params are exactly the query parameters that endpoint accepts when called directly (string or number values).

No output schema declared.

No examples provided.

bluesky_post_comments ~192

Get the replies to a Bluesky post. Billed $0.003 per request. Provide exactly one of url or post_id.

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…
post_idstringThe post's AT URI as returned in post_id, e.g. at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l (max 200 characters).
urlstringBluesky post URL, e.g. https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l (max 500 characters).

No output schema declared.

No examples provided.

bluesky_post_details ~194

Get a single Bluesky post by URL or ID. Billed $0.003 per request. Provide exactly one of url or post_id.

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…
post_idstringThe post's AT URI as returned in post_id, e.g. at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l (max 200 characters).
urlstringBluesky post URL, e.g. https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l (max 500 characters).

No output schema declared.

No examples provided.

bluesky_post_likes ~184

Get the users who liked a Bluesky post, newest first. Billed $0.003 per page. Provide exactly one of url or post_id.

NameTypeReqDescription
pagesintegerNumber of pages to fetch, 1-20 (default: 1). Each page returns up to 50 accounts; you are billed per page returned.
post_idstringThe post's AT URI as returned in post_id, e.g. at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l (max 200 characters).
urlstringBluesky post URL, e.g. https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l (max 500 characters).

No output schema declared.

No examples provided.

bluesky_post_quotes ~234

Get the posts that quote a Bluesky post, newest first. Billed $0.003 per page. Provide exactly one of url or post_id.

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 50 posts; you are billed per page returned.
post_idstringThe post's AT URI as returned in post_id, e.g. at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l (max 200 characters).
urlstringBluesky post URL, e.g. https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l (max 500 characters).

No output schema declared.

No examples provided.

bluesky_post_reposts ~185

Get the users who reposted a Bluesky post, newest first. Billed $0.003 per page. Provide exactly one of url or post_id.

NameTypeReqDescription
pagesintegerNumber of pages to fetch, 1-20 (default: 1). Each page returns up to 50 accounts; you are billed per page returned.
post_idstringThe post's AT URI as returned in post_id, e.g. at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l (max 200 characters).
urlstringBluesky post URL, e.g. https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l (max 500 characters).

No output schema declared.

No examples provided.

bluesky_user_followers ~141

Get the followers of a Bluesky user, newest first. Billed $0.003 per page. Provide exactly one of username or url.

NameTypeReqDescription
pagesintegerNumber of pages to fetch, 1-20 (default: 1). Each page returns up to 50 accounts; you are billed per page returned.
urlstringBluesky profile URL, e.g. https://bsky.app/profile/bsky.app (max 500 characters).
usernamestringBluesky handle, e.g. bsky.app, with or without leading @, or the account's DID (max 100 characters).

No output schema declared.

No examples provided.

bluesky_user_following ~141

Get the accounts a Bluesky user follows, newest first. Billed $0.003 per page. Provide exactly one of username or url.

NameTypeReqDescription
pagesintegerNumber of pages to fetch, 1-20 (default: 1). Each page returns up to 50 accounts; you are billed per page returned.
urlstringBluesky profile URL, e.g. https://bsky.app/profile/bsky.app (max 500 characters).
usernamestringBluesky handle, e.g. bsky.app, with or without leading @, or the account's DID (max 100 characters).

No output schema declared.

No examples provided.

bluesky_user_likes ~193

Get the posts a Bluesky user has liked, newest first. Billed $0.003 per page. Provide exactly one of username or url.

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 50 posts; you are billed per page returned.
urlstringBluesky profile URL, e.g. https://bsky.app/profile/bsky.app (max 500 characters).
usernamestringBluesky handle, e.g. bsky.app, with or without leading @, or the account's DID (max 100 characters).

No output schema declared.

No examples provided.

bluesky_user_posts ~222

Get a user's feed by handle: their posts, replies, and reposts in feed order (the pinned post first, then newest first), each flagged with is_reply, is_repost, and is_pinned. Billed $0.003 per page. Provide exactly one of username or url.

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 50 posts; you are billed per page returned.
urlstringBluesky profile URL, e.g. https://bsky.app/profile/bsky.app (max 500 characters).
usernamestringBluesky handle, e.g. bsky.app, with or without leading @, or the account's DID (max 100 characters).

No output schema declared.

No examples provided.

bluesky_user_profile ~106

Get a Bluesky user's full profile by handle, DID, or profile URL. Billed $0.003 per request. Provide exactly one of username or url.

NameTypeReqDescription
urlstringBluesky profile URL, e.g. https://bsky.app/profile/bsky.app (max 500 characters).
usernamestringBluesky handle, e.g. bsky.app, with or without leading @, or the account's DID (max 100 characters).

No output schema declared.

No examples provided.

facebook_group_details ~35

Get Facebook group details including name, description, members count, and privacy setting.

NameTypeReqDescription
urlstringyesFacebook group URL

No output schema declared.

No examples provided.

facebook_group_posts ~126

Get posts from a public Facebook group.

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…
group_idstringyesFacebook group ID (numeric)
pagesintegerNumber of pages to fetch (1-15, default 1). Billed per page.
sort_bystringSort order: most_recent or relevance (default: most_recent)

No output schema declared.

No examples provided.

facebook_page_details ~50

Get detailed information about a Facebook page including name, followers, categories, contact info, and verification status.

NameTypeReqDescription
urlstringyesFacebook page URL (e.g. https://www.facebook.com/facebook)

No output schema declared.

No examples provided.

facebook_page_photos ~55

Get photos from a Facebook page.

NameTypeReqDescription
page_idstringyesFacebook page ID (numeric)
pagesintegerNumber of pages to fetch (1-15, default 1). Billed per page.

No output schema declared.

No examples provided.

facebook_page_posts ~135

Get recent posts from a Facebook page by page ID.

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…
page_idstringyesFacebook page ID (numeric)
pagesintegerNumber of pages to fetch (1-15, default 1). Billed per page.
start_datestringFilter posts from this date

No output schema declared.

No examples provided.

facebook_page_reels ~122

Get reels from a Facebook page. Requires the reels_page_id from the page details endpoint.

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). Billed per page.
reels_page_idstringyesReels page ID (from page details endpoint)

No output schema declared.

No examples provided.

facebook_page_reviews ~105

Get reviews for a Facebook 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…
page_idstringyesFacebook page ID (numeric)
pagesintegerNumber of pages to fetch (1-15, default 1). Billed per page.

No output schema declared.

No examples provided.

facebook_page_videos ~121

Get videos from a Facebook page. Requires the delegate_page_id from the page details endpoint.

NameTypeReqDescription
delegate_page_idstringyesDelegate page ID (from page details endpoint)
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.

No output schema declared.

No examples provided.

facebook_post_comments ~146

Get comments on a Facebook post by post ID. Returns each comment's text, author details, reaction and reply counts, date, and any attachment.

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). Billed per page.
post_idstringyesFacebook post ID (pfbid or numeric, from facebook_page_posts, facebook_group_posts, or search_facebook_posts)

No output schema declared.

No examples provided.

get_skill ~174

Get a ready-made skill's step-by-step playbook with your inputs filled in, then follow it. Returns an ordered recipe of tool calls to execute. PREFER running a matching skill over improvising raw searches — skills encode the filters and sequencing that produce far better results. If the user names a skill (e.g. "use the local-buying-intent-capture skill"), pass that as skill_id directly; otherwise call list_skills first to find the right id.

NameTypeReqDescription
inputsobjectThe skill's inputs as key/value pairs, e.g. {"competitor": "Notion"}. Optional — omit and the playbook will tell you what to ask the user for.
skill_idstringyesThe skill id from list_skills, e.g. "competitor-conquest-radar".

No output schema declared.

No examples provided.

get_youtube_comments ~127

Get comments from a YouTube video. Returns each comment's text, author, like count, reply count, date, a direct link, and up to 5 preview replies. Billed $0.005 per page.

NameTypeReqDescription
pagesintegerNumber of pages to fetch, 1-20 (default: 1). Each page returns up to ~100 comments.
sort_bystringSort order: most_recent (newest first) or relevance (default: relevance)
urlstringyesYouTube video URL or 11-character video ID

No output schema declared.

No examples provided.

google_ai_mode ~120

Send a prompt to Google's AI Mode and get back a structured conversational reply (reply_parts: paragraphs, headings, lists, images) with reference_links citations. Use session_token from a previous response to continue the conversation.

NameTypeReqDescription
countrystring2-letter country code (default: "us")
languagestring2-letter language code (default: "en")
promptstringyesThe AI Mode prompt (max 12000 characters)
session_tokenstringToken from a prior response to continue the conversation

No output schema declared.

No examples provided.

instagram_comment_replies ~247

Get the replies to one Instagram comment (its thread) by post URL or shortcode plus the comment ID from instagram_post_comments. Returns each reply's text, author details, like count, date, link, and the comment it replies to. Billed per page. Returns an empty list when the comment has no replies. Provide exactly one of url or code.

NameTypeReqDescription
codestringThe post's shortcode, e.g. CxYQJO8xuC6, or numeric media ID (max 50 characters)
comment_idstringyesThe comment's numeric ID, from instagram_post_comments (comment_id)
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)
urlstringInstagram post or reel URL, e.g. https://www.instagram.com/p/CxYQJO8xuC6/ (max 500 characters)

No output schema declared.

No examples provided.

instagram_hashtag_posts ~230

Get Instagram posts and reels for a hashtag. Returns the same post objects as search_instagram (captions, engagement metrics, media URLs, author metadata, hashtags, mentions) plus the hashtag's total post count, up to about 30 new posts per page (billed per page). sort_by picks the hashtag page tab: top (default), recent, or reels.

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…
hashtagstringyesHashtag, with or without the leading # (max 100 characters), e.g. summer
pagesintegerNumber of pages to fetch, 1-10 (default: 1). Each page adds up to about 30 posts (repeats across pages are removed)
sort_bystringHashtag tab: top (default), recent (newest first), or reels (Reels only)

No output schema declared.

No examples provided.

instagram_highlight_stories ~127

Get the stories saved in one Instagram highlight by highlight ID (from instagram_user_highlights) or highlight URL. Returns the highlight's title and cover plus every story's media URLs, post time, link stickers, mentions, tagged users, location, and audio. Media URLs are temporary (~6-24 hours).

NameTypeReqDescription
highlight_idstringyesHighlight ID, e.g. 17987606483520330 (also accepts highlight:17987606483520330), or a highlight URL like https://www.instagram.com/stories/highlights/17987606483520330/

No output schema declared.

No examples provided.

instagram_post_comments ~261

Get the comments on an Instagram post or reel by post URL or shortcode. Returns each comment's text, author details, like and reply counts, date, and link, up to 15 per page (billed per page), sorted by popular (default, includes pinned) or recent. Use instagram_comment_replies to fetch a comment's replies. Provide exactly one of url or code.

NameTypeReqDescription
codestringThe post's shortcode, e.g. CxYQJO8xuC6, or numeric media ID (max 50 characters)
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 15 comments
sort_bystringSort order: popular (default, includes pinned comments) or recent
urlstringInstagram post or reel URL, e.g. https://www.instagram.com/p/CxYQJO8xuC6/ (max 500 characters)

No output schema declared.

No examples provided.

instagram_post_details ~192

Get full details for a single Instagram post, reel, or IGTV video by post URL or shortcode. Returns the caption, like/comment/share/view counts, media URLs, carousel slides, audio track info, tagged users, location, and author details. Provide exactly one of url or code.

NameTypeReqDescription
codestringThe post's shortcode, e.g. CxYQJO8xuC6, or numeric media ID (max 50 characters)
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…
urlstringInstagram post, reel, or story URL, e.g. https://www.instagram.com/p/CxYQJO8xuC6/ (max 500 characters)

No output schema declared.

No examples provided.

instagram_post_likes ~145

Get the users who liked an Instagram post or reel by post URL or shortcode. Returns username, full name, user ID, verification and privacy status, and profile picture for every liker Instagram exposes (typically several hundred), plus the post's total like count, in a single request. Provide exactly one of url or code.

NameTypeReqDescription
codestringThe post's shortcode, e.g. CxYQJO8xuC6, or numeric media ID (max 50 characters)
urlstringInstagram post or reel URL, e.g. https://www.instagram.com/p/CxYQJO8xuC6/ (max 500 characters)

No output schema declared.

No examples provided.

instagram_user_followers ~222

Get an Instagram user's followers by username or profile URL. Returns username, full name, user ID, verification and privacy status, and profile picture for each follower, 50 per page (billed per page returned). Verified (blue checkmark) accounts return only their first ~50 followers; extra pages are not billed. Pass query to search the followers instead (up to 50 matches, one request). Provide exactly one of username or url.

NameTypeReqDescription
pagesintegerNumber of pages to fetch, 1-40 (default: 1). Each page returns up to 50 followers; verified accounts return the first page only
querystringOptional keyword to search this user's followers by username or name (max 100 characters). Returns up to 50 matches in a single request; pages is ignored
urlstringInstagram profile URL, e.g. https://instagram.com/natgeo (max 500 characters)
usernamestringInstagram username, with or without leading @ (max 100 characters)

No output schema declared.

No examples provided.

instagram_user_following ~199

Get the accounts an Instagram user follows, by username or profile URL. Returns username, full name, user ID, verification and privacy status, and profile picture for each account, 50 per page (billed per page returned). Pass query to search the following list instead (up to 50 matches, one request). Provide exactly one of username or url.

NameTypeReqDescription
pagesintegerNumber of pages to fetch, 1-40 (default: 1). Each page returns up to 50 accounts
querystringOptional keyword to search the accounts this user follows by username or name (max 100 characters). Returns up to 50 matches in a single request; pages is ignored
urlstringInstagram profile URL, e.g. https://instagram.com/natgeo (max 500 characters)
usernamestringInstagram username, with or without leading @ (max 100 characters)

No output schema declared.

No examples provided.

instagram_user_highlights ~117

Get an Instagram user's story highlights tray by username or profile URL. Returns each highlight's ID, title, story count, cover image, created / updated dates, and link. Use instagram_highlight_stories with a highlight_id to fetch the stories inside a highlight. Provide exactly one of username or url.

NameTypeReqDescription
urlstringInstagram profile URL, e.g. https://instagram.com/natgeo (max 500 characters)
usernamestringInstagram username, with or without leading @ (max 100 characters)

No output schema declared.

No examples provided.

instagram_user_posts ~198

Get a single Instagram user's recent posts and reels (their feed) by profile URL or username. Returns captions, engagement metrics (likes, comments, shares, views), author metadata, hashtags, and mentions. Up to 12 posts per page; billed per page. Provide exactly one of url or username.

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 12 posts
urlstringInstagram profile URL, e.g. https://instagram.com/natgeo (max 500 characters)
usernamestringInstagram username, with or without leading @ (max 100 characters)

No output schema declared.

No examples provided.

instagram_user_profile ~114

Get the full profile for a single Instagram user by username or profile URL. Returns biography, follower / following counts, media count, category, external link, verification status, country the account is based in, join date, verification date, and former usernames. Provide exactly one of username or url.

NameTypeReqDescription
urlstringInstagram profile URL, e.g. https://instagram.com/natgeo (max 500 characters)
usernamestringInstagram username, with or without leading @ (max 100 characters)

No output schema declared.

No examples provided.

instagram_user_stories ~134

Get an Instagram user's currently active stories (last 24 hours) by username or profile URL. Returns each story's media URLs (image or video), post time and expiry, link stickers, mentions, tagged users, location, and audio. Media URLs are temporary (~6-24 hours). Returns an empty list when the user has no active stories. Provide exactly one of username or url.

NameTypeReqDescription
urlstringInstagram profile URL, e.g. https://instagram.com/natgeo (max 500 characters)
usernamestringInstagram username, with or without leading @ (max 100 characters)

No output schema declared.

No examples provided.

linkedin_company_details ~55

Get detailed information about a LinkedIn company page by URL. Returns company name, description, employee count, locations, specialities, industry, website, and similar companies.

NameTypeReqDescription
urlstringyesLinkedIn company page URL

No output schema declared.

No examples provided.

linkedin_company_posts ~123

Get recent posts from a LinkedIn company page by URL. Returns posts with engagement metrics (likes, comments, shares, reactions).

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-50 (default: 1). 10 posts per page
urlstringyesLinkedIn company page URL

No output schema declared.

No examples provided.

linkedin_job_details ~86

Get detailed information about a specific LinkedIn job listing by URL or numeric job ID. Returns title, company, location, posting date, job type, experience level, workplace type, industry, salary, benefits, and full description.

NameTypeReqDescription
urlstringyesLinkedIn job URL (e.g. https://linkedin.com/jobs/view/1234567890) or numeric job ID

No output schema declared.

No examples provided.

linkedin_person_posts ~157

Get recent posts authored by a LinkedIn person by profile URL or public slug. Returns posts with engagement metrics (likes, comments, shares, reactions), author info, images, videos, and articles.

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-30 (default: 1). 20 posts per page — up to ~600 of the person's most recent posts.
urlstringyesLinkedIn profile URL or public slug (e.g. williamhgates)

No output schema declared.

No examples provided.

linkedin_post_details ~105

Get detailed information about a specific LinkedIn post by URL. Returns full post text, author details, and engagement metrics (likes, comments, shares, reaction breakdowns).

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…
urlstringyesLinkedIn post URL

No output schema declared.

No examples provided.

list_skills ~196

START HERE for common goals. Lists the ready-made API Direct skills — expert playbooks that chain these tools (with non-obvious filters like author_title, mentions_company, author_company, freshness windows and AI sentiment) to deliver a concrete outcome: find leads, intercept a competitor's unhappy customers, source talent, monitor brand/reputation, detect just-raised startups, build a local acquisition list, run due diligence, and more. Whenever the user's request looks like lead-gen, competitor/brand monitoring, recruiting, due diligence, deal sourcing or market research, call this FIRST to check for a matching playbook before improvising your own searches. Returns each skill's id, name, category, what it does, and its inputs. Then call get_skill to run one.

NameTypeReqDescription
categorystringOptional: filter to a category substring, e.g. "sales", "recruiting", "investing", "crisis".

No output schema declared.

No examples provided.

place_details ~143

Get full details for a Google Maps place by place_id (the ChIJ... value returned by search_places). Returns name, address, phone, website, rating, review counts per star, opening hours, photos sample, coordinates, plus codes, menu link, owner info, and an emails / phones / social profile scrape of the place's website.

NameTypeReqDescription
countrystring2-letter country code (default: "us")
languagestring2-letter language code (default: "en")
place_idstringyesGoogle place_id (e.g. ChIJifIePKtZwokRVZ-UdRGkZzs)

No output schema declared.

No examples provided.

place_photos ~164

Get photos and videos for a Google Maps place by place_id. Returns photo URLs (both standard and large), coordinates, and capture timestamps. Photos and videos are returned together — filter by the type field client-side if you want one or the other. Use the pages parameter to fetch more — each page returns up to 10 items and is billed as one request.

NameTypeReqDescription
countrystring2-letter country code (default: "us")
languagestring2-letter language code (default: "en")
pagesintegerNumber of pages to fetch, 1-10 (default: 1). Each page returns up to 10 items and is billed as one request.
place_idstringyesGoogle place_id

No output schema declared.

No examples provided.

place_reviews ~263

Get user reviews for a Google Maps place by place_id. Each review includes rating, review text, author info, timestamps, photos, and any owner response. Each page returns up to 10 reviews. The `language` parameter filters reviews to those originally written in that language (language=fr returns French reviews only, language=es returns Spanish only, etc.). Combine with sort_by (4 options) to surface a much larger pool.

NameTypeReqDescription
countrystring2-letter country code (default: "us")
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 language code (default: "en"). Filters reviews to those originally written in this language.
pagesintegerNumber of pages, 1-10 (default: 1). Each page returns up to 10 reviews and is billed as one request.
place_idstringyesGoogle place_id
sort_bystringSort order
translate_reviewsbooleanTranslate the returned reviews into the requested language

No output schema declared.

No examples provided.

search_amazon_products ~365

Search Amazon products by keyword across 24 marketplaces. Returns ASIN, title, price, original price, rating, ratings count, Prime status, sales volume, badges, and delivery info. Filter by category, price range, condition, brand, seller, Prime eligibility, deals, and rating floor. Each page returns ~16 results.

NameTypeReqDescription
brandstringBrand name(s), comma-separated for multiple
categorystringNumeric Amazon category node ID(s) from an Amazon URL's ?node= parameter, comma-separated
category_idstringCategory slug, e.g. electronics (see /docs/amazon-categories)
countrystringMarketplace country code (default: "us"). One of: us, au, br, ca, cn, fr, de, in, it, mx, nl, sg, es, tr, ae, gb, jp, sa, pl, se, be, eg, za, ie
deals_and_discountsstringDeals filter
four_stars_and_upbooleanOnly products rated 4 stars and up
is_primebooleanOnly products with Prime-eligible offers
max_pricenumberMaximum price in the marketplace currency
min_pricenumberMinimum price in the marketplace currency
pageintegerPage number, 1-20 (default: 1). Each page returns ~16 results.
product_conditionstringProduct condition filter
querystringyesSearch keyword or a product ASIN (max 500 characters)
seller_idstringOnly products from specific seller ID(s), comma-separated
sort_bystringSort order

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.