API Direct
REMOTE · APIDIRECT.IO · SCANNED SEP 20
Search social media, news, forums and Google Maps: LinkedIn, X, Reddit, TikTok, YouTube.
Available components
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
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation not fully verified: no authorisation is required to call this server, and 102 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
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
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
claude mcp add --transport http io-apidirect-api-direct 'https://apidirect.io/mcp'
{
"mcpServers": {
"io-apidirect-api-direct": {
"url": "https://apidirect.io/mcp"
}
}
} {
"servers": {
"io-apidirect-api-direct": {
"type": "http",
"url": "https://apidirect.io/mcp"
}
}
} [mcp_servers.io-apidirect-api-direct] url = "https://apidirect.io/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"io-apidirect-api-direct": {
"type": "remote",
"url": "https://apidirect.io/mcp",
"enabled": true
}
}
} openclaw mcp add io-apidirect-api-direct --url 'https://apidirect.io/mcp' --transport streamable-http
mcp_servers:
io-apidirect-api-direct:
url: "https://apidirect.io/mcp" {
"McpServers": {
"io-apidirect-api-direct": {
"Transport": "http",
"Url": "https://apidirect.io/mcp"
}
}
} assistant mcp add io-apidirect-api-direct -t streamable-http -u 'https://apidirect.io/mcp'
{
"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.
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.
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 |
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 →
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).
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | yes | Category slug, e.g. electronics or software (see /docs/amazon-categories) |
| country | string | – | Marketplace country code (default: "us") |
| page | integer | – | Page number, 1 or 2 (default: 1). Each page returns up to 50 items; rankings cover the top 100. |
| type | string | – | Ranking 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.
| Name | Type | Req | Description |
|---|---|---|---|
| asin | string | yes | 10-character Amazon ASIN (e.g. B07ZPKN6YR) |
| country | string | – | Marketplace 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.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | Marketplace country code (default: "us") |
| page | integer | – | Page number, 1-50 (default: 1). Each page returns ~16 results. |
| seller_id | string | yes | Amazon seller ID |
| sort_by | string | – | Sort 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.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | Marketplace country code (default: "us") |
| seller_id | string | yes | Amazon 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.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | Marketplace country code (default: "us") |
| get_sentiment | boolean | – | Add 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 | integer | – | Page number, 1-50 (default: 1) |
| seller_id | string | yes | Amazon seller ID |
| star_rating | string | – | Star 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.
| Name | Type | Req | Description |
|---|---|---|---|
| requests | array | yes | 1-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.
| Name | Type | Req | Description |
|---|---|---|---|
| get_sentiment | boolean | – | Add 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_id | string | – | The post's AT URI as returned in post_id, e.g. at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l (max 200 characters). |
| url | string | – | Bluesky 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.
| Name | Type | Req | Description |
|---|---|---|---|
| get_sentiment | boolean | – | Add 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_id | string | – | The post's AT URI as returned in post_id, e.g. at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l (max 200 characters). |
| url | string | – | Bluesky 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.
| Name | Type | Req | Description |
|---|---|---|---|
| pages | integer | – | Number of pages to fetch, 1-20 (default: 1). Each page returns up to 50 accounts; you are billed per page returned. |
| post_id | string | – | The post's AT URI as returned in post_id, e.g. at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l (max 200 characters). |
| url | string | – | Bluesky 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.
| Name | Type | Req | Description |
|---|---|---|---|
| get_sentiment | boolean | – | Add 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… |
| pages | integer | – | Number of pages to fetch, 1-20 (default: 1). Each page returns up to 50 posts; you are billed per page returned. |
| post_id | string | – | The post's AT URI as returned in post_id, e.g. at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l (max 200 characters). |
| url | string | – | Bluesky 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.
| Name | Type | Req | Description |
|---|---|---|---|
| pages | integer | – | Number of pages to fetch, 1-20 (default: 1). Each page returns up to 50 accounts; you are billed per page returned. |
| post_id | string | – | The post's AT URI as returned in post_id, e.g. at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l (max 200 characters). |
| url | string | – | Bluesky 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.
| Name | Type | Req | Description |
|---|---|---|---|
| pages | integer | – | Number of pages to fetch, 1-20 (default: 1). Each page returns up to 50 accounts; you are billed per page returned. |
| url | string | – | Bluesky profile URL, e.g. https://bsky.app/profile/bsky.app (max 500 characters). |
| username | string | – | Bluesky 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.
| Name | Type | Req | Description |
|---|---|---|---|
| pages | integer | – | Number of pages to fetch, 1-20 (default: 1). Each page returns up to 50 accounts; you are billed per page returned. |
| url | string | – | Bluesky profile URL, e.g. https://bsky.app/profile/bsky.app (max 500 characters). |
| username | string | – | Bluesky 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.
| Name | Type | Req | Description |
|---|---|---|---|
| get_sentiment | boolean | – | Add 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… |
| pages | integer | – | Number of pages to fetch, 1-20 (default: 1). Each page returns up to 50 posts; you are billed per page returned. |
| url | string | – | Bluesky profile URL, e.g. https://bsky.app/profile/bsky.app (max 500 characters). |
| username | string | – | Bluesky 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.
| Name | Type | Req | Description |
|---|---|---|---|
| get_sentiment | boolean | – | Add 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… |
| pages | integer | – | Number of pages to fetch, 1-20 (default: 1). Each page returns up to 50 posts; you are billed per page returned. |
| url | string | – | Bluesky profile URL, e.g. https://bsky.app/profile/bsky.app (max 500 characters). |
| username | string | – | Bluesky 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.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | – | Bluesky profile URL, e.g. https://bsky.app/profile/bsky.app (max 500 characters). |
| username | string | – | Bluesky 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.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | yes | Facebook group URL |
No output schema declared.
No examples provided.
facebook_group_posts ~126
Get posts from a public Facebook group.
| Name | Type | Req | Description |
|---|---|---|---|
| get_sentiment | boolean | – | Add 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_id | string | yes | Facebook group ID (numeric) |
| pages | integer | – | Number of pages to fetch (1-15, default 1). Billed per page. |
| sort_by | string | – | Sort 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.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | yes | Facebook 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.
| Name | Type | Req | Description |
|---|---|---|---|
| page_id | string | yes | Facebook page ID (numeric) |
| pages | integer | – | Number 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.
| Name | Type | Req | Description |
|---|---|---|---|
| end_date | string | – | Filter posts until this date |
| get_sentiment | boolean | – | Add 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_id | string | yes | Facebook page ID (numeric) |
| pages | integer | – | Number of pages to fetch (1-15, default 1). Billed per page. |
| start_date | string | – | Filter 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.
| Name | Type | Req | Description |
|---|---|---|---|
| get_sentiment | boolean | – | Add 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… |
| pages | integer | – | Number of pages to fetch (1-10, default 1). Billed per page. |
| reels_page_id | string | yes | Reels page ID (from page details endpoint) |
No output schema declared.
No examples provided.
facebook_page_reviews ~105
Get reviews for a Facebook page.
| Name | Type | Req | Description |
|---|---|---|---|
| get_sentiment | boolean | – | Add 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_id | string | yes | Facebook page ID (numeric) |
| pages | integer | – | Number 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.
| Name | Type | Req | Description |
|---|---|---|---|
| delegate_page_id | string | yes | Delegate page ID (from page details endpoint) |
| get_sentiment | boolean | – | Add 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… |
| pages | integer | – | Number 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.
| Name | Type | Req | Description |
|---|---|---|---|
| get_sentiment | boolean | – | Add 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… |
| pages | integer | – | Number of pages to fetch (1-20, default 1). Billed per page. |
| post_id | string | yes | Facebook 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.
| Name | Type | Req | Description |
|---|---|---|---|
| inputs | object | – | The 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_id | string | yes | The 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.
| Name | Type | Req | Description |
|---|---|---|---|
| pages | integer | – | Number of pages to fetch, 1-20 (default: 1). Each page returns up to ~100 comments. |
| sort_by | string | – | Sort order: most_recent (newest first) or relevance (default: relevance) |
| url | string | yes | YouTube 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.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | 2-letter country code (default: "us") |
| language | string | – | 2-letter language code (default: "en") |
| prompt | string | yes | The AI Mode prompt (max 12000 characters) |
| session_token | string | – | Token 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.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | The post's shortcode, e.g. CxYQJO8xuC6, or numeric media ID (max 50 characters) |
| comment_id | string | yes | The comment's numeric ID, from instagram_post_comments (comment_id) |
| get_sentiment | boolean | – | Add 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… |
| pages | integer | – | Number of pages to fetch, 1-10 (default: 1) |
| url | string | – | Instagram 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.
| Name | Type | Req | Description |
|---|---|---|---|
| get_sentiment | boolean | – | Add 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… |
| hashtag | string | yes | Hashtag, with or without the leading # (max 100 characters), e.g. summer |
| pages | integer | – | Number of pages to fetch, 1-10 (default: 1). Each page adds up to about 30 posts (repeats across pages are removed) |
| sort_by | string | – | Hashtag 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).
| Name | Type | Req | Description |
|---|---|---|---|
| highlight_id | string | yes | Highlight 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.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | The post's shortcode, e.g. CxYQJO8xuC6, or numeric media ID (max 50 characters) |
| get_sentiment | boolean | – | Add 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… |
| pages | integer | – | Number of pages to fetch, 1-20 (default: 1). Each page returns up to 15 comments |
| sort_by | string | – | Sort order: popular (default, includes pinned comments) or recent |
| url | string | – | Instagram 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.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | The post's shortcode, e.g. CxYQJO8xuC6, or numeric media ID (max 50 characters) |
| get_sentiment | boolean | – | Add 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… |
| url | string | – | Instagram 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.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | The post's shortcode, e.g. CxYQJO8xuC6, or numeric media ID (max 50 characters) |
| url | string | – | Instagram 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.
| Name | Type | Req | Description |
|---|---|---|---|
| pages | integer | – | Number of pages to fetch, 1-40 (default: 1). Each page returns up to 50 followers; verified accounts return the first page only |
| query | string | – | Optional 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 |
| url | string | – | Instagram profile URL, e.g. https://instagram.com/natgeo (max 500 characters) |
| username | string | – | Instagram 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.
| Name | Type | Req | Description |
|---|---|---|---|
| pages | integer | – | Number of pages to fetch, 1-40 (default: 1). Each page returns up to 50 accounts |
| query | string | – | Optional 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 |
| url | string | – | Instagram profile URL, e.g. https://instagram.com/natgeo (max 500 characters) |
| username | string | – | Instagram 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.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | – | Instagram profile URL, e.g. https://instagram.com/natgeo (max 500 characters) |
| username | string | – | Instagram 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.
| Name | Type | Req | Description |
|---|---|---|---|
| get_sentiment | boolean | – | Add 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… |
| pages | integer | – | Number of pages to fetch, 1-20 (default: 1). Each page returns up to 12 posts |
| url | string | – | Instagram profile URL, e.g. https://instagram.com/natgeo (max 500 characters) |
| username | string | – | Instagram 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.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | – | Instagram profile URL, e.g. https://instagram.com/natgeo (max 500 characters) |
| username | string | – | Instagram 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.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | – | Instagram profile URL, e.g. https://instagram.com/natgeo (max 500 characters) |
| username | string | – | Instagram 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.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | yes | LinkedIn 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).
| Name | Type | Req | Description |
|---|---|---|---|
| get_sentiment | boolean | – | Add 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 | integer | – | Page number, 1-50 (default: 1). 10 posts per page |
| url | string | yes | LinkedIn 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.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | yes | LinkedIn 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.
| Name | Type | Req | Description |
|---|---|---|---|
| get_sentiment | boolean | – | Add 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 | integer | – | Page number, 1-30 (default: 1). 20 posts per page — up to ~600 of the person's most recent posts. |
| url | string | yes | LinkedIn 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).
| Name | Type | Req | Description |
|---|---|---|---|
| get_sentiment | boolean | – | Add 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… |
| url | string | yes | LinkedIn 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.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | Optional: 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.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | 2-letter country code (default: "us") |
| language | string | – | 2-letter language code (default: "en") |
| place_id | string | yes | Google 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.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | 2-letter country code (default: "us") |
| language | string | – | 2-letter language code (default: "en") |
| pages | integer | – | Number of pages to fetch, 1-10 (default: 1). Each page returns up to 10 items and is billed as one request. |
| place_id | string | yes | Google 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.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | 2-letter country code (default: "us") |
| get_sentiment | boolean | – | Add 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… |
| language | string | – | 2-letter language code (default: "en"). Filters reviews to those originally written in this language. |
| pages | integer | – | Number of pages, 1-10 (default: 1). Each page returns up to 10 reviews and is billed as one request. |
| place_id | string | yes | Google place_id |
| sort_by | string | – | Sort order |
| translate_reviews | boolean | – | Translate 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.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand name(s), comma-separated for multiple |
| category | string | – | Numeric Amazon category node ID(s) from an Amazon URL's ?node= parameter, comma-separated |
| category_id | string | – | Category slug, e.g. electronics (see /docs/amazon-categories) |
| country | string | – | Marketplace 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_discounts | string | – | Deals filter |
| four_stars_and_up | boolean | – | Only products rated 4 stars and up |
| is_prime | boolean | – | Only products with Prime-eligible offers |
| max_price | number | – | Maximum price in the marketplace currency |
| min_price | number | – | Minimum price in the marketplace currency |
| page | integer | – | Page number, 1-20 (default: 1). Each page returns ~16 results. |
| product_condition | string | – | Product condition filter |
| query | string | yes | Search keyword or a product ASIN (max 500 characters) |
| seller_id | string | – | Only products from specific seller ID(s), comma-separated |
| sort_by | string | – | Sort order |
No output schema declared.
No examples provided.
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.