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 →
search_bluesky ~212
Search Bluesky posts by keyword. Billed $0.003 per page.
| Name | Type | Req | Description |
|---|---|---|---|
| end_date | string | – | Only posts up to this date (format: YYYY-MM-DD) |
| 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. |
| query | string | yes | Search keyword (max 500 characters). Bluesky search syntax works: "exact phrase", -exclude, from:handle, lang:en, #tag |
| sort_by | string | – | Sort order: "most_recent" or "relevance" |
| start_date | string | – | Only posts from this date onward (format: YYYY-MM-DD) |
No output schema declared.
No examples provided.
search_bluesky_users ~79
Search Bluesky users by keyword. Billed $0.003 per page.
| Name | Type | Req | Description |
|---|---|---|---|
| pages | integer | – | Number of pages to fetch, 1-20 (default: 1). Each page returns up to 50 users; you are billed per page returned. |
| query | string | yes | Search keyword (max 500 characters) |
No output schema declared.
No examples provided.
search_facebook_events ~134
Search Facebook events by keyword. Optionally scope results to a place with location_id (resolve one via the search_facebook_locations tool).
| Name | Type | Req | Description |
|---|---|---|---|
| end_date | string | – | Filter events until this date (YYYY-MM-DD) |
| location_id | string | – | Facebook location ID (from search_facebook_locations) to scope results to a place |
| pages | integer | – | Number of pages to fetch (1-15, default 1). Billed per page. |
| query | string | yes | Search keyword (max 500 characters) |
| start_date | string | – | Filter events from this date (YYYY-MM-DD) |
No output schema declared.
No examples provided.
search_facebook_locations ~83
Resolve a place name (city, region, or country) to Facebook location IDs. Use the returned id as the location_id argument to search_facebook_posts or search_facebook_events to scope a search to that place.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | Place name to resolve, e.g. "London" or "Paris, France" (max 500 characters) |
No output schema declared.
No examples provided.
search_facebook_pages ~55
Search Facebook pages by keyword.
| Name | Type | Req | Description |
|---|---|---|---|
| pages | integer | – | Number of pages to fetch (1-15, default 1). Billed per page. |
| query | string | yes | Search keyword (max 500 characters) |
No output schema declared.
No examples provided.
search_facebook_posts ~200
Search Facebook posts by keyword across all of Facebook. Optionally scope results to a place with location_id (resolve one via the search_facebook_locations tool).
| 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… |
| location_id | string | – | Facebook location ID (from search_facebook_locations) to scope results to a place |
| pages | integer | – | Number of pages to fetch (1-15, default 1). Billed per page. |
| query | string | yes | Search keyword (max 500 characters) |
| sort_by | string | – | Sort order: most_recent or relevance (default: relevance) |
| start_date | string | – | Filter posts from this date |
No output schema declared.
No examples provided.
search_facebook_videos ~152
Search Facebook videos by keyword.
| Name | Type | Req | Description |
|---|---|---|---|
| end_date | string | – | Filter videos 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… |
| pages | integer | – | Number of pages to fetch (1-15, default 1). Billed per page. |
| query | string | yes | Search keyword (max 500 characters) |
| sort_by | string | – | Sort order: most_recent or relevance (default: relevance) |
| start_date | string | – | Filter videos from this date |
No output schema declared.
No examples provided.
search_forums ~156
Search forum posts across the web.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | 2-letter ISO country code, e.g. "us", "gb" |
| 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-10 (default: 1). 10 posts per page |
| query | string | yes | Search keyword (max 500 characters) |
| time | string | – | Time filter: "any", "hour", "day", "week", "month", or "year" |
No output schema declared.
No examples provided.
search_instagram ~102
Search Instagram posts by keyword.
| 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) |
| query | string | yes | Search keyword (max 500 characters) |
No output schema declared.
No examples provided.
search_instagram_users ~43
Search Instagram users by keyword. Returns username, full name, verification status, and profile picture.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | Search keyword (max 500 characters) |
No output schema declared.
No examples provided.
search_linkedin ~434
Search LinkedIn posts. Provide a `query` and/or a filter below. Powerful filters: author (posts BY a person), author_title (posts by people with a given job title, e.g. Founder/CEO — applies alongside a query), author_company (posts by employees of a company id), from_company (posts by a company page id), mentions_company (posts that MENTION a company id), mentions_member (posts that mention a person), author_industry. Returns post content, engagement metrics, attached media, a has_content_entities repost flag, and optional AI sentiment.
| Name | Type | Req | Description |
|---|---|---|---|
| author | string | – | Posts authored by this person — profile URL, public slug (e.g. williamhgates), or member URN. Comma-separate for multiple. |
| author_company | string | – | Posts by people who work at this company. Numeric LinkedIn company id (from search_linkedin_companies). |
| author_industry | string | – | Posts by authors in these numeric LinkedIn industry id(s), comma-separated. Advanced; applies alongside a query. |
| author_title | string | – | Posts by authors whose job title matches this free text (e.g. "CEO", "Founder"). Applies alongside a query. |
| from_company | string | – | Posts authored by a company page. Numeric company id(s), comma-separated. |
| 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… |
| mentions_company | string | – | Posts that mention this company. Numeric company id. |
| mentions_member | string | – | Posts that mention this person (profile URL, public slug, or member URN). |
| page | integer | – | Page number, 1-25 (default: 1). 20 posts per page |
| query | string | – | Search keyword (max 500 characters). Optional if you supply a filter below. |
| sort_by | string | – | Sort order: "most_recent" or "relevance" |
No output schema declared.
No examples provided.
search_linkedin_companies ~68
Search LinkedIn companies by keyword. Returns company name, description, followers, and logo.
| Name | Type | Req | Description |
|---|---|---|---|
| page | integer | – | Page number, 1-100 (default: 1). 10 results per page. |
| query | string | yes | Search keyword (max 500 characters) |
No output schema declared.
No examples provided.
search_linkedin_jobs ~257
Search LinkedIn job listings by keyword. Returns title, company (with company_id), location, posting date, job type, experience level, workplace type, industry, salary, and full description. Filter by recency, job type, company, and location — useful as a hiring/expansion/funding signal.
| Name | Type | Req | Description |
|---|---|---|---|
| company_ids | string | – | Filter by company — comma-separated numeric LinkedIn company id(s) (from search_linkedin_companies). |
| job_type | string | – | Job type filter: full_time, part_time, contract, temporary, volunteer, internship, other. Comma-separated for multiple. |
| location_id | string | – | Filter by location — a numeric LinkedIn location id (see the Job Location IDs doc). |
| page | integer | – | Page number, 1-40 (default: 1). 25 jobs per page |
| posted_ago | string | – | Maximum job age: "1h", "24h", "7d", or "30d" (default: all time) |
| query | string | yes | Search keyword (max 500 characters) |
| sort_by | string | – | Sort order: "most_recent" or "relevance" (default: relevance) |
No output schema declared.
No examples provided.
search_news ~136
Search news articles from thousands of sources worldwide.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | 2-letter country code (default: "us") |
| language | string | – | 2-letter language code (default: "en") |
| limit | integer | – | Number of results, 1-100 (default: 10) |
| query | string | yes | Search keyword (max 500 characters) |
| source | string | – | Filter by news source domain, e.g. "bbc.com" |
| time_published | string | – | Time filter: "anytime", "1h", "1d", "7d", or "1y" |
No output schema declared.
No examples provided.
search_places ~222
Search Google Maps places (local businesses, points of interest) by free-text query. Returns place_id, name, address, phone, website, rating, review count, opening hours, coordinates, and more. Optionally bias results by geographic center (lat/lng/zoom). Each page returns up to 10 results.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | 2-letter country code (default: "us") |
| language | string | – | 2-letter language code (default: "en") |
| lat | number | – | Center latitude for geographic bias (use with lng) |
| lng | number | – | Center longitude for geographic bias (use with lat) |
| pages | integer | – | Number of pages, 1-20 (default: 1). Each page returns up to 10 results and is billed as one request. |
| query | string | yes | Search keyword, e.g. "coffee shops brooklyn" (max 500 characters) |
| zoom | integer | – | Map zoom level 1-20 (default: 13). Smaller widens radius. |
No output schema declared.
No examples provided.
search_reddit ~128
Search Reddit posts.
| 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-12 (default: 1). 20 posts per page |
| query | string | yes | Search keyword (max 500 characters) |
| sort_by | string | – | Sort order: "most_recent", "relevance", "hot", or "top" |
No output schema declared.
No examples provided.
search_reddit_comments ~123
Search Reddit comments.
| 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) |
| query | string | yes | Search keyword (max 500 characters) |
| sort_by | string | – | Sort order: "most_recent", "relevance", or "top" |
No output schema declared.
No examples provided.
search_reddit_users ~45
Search Reddit users by keyword. Returns profile data including username, karma scores, account age, and bio.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | Search keyword (max 500 characters) |
No output schema declared.
No examples provided.
search_threads ~111
Search Threads (Meta's Threads app) posts by keyword. Returns post text, author, engagement metrics, media, and post permalinks. Billed $0.006 per request.
| 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… |
| query | string | yes | Search keyword (max 500 characters) |
No output schema declared.
No examples provided.
search_threads_users ~57
Search Threads (Meta's Threads app) users by keyword. Returns username, full name, verification status, and profile picture. Billed $0.006 per request.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | Search keyword (max 500 characters) |
No output schema declared.
No examples provided.
search_tiktok ~194
Search TikTok videos by keyword.
| 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) |
| publish_time | integer | – | Time filter: 0=ALL, 1=24h, 7=week, 30=month, 90=3months, 180=6months |
| query | string | yes | Search keyword (max 500 characters) |
| region | string | – | 2-letter region code, e.g. "us", "gb", "jp" |
| sort_by | string | – | Sort order: "relevance", "most_recent", or "most_liked" |
No output schema declared.
No examples provided.
search_tiktok_users ~70
Search TikTok users by keyword. Returns username, bio, follower/following counts, likes, and video count.
| Name | Type | Req | Description |
|---|---|---|---|
| pages | integer | – | Number of pages to fetch, 1-10 (default: 1) |
| query | string | yes | Search keyword (max 500 characters) |
No output schema declared.
No examples provided.
search_trustpilot_categories ~82
Search Trustpilot categories by keyword. Returns up to 6 fuzzy matches with category_id and name; the search never returns zero matches, so check the names. Feed a category_id into trustpilot_category_companies or trustpilot_category_details.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | Keyword (max 200 characters), e.g. 'bank' or 'shop' |
No output schema declared.
No examples provided.
search_trustpilot_companies ~154
Search Trustpilot companies by name or keyword. Each match includes business_unit_id, name, domain, website, Trustpilot page URL, logo, TrustScore rating, stars, review count, categories, and location. Also returns matching categories (feed a category_id into trustpilot_category_companies). 10 results per page; filter by minimum rating and minimum review count.
| Name | Type | Req | Description |
|---|---|---|---|
| min_rating | string | – | Minimum TrustScore |
| min_review_count | string | – | Minimum number of reviews |
| page | integer | – | Page number, 1-500 (default: 1). Each page returns up to 10 results. |
| query | string | yes | Company name or keyword (max 500 characters) |
No output schema declared.
No examples provided.
search_twitter ~120
Search Twitter/X posts.
| 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) |
| query | string | yes | Search keyword (max 500 characters) |
| sort_by | string | – | Sort order: "most_recent" or "relevance" |
No output schema declared.
No examples provided.
search_twitter_users ~68
Search Twitter/X users by keyword. Returns profile data including username, bio, follower counts, and verification status.
| Name | Type | Req | Description |
|---|---|---|---|
| pages | integer | – | Number of pages to fetch, 1-20 (default: 1) |
| query | string | yes | Search keyword (max 500 characters) |
No output schema declared.
No examples provided.
search_web ~231
Search the web (Google organic results). Returns title, URL, snippet, source and domain for each result. Supports country and language targeting, time filters, city-level geo, and an optional Google AI Overview.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | 2-letter country code (default: "us") |
| device | string | – | Device profile: "desktop" or "mobile" |
| include_ai_overview | boolean | – | Include Google AI Overview when available (+$0.002 flat surcharge) |
| language | string | – | 2-letter language code (default: "en") |
| location | string | – | City-level geo location (e.g. "London,England,United Kingdom") |
| pages | integer | – | Number of result pages to fetch, 1-10 (default: 1). 10 results per page. |
| query | string | yes | Search keyword (max 500 characters). Supports Google advanced operators (site:, inurl:, intitle:, etc.) |
| time | string | – | Time filter: "any", "hour", "day", "week", "month", or "year" |
No output schema declared.
No examples provided.
search_youtube ~133
Search YouTube videos.
| 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) |
| query | string | yes | Search keyword (max 500 characters) |
| upload_date | string | – | Filter by upload date: "last_hour", "today", "this_week", "this_month", or "this_year" |
No output schema declared.
No examples provided.
search_youtube_channels ~65
Search YouTube channels by keyword. Returns channel name, description, subscriber count, and thumbnail.
| Name | Type | Req | Description |
|---|---|---|---|
| pages | integer | – | Number of pages to fetch, 1-20 (default: 1) |
| query | string | yes | Search keyword (max 500 characters) |
No output schema declared.
No examples provided.
threads_user_posts ~121
Get a single Threads (Meta's Threads app) user's recent posts by username. Returns post text, engagement metrics, media, timestamps, and permalinks. Billed $0.006 per request.
| 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… |
| username | string | yes | Threads username, with or without leading @ (max 100 characters) |
No output schema declared.
No examples provided.
threads_user_profile ~72
Get the full profile for a single Threads (Meta's Threads app) user by username. Returns biography, bio links, follower count, verification status, and profile metadata. Billed $0.006 per request.
| Name | Type | Req | Description |
|---|---|---|---|
| username | string | yes | Threads username, with or without leading @ (max 100 characters) |
No output schema declared.
No examples provided.
tiktok_user_profile ~147
Get the full profile for a single TikTok user by username, numeric user ID, or profile URL. Returns bio, bio link, follower/following counts, total likes, video count, verification status, join date, and linked Instagram/X/YouTube accounts. Provide exactly one of username, user_id, or url.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | – | TikTok profile URL, e.g. https://www.tiktok.com/@tiktok (max 500 characters) |
| user_id | string | – | Numeric TikTok user ID, as returned by search_tiktok_users |
| username | string | – | TikTok username, with or without leading @ (max 100 characters) |
No output schema declared.
No examples provided.
tiktok_video_details ~124
Get full details for a single TikTok video by video URL or numeric video ID. Returns the caption, play/like/comment/share/save counts, watermark-free playback and download URLs, cover images, music track info, and author details. Provide exactly one of url or video_id.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | – | TikTok video URL, e.g. https://www.tiktok.com/@tiktok/video/7516594811734854943 (max 500 characters) |
| video_id | string | – | Numeric TikTok video ID, as returned by search_tiktok |
No output schema declared.
No examples provided.
trustpilot_category_companies ~208
List the companies in a Trustpilot category (20 per page, up to 500 pages) with name, domain, TrustScore, review count, categories and location, plus the category's size and subcategories. Filter by country, minimum rating and claimed status; sort by recommended or recently reviewed. Category IDs: see /docs/trustpilot-category-ids or search_trustpilot_categories.
| Name | Type | Req | Description |
|---|---|---|---|
| category_id | string | yes | Trustpilot category slug (e.g. electronics_technology, bank) or a trustpilot.com/categories/... URL |
| claimed | boolean | – | Only companies that have claimed their Trustpilot profile |
| country | string | – | 2-letter ISO 3166-1 country code (default: all countries) |
| min_rating | string | – | Minimum TrustScore |
| page | integer | – | Page number, 1-500 (default: 1). Each page returns up to 20 companies. |
| sort_by | string | – | Sort order |
No output schema declared.
No examples provided.
trustpilot_category_details ~79
Get a Trustpilot category: display name, number of businesses, parent category, and its subcategories with their ids and business counts. Works for top-level, second- and third-level category slugs.
| Name | Type | Req | Description |
|---|---|---|---|
| category_id | string | yes | Trustpilot category slug (e.g. electronics_technology) or a trustpilot.com/categories/... URL |
No output schema declared.
No examples provided.
trustpilot_category_newest ~84
Get the newest companies added to a Trustpilot category (a short unpaginated list, often 0-10 entries) with name, domain, TrustScore, review count and location, plus the category's size and subcategories.
| Name | Type | Req | Description |
|---|---|---|---|
| category_id | string | yes | Trustpilot category slug (e.g. bank) or a trustpilot.com/categories/... URL |
No output schema declared.
No examples provided.
trustpilot_company_reviews ~329
Get a company's Trustpilot reviews plus its full profile (TrustScore, star rating, review counts, per-star breakdown, categories, claimed/verification status, reply behaviour, contact details). Each review has rating, title, text, dates, verification level, likes, author id/name/country and the company's reply. Filter by star rating, recency, language, verified-only, has-reply, or keyword. 20 reviews per page, up to 10 pages in one call.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | Company website domain (e.g. gossby.com) or its Trustpilot review-page URL |
| 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 ISO 639-1 language code (default: all languages) |
| pages | integer | – | Pages to fetch, 1-10 (default: 1). Each page returns up to 20 reviews and is billed as one request. |
| posted_ago | string | – | Only reviews from this period |
| query | string | – | Only reviews matching this keyword |
| rating | string | – | Only these star ratings, comma-separated 1-5 (e.g. '1,2') |
| sort_by | string | – | Sort order |
| verified | boolean | – | Only verified reviews |
| with_replies | boolean | – | Only reviews the company replied to |
No output schema declared.
No examples provided.
trustpilot_user_profile ~133
Get a Trustpilot reviewer's public profile (name, country, review count, verified, likes, reads) and the reviews they have written across all companies, 20 per page, each with the company name/domain, rating, title, text, dates and the company's reply. The user_id is a review's author_id.
| Name | Type | Req | Description |
|---|---|---|---|
| page | integer | – | Page number, 1-500 (default: 1). Each page returns up to 20 reviews. |
| user_id | string | yes | Reviewer ID (24 hex characters, a review's author_id) or a trustpilot.com/users/... URL |
No output schema declared.
No examples provided.
truthsocial_user_posts ~172
Get a single Truth Social user's recent posts (their feed) by username. Returns post text, engagement metrics (replies, reposts, likes), media attachments, hashtags, reply status, and permalinks. Up to 20 posts per page; billed $0.006 per page.
| 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 20 posts |
| username | string | yes | Truth Social username, with or without leading @ (max 100 characters) |
No output schema declared.
No examples provided.
twitter_trends ~51
Get the current trending topics for a specific location on Twitter/X. Use woeid=1 for Worldwide.
| Name | Type | Req | Description |
|---|---|---|---|
| woeid | integer | yes | Where On Earth ID for the location. Use 1 for Worldwide. |
No output schema declared.
No examples provided.
twitter_tweet_comments ~106
Get the comments (replies) on a specific tweet.
| 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) |
| tweet_id | string | yes | Numeric tweet ID |
No output schema declared.
No examples provided.
twitter_tweet_details ~94
Get detailed information for a single tweet by its ID. Returns full content, engagement metrics, and author info.
| 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… |
| tweet_id | string | yes | Numeric tweet ID |
No output schema declared.
No examples provided.
twitter_tweet_quotes ~103
Get the quote tweets for a specific tweet.
| 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) |
| tweet_id | string | yes | Numeric tweet ID |
No output schema declared.
No examples provided.
twitter_tweet_retweets ~54
Get the users who retweeted a specific tweet.
| Name | Type | Req | Description |
|---|---|---|---|
| pages | integer | – | Number of pages to fetch, 1-20 (default: 1) |
| tweet_id | string | yes | Numeric tweet ID |
No output schema declared.
No examples provided.
twitter_user_followers ~59
Get the followers of a specific Twitter/X user.
| Name | Type | Req | Description |
|---|---|---|---|
| pages | integer | – | Number of pages to fetch, 1-20 (default: 1) |
| username | string | yes | Twitter username (without @, max 50 characters) |
No output schema declared.
No examples provided.
twitter_user_following ~68
Get the accounts that a specific Twitter/X user is following.
| Name | Type | Req | Description |
|---|---|---|---|
| pages | integer | – | Number of pages to fetch, 1-175 (default: 1). Each page returns ~50 accounts. |
| username | string | yes | Twitter username (without @, max 50 characters) |
No output schema declared.
No examples provided.
twitter_user_profile ~54
Get detailed profile information for a Twitter/X user by username. Returns follower/following counts, bio, verification status, and account metadata.
| Name | Type | Req | Description |
|---|---|---|---|
| username | string | yes | Twitter username (without @, max 50 characters) |
No output schema declared.
No examples provided.
twitter_user_replies ~110
Get replies posted by a specific Twitter/X user.
| 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) |
| username | string | yes | Twitter username (without @, max 50 characters) |
No output schema declared.
No examples provided.
twitter_user_tweets ~110
Get tweets posted by a specific Twitter/X user.
| 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) |
| username | string | yes | Twitter username (without @, max 50 characters) |
No output schema declared.
No examples provided.
twitter_verified_followers ~65
Get the verified (blue checkmark) followers of a specific Twitter/X user.
| Name | Type | Req | Description |
|---|---|---|---|
| pages | integer | – | Number of pages to fetch, 1-20 (default: 1) |
| username | string | yes | Twitter username (without @, max 50 characters) |
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.