AIsa Instagram
Server Details
Your agent needs public Instagram data — a creator's posts and reels, what a hashtag is producing, what a video actually says. The official Graph API only sees accounts you already own, and needs app review to see those.
What you can ask for • "Pull this creator's last 50 posts and reels with engagement counts." • "What is trending under #skincare this week, and which profiles keep appearing?" • "Transcribe this reel and tell me what the hook in the first three seconds is." • "Read the comments on this post and group the objections." • "Which reels use this song right now?"
How to use it Point any MCP client at https://mcp.aisa.one/instagram/mcp and sign in with OAuth — there is no key to create or paste. 17 read tools: profiles (basic and full), a user's posts, reels and highlights, post and profile digests, post comments, reels search, trending reels, reels by song, hashtag and profile search, and media transcripts.
Why this rather than the source Public profiles without owning the account, and no app review to sit through.
It is also a door to the rest The same login reaches 26 sources and 580+ operations. Size a creator's audience here, then ask the same agent what their brand's site traffic looks like or who to contact there — without adding a second server.
What it costs Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident.
Where else it reaches https://mcp.aisa.one/social/mcp for X plus Instagram, Reddit, Pinterest and YouTube; https://mcp.aisa.one/gtm/mcp for those plus Similarweb and Apollo.
- Status
- Healthy
- Uptime
- 94.0% over 43 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 24 tools
The Instagram endpoints each target a distinct resource (profile, post, comments, reels, hashtag, highlights, transcript, embed), and the descriptions explicitly cross-reference which alternative to use, which resolves most overlap. The weak spots are near-duplicate families: get_instagram_profile / get_instagram_basic_profile / instagram_profile_digest and get_instagram_user_posts / instagram_posts_digest hit the same upstream with different projections, and the deprecated `use` tool shadows batch_use.
The Instagram tools follow a solid get_instagram_<resource> pattern, but two tools break it (instagram_posts_digest, instagram_profile_digest drop the verb), while the platform tools use bare or batch_ verbs (account, search, use, list_categories, batch_quote). Each group is internally readable but the set mixes several conventions without a stated rule.
24 tools is heavy for the stated Instagram scope, and roughly five of them (account, search, list_categories, batch_get_schema/quote/use) are generic AIsa platform plumbing rather than Instagram capability. One tool, `use`, is explicitly deprecated yet still exposed, which is a tool that does not earn its place.
The read surface is genuinely broad: profiles (three granularities), posts, comments, reels by keyword/trending/sound, hashtag and profile search, highlights, transcripts and embeds, plus a cost-quote pipeline. Remaining gaps are acknowledged dead ends rather than surprises: the digest tools cannot paginate, comment replies have no expansion endpoint, and stories exist only via highlights.
Available Tools
24 toolsaccountShow account and usageARead-onlyInspect
Who am I, what can I use, how much can I spend: the key, the account balance, the Go-to-Market wallet when one is active, and usage for today, 7 days and 30 days. Free; needs the Authorization header. Call it to verify a new connection or to explain a 402. ok is true only when the balance was read; otherwise each entry of errors says what to do in next_step.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the readOnlyHint/openWorldHint/destructiveHint annotations: the call is free, it requires the Authorization header, and it discloses result semantics ('ok is true only when the balance was read; otherwise each entry of errors says what to do in next_step'). That tells an agent how to interpret partial failure, which annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with what the agent gets, followed by cost/auth, then call triggers, then result interpretation. No sentence is redundant and none could be dropped without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with an output schema already present, the description covers the remaining gaps: cost, auth requirement, invocation triggers, and the ok/errors/next_step contract. Nothing an agent needs to call or interpret it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the description has nothing parameter-level to compensate for, and the schema is fully covered. A 4 rather than 5 reflects that it adds no input-syntax detail, though none is possible here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete resource set (identity/key, account balance, Go-to-Market wallet, usage over 1/7/30 days) rather than restating the name. It is clearly distinguishable from every sibling, which are all Reddit, batch, or search tools. An agent knows exactly what it will learn by calling it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit triggering conditions are given: 'Call it to verify a new connection or to explain a 402.' That is a strong when-to-use statement. It stops short of 5 because it names no alternative tool or a when-not condition, though the sibling list offers no obvious competing diagnostic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_get_schemaGet AIsa tool schemas in one batchARead-onlyIdempotentInspect
Retrieve schemas for 1 to 20 exact tool names from search. Build arguments from successful schemas, then call batch_quote. Do not call batch_use yet. Use tool names exactly as search returns them, without a client prefix such as mcp__aisa__. Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.
| Name | Required | Description | Default |
|---|---|---|---|
| tools | Yes | Exact tool names returned by search whose complete contracts are needed. Never invent tool names. | |
| session_id | No | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. | |
| include_documentation | No | Return the complete immutable public OpenAPI operation, referenced declarations, provenance and scoped completeness. Documentation does not change execution support. | |
| include_response_schema | No | Return the complete response_schema. Defaults to false. | |
| include_arguments_schema | No | Return the complete arguments_schema. Defaults to true. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tools | Yes | |
| session_id | Yes | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. |
| error_count | Yes | |
| total_count | Yes | |
| success_count | Yes | |
| next_steps_guidance | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description is not required to restate it. It adds genuine operational context: the batch_use prohibition, exact-name/prefix requirements, and session reuse semantics. It does not cover failure handling when names are invalid, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and size limit, and every sentence carries workflow value. The session_id sentence duplicates the schema's own parameter description, which is minor redundancy rather than bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only batch retrieval tool with an output schema, the description supplies the orchestration context an agent needs (source of names, next steps, session handling) without needing to explain return values. Nothing essential to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds real meaning beyond the schema by constraining names to those returned by search and warning against a client prefix such as mcp__aisa__, which is not encoded in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Retrieve schemas for 1 to 20 exact tool names') and pins the source of those names to search. This clearly separates it from siblings like search (finds tools), batch_quote, and batch_use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly sequences the workflow: build arguments from successful schemas, then call batch_quote, and 'Do not call batch_use yet.' This is an explicit when-to-use and when-not-to-use instruction naming the alternative siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_quoteQuote published AIsa tools without executing themARead-onlyIdempotentInspect
Obtain AIsaServices cost quotes for 1 to 20 published tools without executing them. Same input as batch_use: exact tool names and schema-valid arguments. Never falls back to execution. The response reports auto_execute_eligible and auto_execute_threshold_micros_usd. auto_execute_eligible waives only the extra cost-confirmation step and does not override a user prohibition on execution, a narrower scope, or a tighter budget limit. Quotes are price observations, not authorization grants. Use tool names exactly as search returns them, without a client prefix such as mcp__aisa__. Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.
| Name | Required | Description | Default |
|---|---|---|---|
| calls | Yes | ||
| search_id | No | Optional search correlation identifier returned by search. | |
| session_id | No | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | |
| batch_id | Yes | |
| session_id | Yes | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. |
| error_count | Yes | |
| total_count | Yes | |
| success_count | Yes | |
| next_steps_guidance | Yes | Deterministic next-step instructions derived from this result. Not an authorization grant. |
| auto_execute_eligible | No | True when the worst-known total of successful USD quotes is at or below auto_execute_threshold_micros_usd. A non-USD successful quote makes the batch ineligible. Present on quote responses. |
| auto_execute_threshold_micros_usd | No | Configured auto-execute threshold in micro-USD. 0 disables automatic execution. Present on quote responses. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the readOnly/idempotent annotations by explaining that quotes are price observations rather than authorization grants, and precisely delimiting what auto_execute_eligible does and does not waive (user prohibition, narrower scope, tighter budget). It also guarantees no execution fallback, which is the key behavioral risk for this tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and most sentences carry distinct rules (no fallback, eligibility limits, naming, session reuse). It is on the long side and the argument-shape constraint is stated twice in spirit, but little is truly wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value documentation isn't required, yet the description still flags the two response fields that matter for a downstream decision. Combined with session and naming guidance, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
At 67% schema coverage the schema already documents each parameter, so the description earns credit only for added meaning: exact-name rules for 'tool', session_id reuse semantics, and the 1-to-20 argument-shape parallel with batch_use. It doesn't clarify search_id beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Obtain AIsaServices cost quotes for 1 to 20 published tools') plus the crucial scope qualifier 'without executing them.' It is immediately distinguishable from the sibling batch_use, which executes rather than quotes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the parallel sibling ('Same input as batch_use') and draws the boundary ('Never falls back to execution'). It also gives operational conditions: use names exactly as search returns them, strip any mcp__aisa__ prefix, and reuse session_id from Search for the task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_useExecute published AIsa toolsADestructiveInspect
Billable API calls can incur substantial charges. Never call before a successful batch_quote for the same tools and arguments. Execute only when that quote response reports auto_execute_eligible=true for these calls, or when explicit user authorization covers that cost and risk. auto_execute_eligible waives only the extra cost-confirmation step; it does not override a user prohibition on execution, a narrower scope, or a tighter budget limit. Re-quote if tools, arguments, or scope change. Execute 1 to 20 independent published-tool calls; never silently retry. A missing or failed quote is not free. Use tool names exactly as search returns them, without a client prefix such as mcp__aisa__. Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.
| Name | Required | Description | Default |
|---|---|---|---|
| calls | Yes | ||
| search_id | No | Optional search correlation identifier returned by search. | |
| session_id | No | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | |
| batch_id | Yes | |
| session_id | Yes | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. |
| error_count | Yes | |
| total_count | Yes | |
| success_count | Yes | |
| next_steps_guidance | Yes | Deterministic next-step instructions derived from this result. Not an authorization grant. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover mutability, destructiveness, and open-world behavior. The description adds critical business logic: billable calls, quote dependency, the meaning of auto_execute_eligible (waives only cost confirmation, not user prohibitions), and no silent retry. It doesn't detail rate limits or return format, but with an output schema present, that's acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loads the cost warning, but it packs many separate instructions into one block, making it less scannable. Some sentences like 'A missing or failed quote is not free' add value, but the overall flow could be better structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the destructive, open-world annotations and the presence of an output schema, the description covers the essential preconditions and behavioral constraints. It could mention error handling or partial failure behavior, but the core guidance is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, and the description adds important semantics: tool names must be exact without client prefix, session_id reuse guidance, and 1-20 call limit. It doesn't explain search_id, but the schema description for search_id is already clear enough.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: 'Execute 1 to 20 independent published-tool calls', and the title matches. It distinguishes itself from batch_quote by requiring a quote first, but doesn't explicitly contrast with the singular 'use' sibling, though that's implied by 'batch'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use and when-not-to-use conditions: only after a successful batch_quote with auto_execute_eligible=true or explicit user authorization. It also states re-quote conditions and prohibits silent retries, leaving little ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_basic_profilebasic-profileARead-onlyIdempotentInspect
Returns a compact public profile for a numeric Instagram user id, about 4 KB against the 380 KB of get_instagram_profile. Flat, already-normalised fields: username, full_name, biography, follower_count, following_count, is_verified, is_private, category, profile_pic_url, hd_profile_pic_url_info, bio_links, external_url and pk. Prefer this endpoint whenever the id is in hand; obtain it from data.user.id in get_instagram_profile, from id in get_instagram_search_profiles, or from the owner of any post. Use get_instagram_profile only when a handle is all that is available.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | No | Instagram user id | |
| cache_max_age | No | If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with "cached": true and a "cached_at" timestamp). Otherwise, scrape a live result (1 credit). [See the Caching page for details.](https://docs.scrapecreators.com/caching) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds genuinely new behavioral context — the ~4 KB footprint versus 380 KB, the flat/already-normalised shape, and the injected billing estimate. It doesn't discuss rate limiting or the credit-free cached path, which the schema covers but the description does not reinforce.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and size comparison, then the selection rule, then id sourcing — a sensible order with little filler. It runs long and the HTML-comment pricing block is noise, but that block appears to be machine-injected boilerplate rather than authorial padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no prose explanation, and the schema itself carries the cache_max_age semantics. Given that, the description covers everything an agent needs: what it returns, how big it is, when to prefer it, and where the id comes from.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 and the schema already documents cache_max_age and its enums. The description still adds value beyond the schema by specifying the id is 'numeric' and by telling the agent where to obtain it (data.user.id, id from search, post owner).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Returns a compact public profile for a numeric Instagram user id'), quantifies the payload (~4 KB vs 380 KB), and explicitly separates itself from the sibling get_instagram_profile. It also names a second sibling (get_instagram_search_profiles) as an id source, so an agent can route without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit decision rule: 'Prefer this endpoint whenever the id is in hand' and 'Use get_instagram_profile only when a handle is all that is available.' It even enumerates the three places the required id can be sourced from, so the prerequisites are fully closed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_media_transcripttranscriptARead-onlyIdempotentInspect
Transcribes the speech in a public Instagram video or reel and returns transcripts, each with id, shortcode and the transcribed text. The target must be a video under two minutes long: a photo post returns 400 bad_request, so when the URL's type is unknown check is_video with get_instagram_post first. Measured at 13 seconds, the slowest call in this API, for about 1 KB back. For the caption the author wrote rather than the words spoken in the video, read edge_media_to_caption from get_instagram_post.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Instagram post or reel URL | |
| cache_max_age | No | If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with "cached": true and a "cached_at" timestamp). Otherwise, scrape a live result (By default, successful AI up to 120 seconds costs a flat 1 credit per request; over 120 seconds requires allow_long_transcription=true, which bills ALL successful AI at 10 credits per started minute, including short videos; empty AI results and errors cost 0 credits). [See the Caching page for details.](https://docs.scrapecreators.com/caching) | |
| allow_long_transcription | No | Paid opt-in, enabled only by the literal query value 'true' (allow_long_transcription=true). Defaults to false when omitted; other values do not enable paid mode. By default, successful AI transcription of videos up to 120 seconds (two minutes, inclusive) costs a flat 1 credit per request. Over 120 seconds, videos cannot be AI-transcribed by default. Set allow_long_transcription=true to opt into paid AI with no fixed duration cap: ALL successful AI transcriptions in this mode cost 10 credits per started minute, including short videos: 10 * ceil(duration_seconds / 60). For example, 177 seconds costs 30 credits and an opted-in 60 seconds costs 10 credits. Empty AI results and errors cost 0 credits for AI transcription. This flag does not force AI and does not enable transcription or AI fallback by itself. Keep get_transcript=true or use_ai_as_fallback=true where required by the endpoint. Returned native captions still cost 1 credit on dedicated transcript routes, even for long videos with this flag; on detail routes they leave the base price unchanged. These routes remain synchronous. Allow at least 30 seconds on your client. Paid long transcription can exceed resource limits or timeouts, so successful transcription of long videos is not guaranteed. Provider reference (supplier schema): `{"default":false,"type":"boolean"}`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive), and the description adds behavioral facts the annotations cannot convey: the 400 error on photo posts, the ~13 second latency as the slowest call in the API, and the ~1 KB payload size. These are exactly the beyond-annotation details that change an agent's calling strategy.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, then constraints, then alternative routing, in four tight sentences. The appended pricing comment block is boilerplate rather than task-relevant guidance, which slightly dilutes an otherwise waste-free entry.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, yet the description still names the return shape (id, shortcode, transcribed text), and it covers the operational envelope: duration cap, error behavior on photo posts, latency, and payload size. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the two non-trivial parameters (cache_max_age, allow_long_transcription) carry extensive inline documentation including enum values, billing semantics and the 'true'-only opt-in rule. The description adds no parameter-level detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (transcribes the speech) and resource (public Instagram video or reel), and explicitly distinguishes itself from get_instagram_post by contrasting spoken words with the author's caption. An agent can separate this from the transcript-adjacent siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a hard precondition (video under two minutes), the failure mode when violated (photo post returns 400 bad_request), the diagnostic step when URL type is unknown (check is_video with get_instagram_post first), and names an alternative tool for a different need (caption via edge_media_to_caption). When-to-use and when-to-use-something-else are both explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_postpostARead-onlyIdempotentInspect
Returns full metadata for one public post or reel identified by its URL, under data.xdt_shortcode_media: shortcode, is_video, video_url, video_duration, has_audio, display_url, dimensions, accessibility_caption, edge_media_to_caption for the caption text, and owner. Measured at about 197 KB. Setting download_media=true also mirrors the media to permanent storage and costs ten credits rather than one, so leave it off unless the files are needed. For the comment thread call get_instagram_post_comments with the same URL, and for the spoken words in a video call get_instagram_media_transcript.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Instagram post or reel URL | |
| trim | No | Set to true to get a trimmed response | |
| region | No | 2 letter country code to set the proxy in | |
| cache_max_age | No | If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with "cached": true and a "cached_at" timestamp). Otherwise, scrape a live result (1 credit). [See the Caching page for details.](https://docs.scrapecreators.com/caching) | |
| download_media | No | Set to true to download the video/images and get back permanent Supabase URLs. Costs 10 credits if media is found, 1 credit otherwise. | |
| include_play_count | No | Set to false to omit `video_play_count` and skip its additional fetch for a faster response. Defaults to true. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only/idempotent/non-destructive profile, but the description goes further by disclosing response payload location (data.xdt_shortcode_media), approximate response size (~197 KB), and the side effect plus credit cost of download_media (mirrors media to permanent storage, 10 credits vs 1). It does not discuss rate limits or auth requirements, but the added operational cost/size context is genuinely useful beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and routing are front-loaded, and every sentence carries operational information. However, the long enumeration of output fields in the first sentence is largely redundant given the tool has an output schema, making it denser than necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return structure, and it still supplies size, cost, caching-adjacent trade-offs, and sibling routing. An agent has everything needed to decide whether to call this tool and how to configure it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters (including cache_max_age semantics and download_media cost) are already documented in the schema. The description reinforces the download_media cost/default trade-off but adds no syntax or behavior that the schema does not already carry, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb (returns), resource (full metadata for one public post or reel), and identity mechanism (by URL). It is immediately distinguishable from siblings like get_instagram_post_comments and get_instagram_media_transcript, which the description itself names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing rules are provided: call get_instagram_post_comments for the comment thread and get_instagram_media_transcript for spoken words in a video. It also gives a clear when-not for a costly parameter ('leave it off unless the files are needed'), so the agent knows both alternatives and cost trade-offs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_post_commentscommentsARead-onlyIdempotentInspect
Returns the comments on a public post or reel by URL in an already-normalised shape: comments, each with id, text, comment_like_count, child_comment_count, created_at and a nested user, plus cursor to page. Measured at about 10 KB, one of the few small responses in this API. Only top-level comments are returned; child_comment_count reports how many replies a comment has but the replies themselves are not included, and there is no endpoint that expands them. For the post itself, its caption, view counts and video URL, call get_instagram_post with the same URL.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | The URL of the post or reel to get comments from | |
| cursor | No | The cursor to get more comments. Get 'cursor' from previous response. | |
| include_replies | No | Set to true to include replies for every returned comment. This always costs 15 credits because each comment requires a separate Instagram replies request. You will still be charged 15 credits if no replies are returned. This is much slower and may time out at 29 seconds. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, yet the description adds substantial extra context: the normalised response shape, approximate ~10 KB payload size, cursor paging, and the key constraint that only top-level comments are returned while child_comment_count merely reports reply counts. This is behavioural detail far beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and shape, and each sentence carries information (shape, size, pagination, reply limitation). The pricing boilerplate and the 'one of the few small responses' remark are the only mild padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations plus an output schema present, the core safety and return-shape burdens are covered, and the description still enriches them. It is slightly incomplete/inconsistent regarding how include_replies reconciles with the claim that replies cannot be expanded.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents url, cursor and include_replies, and the description adds little parameter-specific meaning. There is a mild tension: the description says replies 'are not included, and there is no endpoint that expands them,' while the schema exposes include_replies to fetch replies, which could confuse an agent about whether replies are retrievable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns the comments on a public post or reel by URL'), and names the sibling it is not for post-level data ('call get_instagram_post'). An agent can distinguish this from the sibling without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent to get_instagram_post when the post's caption/view counts/video URL is wanted, giving a clear alternative selection rule. However it gives no guidance on when to prefer this over get_instagram_user_posts or the digest tools for broader comment needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_profileprofileARead-onlyIdempotentInspect
Returns the full public profile for an Instagram handle, forwarded from Instagram's own web API. Counts sit under data.user.edge_followed_by.count and data.user.edge_follow.count, alongside biography, bio_links, external_url, full_name, is_verified, is_private, highlight_reel_count, the numeric id, and the twelve most recent posts under data.user.edge_owner_to_timeline_media.edges. Measured at about 380 KB; trim=true saves under one percent, so do not rely on it to shrink the payload. When the numeric id is already known, get_instagram_basic_profile returns the same headline numbers in about 4 KB.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| trim | No | Set to true to get a trimmed response | |
| handle | No | Instagram handle | |
| cache_max_age | No | If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with "cached": true and a "cached_at" timestamp). Otherwise, scrape a live result (1 credit). [See the Caching page for details.](https://docs.scrapecreators.com/caching) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), yet the description adds substantive behavior: an approximate payload size (~380 KB), the counterintuitive finding that trim saves under 1% and shouldn't be relied on, and the exact response paths where counts and posts live. This is meaningful context an agent cannot get from the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core content is front-loaded and every sentence carries information: response shape, size, trim caveat, and the cheaper alternative. The trailing pricing boilerplate adds length but is a platform-injected block rather than author prose, so it only marginally detracts.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value documentation is not strictly required, yet the description still maps the key fields to their JSON paths. Combined with the size estimate, trim caveat, and alternative-tool routing, an agent has everything needed to call this correctly and predict the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description goes beyond the schema by disclosing that the trim parameter is effectively useless for shrinking the payload — information that directly contradicts the optimistic schema text 'Set to true to get a trimmed response' — and by naming where the handle's data surfaces. cache_max_age is left entirely to the schema, which documents it well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns the full public profile for an Instagram handle') and identifies the upstream source. It explicitly distinguishes itself from the sibling get_instagram_basic_profile, so an agent can route correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit alternative with its selecting condition: 'When the numeric id is already known, get_instagram_basic_profile returns the same headline numbers in about 4 KB.' It also warns that trim=true is not a viable way to reduce payload. It does not address other profile-adjacent siblings (instagram_profile_digest, get_instagram_user_posts), which keeps it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_reels_searchsearchARead-onlyIdempotentInspect
Searches reels by keyword through Google rather than Instagram's login-gated search, returning reels with shortcode, url, caption, video_url, video_duration, video_play_count, video_view_count, like_count, comment_count, owner, location and taken_at, plus next_page. Because the index is Google's, coverage is what Google has indexed publicly, not everything on Instagram, and date_posted narrows to a relative window. Measured at about 87 KB and 8 seconds, with all four engagement counts populated. Use get_instagram_search_hashtag to search a specific hashtag, and get_instagram_reels_trending for what is popular right now with no query at all.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | The page number to return. | |
| limit | No | ||
| query | No | The keyword to search for | |
| date_posted | No | Optional Google-search date filter. Runtime confirmed with `last-hour`; omit this parameter if a provider search window is unavailable. Provider reference (supplier schema): `{"enum":["last-hour","last-day","last-week","last-month","last-year"],"type":"string"}`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnly/openWorld/idempotent) by disclosing coverage limits ('what Google has indexed publicly, not everything on Instagram'), measured payload size (~87 KB) and latency (~8s), and that all four engagement counts are populated. It does not cover auth requirements or pagination depth behavior, so it stops short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: purpose and mechanism first, then caveats, then routing to siblings. The exhaustive enumeration of return fields partly duplicates the existing output schema and is the one sentence that does not fully earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a rich output schema and full annotations, the description fills the remaining gaps an agent needs: data-coverage caveat, latency/size expectations, and alternative tool routing. Only minor parameter-level detail (page/limit behavior) is left unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, so the baseline is already anchored at 3. The description adds meaning by clarifying that date_posted 'narrows to a relative window' and by framing query as the keyword driver; page/limit still carry no description beyond their schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (searches reels by keyword) and immediately distinguishes itself from siblings by naming the mechanism ('through Google rather than Instagram's login-gated search'). An agent can identify this tool's niche without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes to alternatives with their selecting conditions: get_instagram_search_hashtag for a specific hashtag, get_instagram_reels_trending for what is popular with no query. This is exactly the when/when-not/alternative guidance the dimension asks for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_reels_trendingreels-trendingARead-onlyIdempotentInspect
Returns the reels Instagram publishes on its public instagram.com/reels page, in a normalised shape: reels, each with shortcode, url, caption, like_count, comment_count, video_url, image_url, media_type, taken_at and the owning user. Instagram serves a small batch at a time and successive batches overlap, so call repeatedly and de-duplicate on shortcode. Measured at 30 reels and about 411 KB, where play_count and ig_play_count came back null on every item, unlike get_instagram_reels_search which populates them. Takes no parameters and cannot be filtered; to search by topic use get_instagram_reels_search.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, openWorld), yet the description adds substantial behavior: batch pagination with overlapping successive batches requiring dedup on shortcode, measured payload size (~411 KB / 30 reels), and the caveat that play_count/ig_play_count come back null here unlike in get_instagram_reels_search. That is real, non-obvious operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what it returns, then pagination/dedup behavior, then routing to the sibling. Dense but every clause carries information; the embedded field enumeration and the injected pricing comment add bulk without adding invocation guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter, output-schema-backed tool, everything an agent needs is present: scope, pagination/dedup requirement, known null fields, size expectations, and the correct alternative for filtered searches. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4. The description reinforces this by stating it takes no parameters and cannot be filtered, which prevents an agent from inventing filter arguments, but there is no further parameter detail to add.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns the reels Instagram publishes on its public instagram.com/reels page') plus the normalized output shape. It explicitly distinguishes itself from get_instagram_reels_search and implicitly from get_instagram_user_reels by scope (public trending page vs topic search vs a user's reels).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit operational guidance: 'call repeatedly and de-duplicate on shortcode' because batches overlap, plus 'Takes no parameters and cannot be filtered; to search by topic use get_instagram_reels_search.' Both the when and the when-not (with a named alternative) are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_search_hashtagsearch-hashtagARead-onlyIdempotentInspect
Finds public posts carrying a hashtag through Google, returning hashtag, media_type, cursor and posts in the same normalised shape as get_instagram_reels_search: shortcode, url, caption, like_count, comment_count, video_play_count, video_view_count, owner, location and taken_at. The leading # is optional. Set media_type=reels to narrow to reels, or all for posts and reels together. Note that cursor here is the next Google results page number rather than an Instagram cursor. Measured at about 78 KB for ten posts. To search caption keywords rather than a hashtag, use get_instagram_reels_search.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | The cursor returned by the previous response. In this version, it is the next Google results page number. | |
| hashtag | No | The hashtag to search for. Include or omit the #. | |
| media_type | No | Use all to search public posts and reels, or reels to only return reels. Defaults to all. | |
| date_posted | No | Only return Google-indexed posts found in this relative window. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, open-world and non-destructive, yet the description adds non-obvious behavior: results are Google-indexed rather than direct Instagram data, the cursor is a Google results page number rather than an Instagram cursor, and payload size is about 78 KB for ten posts. The cursor quirk in particular is exactly the kind of detail that prevents misuse.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose, return shape, enum behavior, the cursor caveat and the alternative are all front-loaded with no filler. It is densely packed into a single block rather than cleanly segmented, and the injected pricing block adds bulk, but every sentence of the authored text earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema, full annotation coverage and 100% schema description coverage, the description already goes further by naming the normalized return fields and the size/cursor behavior. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents hashtag, cursor, media_type and date_posted; the description mostly restates them (optional '#', all vs reels). It adds little parameter meaning beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Finds public posts carrying a hashtag through Google') plus the exact scope of coverage. It names the sibling it is not (get_instagram_reels_search) and explains the shared normalized shape, so an agent can distinguish it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear routing guidance: media_type=reels vs all, and an explicit alternative ('To search caption keywords rather than a hashtag, use get_instagram_reels_search'). It stops short of stating exclusions or prerequisites (e.g., hashtag is not required), so it is strong context rather than a full when/when-not matrix.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_search_profilessearch-profilesARead-onlyIdempotentInspect
Searches Google for public Instagram profiles matching a keyword or bio phrase and returns profiles with username, full_name, biography, follower_count, following_count, media_count, is_verified, is_private, category_name, external_url, bio_links, url, the numeric id, and matched_from, which records whether the hit came from a profile page or from a post. google_title and google_description carry the underlying search result. Measured at about 18 KB and 13 seconds. The numeric id feeds get_instagram_basic_profile directly. To search posts rather than people, use get_instagram_search_hashtag or get_instagram_reels_search.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Bio or caption keyword/phrase to search for. | |
| cursor | No | The cursor returned by the previous response. In this version, it is the next Google results page number. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), yet the description still adds meaningful traits: the source is Google (open-world scraping, not the Instagram API), the measured payload/latency (~18 KB, ~13 s), and the matched_from field that explains why a profile appeared. Rate limits and failure behavior are not covered, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and routing are front-loaded and the performance metrics are compact, but the long enumeration of return fields is largely redundant with the existing output schema and consumes most of the description's length. It could be trimmed to keep only the fields that inform selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the description still supplies the source of the data, cost/latency expectation, sibling routing, and the chaining target for the returned id. Nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented, and the description adds no syntax or format detail beyond restating 'keyword or bio phrase'. The cursor/pagination parameter is not addressed at all. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Searches Google for public Instagram profiles matching a keyword or bio phrase') and enumerates the returned identity fields, so the agent knows exactly what it gets back. It also distinguishes itself from siblings by naming the post-search alternatives, so an agent can pick correctly without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit exclusion ('To search posts rather than people, use get_instagram_search_hashtag or get_instagram_reels_search') and a downstream chaining rule ('The numeric id feeds get_instagram_basic_profile directly'). Both when-to-use and when-not-to-use are stated rather than inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_song_reelsreelsARead-onlyIdempotentInspect
Returns the reels that use one audio track, as raw Instagram media objects under reels, with cursor and has_more for paging. There are two confirmed ways to obtain audio_id: the number in an instagram.com/reels/audio// URL, and clips_metadata.original_sound_info.audio_asset_id on any reel returned by get_instagram_user_reels. Measured at about 177 KB for five reels, in the same raw shape as get_instagram_user_reels rather than the normalised shape of the search endpoints. To find reels by keyword instead of by sound, use get_instagram_reels_search.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Pagination cursor returned by Instagram from the previous response. | |
| audio_id | No | The audio id from the Instagram audio page URL. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, openWorld), and the description adds real behavior beyond them: raw Instagram media objects under a 'reels' key, cursor/has_more paging, and a measured payload size (~177 KB for five reels). It also discloses that the response shape matches get_instagram_user_reels rather than the normalised search-endpoint shape, which is non-obvious and useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then progressively more specific detail (shape, acquisition paths, size, alternative tool). It is dense but every content sentence carries information; the appended pricing block is boilerplate rather than authored prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be doc-dumped, yet the description still orients the agent on response shape and paging. The one residual gap is that audio_id is technically optional in the schema but effectively the tool's subject, and the description never says what happens if it is omitted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes beyond the schema by explaining how audio_id is obtained and where it lives on other responses. Cursor semantics are only echoed from the schema rather than extended.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+filter: 'Returns the reels that use one audio track.' It explicitly names the sibling it is not (get_instagram_reels_search for keyword-based discovery), so an agent can distinguish it without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete selection guidance: use this when you have an audio_id, use get_instagram_reels_search when you want keyword search. It also supplies two confirmed acquisition paths for audio_id (the /reels/audio/<id>/ URL number and clips_metadata.original_sound_info.audio_asset_id), which removes the main prerequisite uncertainty.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_user_embedembedARead-onlyIdempotentInspect
Returns Instagram's official profile embed widget for a handle as a single html string, ready to drop into a web page. Measured at about 206 KB, nearly all of it inlined markup and styling, so treat the result as something to store or render rather than something to read. It carries no structured profile data at all: for follower counts, biography or bio links use get_instagram_basic_profile when the numeric id is known, or get_instagram_profile when only the handle is.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | No | Instagram handle |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), yet the description adds genuinely new traits: the ~206 KB payload size, the fact that it is nearly all inlined markup and styling, and that it contains zero structured profile data. These are the details that change how an agent handles the result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The author-written text is tight and front-loaded: purpose first, then handling advice, then the alternative tools. The injected pricing banner adds length the author does not control, which keeps this just short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description goes further by characterizing the payload's size and composition. For a single-parameter read tool with full annotation coverage, nothing an agent needs is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'handle' parameter, so the schema already carries the semantics. The description mentions the handle only in passing and adds no format or validation detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns Instagram's official profile embed widget for a handle as a single html string') and immediately distinguishes itself from data-returning siblings by noting it carries no structured profile data. An agent can identify the tool's output shape without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent to alternatives: get_instagram_basic_profile when the numeric id is known, get_instagram_profile when only the handle is. It also gives a usage posture ('treat the result as something to store or render rather than something to read'), which is exactly the when/when-not guidance needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_user_highlight_detaildetailARead-onlyIdempotentInspect
Returns the stories inside one highlight album: reel_type, latest_reel_media, the owning user, and items, each a raw Instagram story media object. Pass the bare numeric id from get_instagram_user_highlights. The response echoes that id back in the prefixed form highlight:, and feeding the prefixed form to this endpoint returns 404 with a message blaming deletion or a private account, which points at the wrong cause; send the bare number. Measured at 630 KB for an album of 38 stories, so size scales with the album.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Highlight ID. Use `/instagram/user/highlights` to discover current highlight IDs for a public account. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive, but the description adds real behavioral context: the response echoes the id in prefixed form, the 404 misattribution gotcha, and measured payload size (~630 KB for 38 stories) that scales with the album. This is exactly the kind of beyond-annotations disclosure that earns a top score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then the parameter gotcha, then the failure mode, then the size note. Every sentence carries actionable information; nothing is padding despite the density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no elaboration, yet the description still names key fields. Combined with the ID-format warning and size scaling, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, yet the description adds the critical semantics the schema omits: the id must be the bare numeric form from get_instagram_user_highlights, and the prefixed highlight:<id> form yields a 404 whose message misleadingly blames deletion or a private account. This is meaningful parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns the stories inside one highlight album') and enumerates the returned fields, which cleanly separates it from the sibling list-level get_instagram_user_highlights. An agent can tell exactly what this tool does versus its siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly routes the agent to get_instagram_user_highlights as the source of valid IDs and implies this tool is the per-album follow-up. It does not state explicit exclusions or when not to use it, but the upstream/downstream relationship is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_user_highlightshighlightsARead-onlyIdempotentInspect
Lists the story highlight albums on a public profile. Returns highlights, each with the numeric id, title, cover_media.thumbnail_src, cover_media_cropped_thumbnail and owner. Small and quick at about 6 KB, which makes it a cheap way to see whether an account keeps highlights at all. This is the only source of a highlight id, and get_instagram_user_highlight_detail requires the bare numeric id exactly as returned here. Pass user_id rather than handle for a faster response.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | No | Instagram handle. Use user_id for faster response times. | |
| user_id | No | Instagram user id. Use for faster response times. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely non-structured context: approximate payload size (~6 KB), the fields returned, the chaining prerequisite for the detail tool, and a latency tradeoff between handle and user_id. It stops short of rate-limit or failure-mode detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads what it returns, then the routing rationale, then the parameter tip — a sensible order with no filler. The speed/parameter sentence duplicates the schema text rather than earning new space, and the embedded pricing block sits awkwardly in the middle of the tool description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the definition need not enumerate returns, yet it does so concisely alongside cost and chaining guidance. Nothing critical is missing for a two-optional-parameter read tool; only explicit pagination or empty-result behavior is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both properties already document themselves, including the 'use user_id for faster response times' hint, which the description largely repeats. The description confirms both params are optional by omission but adds no new syntax, format, or mutual-exclusion guidance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Lists the story highlight albums on a public profile') and immediately differentiates from sibling get_instagram_user_highlight_detail by declaring itself 'the only source of a highlight id.' An agent can pick between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit usage context ('a cheap way to see whether an account keeps highlights at all') and the routing condition to the sibling tool, noting the detail tool 'requires the bare numeric id exactly as returned here.' It also tells the agent which parameter to prefer and why, which is more than most definitions offer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_user_postspostsARead-onlyIdempotentInspect
Returns one page of a public account's timeline, reels and photos and carousels alike, as raw Instagram media objects under items. Page with next_max_id and stop on more_available; num_results reports the page size. Each item carries media_type, code, caption, like_count, comment_count, taken_at, image_versions2 and video_versions among roughly two hundred internal flags. Measured at 632 KB per page, the largest response in this API, and trim=true only reduces it to 523 KB. For reels alone use get_instagram_user_reels, and for one known post use get_instagram_post; both return the same raw shape, so neither is a way to get a smaller payload.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| trim | No | Set to true to get a trimmed response | |
| handle | No | Instagram handle | |
| next_max_id | No | Cursor to get next page of results. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), yet the description adds substantial context beyond them: measured payload size (632 KB), the limited effect of trim (only down to 523 KB), pagination loop mechanics, and the fields present in each item. This is exactly the value-add the dimension rewards.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then pagination, payload realities, and alternatives in a logical order; nearly every sentence earns its place. Slightly dense, and the appended pricing boilerplate is external noise not attributable to the tool author.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite an output schema existing, the description still conveys return shape and size, pagination termination, and sibling routing. For a large-payload, paginated list tool, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real meaning: it clarifies that next_max_id is a cursor for paging and that trim=true barely reduces the already-large payload, tempering a user's expectation. It does not document the handle parameter's format, keeping it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource scope ('Returns one page of a public account's timeline, reels and photos and carousels alike') and explicitly distinguishes itself from get_instagram_user_reels and get_instagram_post. An agent can identify the tool's role without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the selection rule explicitly: use get_instagram_user_reels for reels alone and get_instagram_post for one known post. It also pre-empts a common wrong assumption by noting neither alternative yields a smaller payload.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_user_reelsreelsARead-onlyIdempotentInspect
Returns one page of a public account's reels as raw Instagram media objects under items[].media, with paging_info.max_id for the following page. Each reel carries code, caption, like_count, comment_count, video_versions, image_versions2 and clips_metadata, whose original_sound_info.audio_asset_id is exactly the id that get_instagram_song_reels expects. Pass user_id rather than handle for a faster response. Measured at 594 KB per page. Use get_instagram_user_posts for the whole timeline including photos and carousels.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| trim | No | Set to true for a trimmed down version of the response | |
| handle | No | Instagram handle. Use user_id for faster response times. | |
| max_id | No | Max id to get more reels. Get 'max_id' from previous response. | |
| user_id | No | Instagram user id. Use this for faster response times. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), yet the description adds behavior beyond them: one-page-at-a-time pagination via max_id, an expected payload size of 594 KB per page for context budgeting, and the exact fields returned per reel. That is real operational context not derivable from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Return shape and pagination are front-loaded, and the alternative-tool routing sits at the end where it belongs. The sentences are dense but each carries distinct information; the appended pricing boilerplate is noise but outside the author's prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, yet it still sketches the envelope and cross-references a sibling tool's input contract. Combined with annotations and 100% schema coverage, an agent has everything needed to call this correctly on the first try.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents handle, user_id, max_id, and trim, and the description largely restates the user_id-vs-handle preference and max_id chaining. The trim parameter is not addressed at all in the description. Baseline 3 is appropriate given the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Returns one page of a public account's reels'), names the response envelope (items[].media) and the pagination token (paging_info.max_id), and explicitly contrasts itself with get_instagram_user_posts for the full timeline. An agent can distinguish it from get_instagram_song_reels, get_instagram_user_posts, and reels_search without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names two concrete alternatives with selecting conditions: get_instagram_song_reels is invoked by piping clips_metadata.original_sound_info.audio_asset_id, and get_instagram_user_posts covers the whole timeline including photos and carousels. It also advises user_id over handle for speed, giving the agent actionable routing rather than inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_posts_digestInstagram posts digest: a timeline page at ~3% of the sizeARead-onlyInspect
One page of a public account's timeline, projected down to what fits a context window.
Calls the same upstream as get_instagram_user_posts and keeps, per post: code,
full caption text, taken_at, media_type, like/comment/play counts, owner, ONE
image URL and ONE video URL (the largest variant of each), video_duration, and
the carousel slide count. Measured: 632 KB raw becomes about 20 KB; nothing is
summarised and no post is dropped — every post and every caption byte survives,
in upstream order.
What does NOT survive: the other 9 resolution variants per image, dash manifests,
and ~100 internal flag fields per post. If you need any of those — downloading
every resolution, building a player, forensic detail — call
get_instagram_user_posts instead; it returns the upstream response untouched.
Returns the first page. The response keeps next_max_id and more_available
as provider metadata; the current API contract does not accept a pagination
cursor, so this tool cannot request subsequent pages.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent=false, openWorld), it discloses concrete behavior: 632 KB → ~20 KB, nothing summarised, no post dropped, upstream order preserved, which 9 variants and ~100 flags are dropped, and a pagination limitation the API cannot work around. This is unusually rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and routing, then the survival/removal detail. Slightly long, but nearly every sentence carries decision-relevant information; the byte-savings figures and field list earn their space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-param read tool with an output schema, the description covers projection semantics, dropped fields, ordering, and the pagination constraint. An agent has everything needed to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One required parameter with 0% schema description coverage. The description implies the handle identifies a public account whose timeline is fetched, but never explicitly defines the parameter or its format. With a single trivial param and an output schema present, this is adequate but not compensating for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('one page of a public account's timeline, projected down') and explicitly contrasts with `get_instagram_user_posts`, so an agent can distinguish it from the sibling without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use (need compact captions/counts in a context window) and when-not (downloading every resolution, building a player, forensic detail), and routes to the exact alternative tool by name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_profile_digestInstagram profile digest: the profile card at ~1% of the sizeARead-onlyInspect
A public profile as a flat card, projected from the same upstream as get_instagram_profile.
Keeps: username, full_name, numeric id, biography, external_url, bio_links (title + url), follower/following/posts counts, verification and privacy flags, category, one profile picture URL, and the recent posts Instagram embeds in the profile (shortcode, full caption, like/comment counts, taken_at, one display URL each). Measured: 380 KB raw becomes about 15 KB — the recent posts and their display URLs are most of it.
Counts are flattened from their upstream wrappers: followers here is
data.user.edge_followed_by.count there. The numeric id feeds
get_instagram_basic_profile, which is the cheap (4.5 KB) per-id lookup for
enriching many accounts.
For the untouched upstream response — every field, every wrapper — call
get_instagram_profile instead.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and non-destructive, and the description adds meaningful behavior beyond that: field flattening with a concrete path mapping (`edge_followed_by.count` → `followers`), measured size reduction from 380 KB to 15 KB, what is retained vs. dropped, and the one-display-URL-per-post rule. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact sentences, front-loaded with the core purpose, followed by the field list, measured size, flattening detail, and alternative routing. Every sentence adds operational value with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description plus the existing output schema cover almost everything an agent needs: scope, field semantics, size characteristics, relation to siblings, and return shape. The only meaningful gap is the undocumented `handle` input and any format restrictions. For a one-parameter public read tool, this is very close to complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, `handle`, is never described in the definition. With 0% schema-description coverage, the description should at least state that `handle` is the Instagram username and whether a leading `@` is accepted, but it only mentions `username` as an output field. The input contract is left to inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Defines the resource (a public Instagram profile) and the transformation (a compact flat-card projection), then enumerates exactly which fields are kept. It explicitly contrasts itself with `get_instagram_profile`, so an agent can distinguish it from that upstream tool and from `instagram_posts_digest`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-not signal: if the agent needs the untouched upstream response with every field and wrapper, call `get_instagram_profile` instead. It also explains that the returned numeric `id` feeds `get_instagram_basic_profile`, enabling intentional chaining for bulk enrichment. The size framing tells the agent when the compact digest is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesBrowse the AIsa catalogueARead-onlyInspect
The AIsa catalogue at a glance: categories, the servers in each, tool counts, and the dedicated endpoint to connect if you only need one category. Free. (AIsa-only: tool-router has no equivalent.) Use mcp.aisa.one/mcp?modules=<category> (or mcp.aisa.one/<category>/mcp) to have that category's tools listed directly instead of via search.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a safe, read-only, closed-world operation. The description adds useful context beyond annotations by saying it returns categories, servers, tool counts, and the dedicated endpoint, and that it is free. It omits auth/rate-limit details, but those are less critical given the read-only annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with what the tool returns and is generally efficient. The parenthetical about tool-router and the endpoint URL add some density, but each part contributes usage or content context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero parameters, read-only annotations, and an output schema available, the description supplies enough context for correct invocation. It explains the catalogue contents and gives the category-specific endpoint alternative, leaving no critical gap for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so parameter semantics are not a meaningful differentiator. The schema has no properties to explain, and the description does not need to document any inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that this tool gives a catalogue overview: categories, servers per category, tool counts, and a dedicated endpoint. The resource is specific and recognizable, though sibling differentiation is only partial because it references 'tool-router' rather than the listed siblings like search/use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear alternative: use the category-specific endpoint if you only need one category, rather than going via search. It also notes the tool is free and AIsa-only, but it does not explicitly state when to call list_categories instead of search or use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch AIsa tools and agent-ready plansARead-onlyInspect
Discover AIsa tools and Plans for external data or actions. Skip tasks that only need supplied content or general knowledge. For multi-step tasks, search the full goal before decomposing it. Use English; put identifiers in known_fields. If has_full_schema=false, call batch_get_schema. Next call batch_quote, not batch_use. Do not search for standalone rewriting, translation, summarization, formatting, or calculations on supplied content. For one capability, use an atomic query. Select a matching capability, date window, and metric. A Plan may cover only part of the task; assess its purpose and follow next_steps_guidance.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of additional direct tool candidates. | |
| query | Yes | Natural-language capability or task to discover. | |
| category | No | Restrict retrieval to one category. Omit to search everything. (AIsa-only: tool-router has no equivalent.) | |
| session_id | No | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. | |
| known_fields | No | Known values such as ticker, URL, provider, or identifier that improve retrieval. | |
| provider_filters | No | Optional exact catalog provider keys used to narrow retrieval (for example similarweb). Do not use display brands. Omit this field if the exact key is unknown. |
Output Schema
| Name | Required | Description |
|---|---|---|
| plan | No | |
| tools | Yes | |
| search_id | Yes | |
| session_id | Yes | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. |
| retrieval_mode | No | |
| next_steps_guidance | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds workflow behavior the annotations cannot: the has_full_schema flag gates a required batch_get_schema call, and the next step after search is batch_quote, not batch_use. It stops short of disclosing retrieval limits or catalog breadth that would push it to a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a dense run of imperatives rather than flowing prose, but each sentence carries a distinct rule (scope, language, workflow branch, negative cases, result interpretation) and the most important scoping guidance is front-loaded. Slightly more compression would help.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, and it correctly avoids doing so while still referencing the output fields that drive the workflow (has_full_schema, next_steps_guidance). A mutation-free, well-annotated search tool is adequately covered, though catalog scope ('AIsa-only', no external providers) could be stated more explicitly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the structured baseline is 3. The description adds genuine meaning beyond the schema by telling the agent to write the query in English and to place tickers, URLs, providers, or identifiers in known_fields, which is non-obvious routing guidance for a nested free-form object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Discover AIsa tools and Plans for external data or actions.' It also separates this discovery step from the sibling execution tools by naming batch_get_schema, batch_quote, and batch_use and stating when each follows, so an agent can place it in the workflow without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use ('tasks needing external data or actions'), when-not ('tasks that only need supplied content or general knowledge'; no standalone rewriting, translation, summarization, formatting, or calculations), and named alternatives (batch_get_schema when has_full_schema=false, batch_quote rather than batch_use). It also specifies query language and atomic-query style, leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
useRun an AIsa operationCDestructiveInspect
deprecated, use batch_use instead
| Name | Required | Description | Default |
|---|---|---|---|
| arguments | No | Arguments matching input_schema / arguments_schema | |
| search_id | No | search_id from the search that found this operation | |
| operation_id | Yes | operation_id as returned by search | |
| max_price_usd | No | Refuse the call before any spend if its quoted price is above this many USD |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, and openWorldHint=true, so the agent knows this is a state-changing, open-world operation. The description adds only the deprecation status and says nothing about what gets mutated, spend behavior (despite a max_price_usd param), or authorization needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single clause with zero waste; the deprecation notice and the replacement are front-loaded. It is terse by design for a deprecated endpoint, though it is under-specified rather than optimally efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Has an output schema and annotations, which reduces the burden, but a 4-parameter operation tool with a deprecation notice gives no information about what it executes or whether it remains functional. For an agent deciding between this and batch_use, the description is thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (operation_id, arguments, search_id, max_price_usd) are already documented in the schema. The description adds no parameter meaning on top, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description never states what the tool does — no verb or resource. It only labels the tool as deprecated and points to a replacement, leaving the actual capability ('Run an AIsa operation' from the title) unexplained. An agent must infer the purpose from the title and schema alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly routes the agent to the alternative ('use batch_use instead'), which is exactly the guidance needed for a deprecated tool. It doesn't explain when, if ever, this tool should still be called (e.g., during a migration window), so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
instagram_posts_digest1 field changed- removed
Input schema / properties / next_max_idRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null -}
16 tool updates
- Added
account - Removed
get_details - Changed
get_instagram_basic_profile2 fields changed- added
Input schema / properties / cache_max_ageAdded value: +{ + "description": "If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with \"cached\": true and a \"cached_at\" timestamp). Otherwise, scrape a live result (1 credit). [See the Caching page for details.](https://docs.scrapecreators.com/caching)", + "enum": [ + "14d", + "1d", + "30d", + "3d", + "7d" + ], + "type": "string" +} - added
Input schema / properties / userId / descriptionAdded value: +"Instagram user id"
- Changed
get_instagram_media_transcript3 fields changed- added
Input schema / properties / allow_long_transcriptionAdded value: +{ + "description": "Paid opt-in, enabled only by the literal query value 'true' (allow_long_transcription=true). Defaults to false when omitted; other values do not enable paid mode. By default, successful AI transcription of videos up to 120 seconds (two minutes, inclusive) costs a flat 1 credit per request. Over 120 seconds, videos cannot be AI-transcribed by default. Set allow_long_transcription=true to opt into paid AI with no fixed duration cap: ALL successful AI transcriptions in this mode cost 10 credits per started minute, including short videos: 10 * ceil(duration_seconds / 60). For example, 177 seconds costs 30 credits and an opted-in 60 seconds costs 10 credits. Empty AI results and errors cost 0 credits for AI transcription. This flag does not force AI and does not enable transcription or AI fallback by itself. Keep get_transcript=true or use_ai_as_fallback=true where required by the endpoint. Returned native captions still cost 1 credit on dedicated transcript routes, even for long videos with this flag; on detail routes they leave the base price unchanged. These routes remain synchronous. Allow at least 30 seconds on your client. Paid long transcription can exceed resource limits or timeouts, so successful transcription of long videos is not guaranteed.\n\nProvider reference (supplier schema): `{\"default\":false,\"type\":\"boolean\"}`.", + "type": "boolean" +} - added
Input schema / properties / cache_max_ageAdded value: +{ + "description": "If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with \"cached\": true and a \"cached_at\" timestamp). Otherwise, scrape a live result (By default, successful AI up to 120 seconds costs a flat 1 credit per request; over 120 seconds requires allow_long_transcription=true, which bills ALL successful AI at 10 credits per started minute, including short videos; empty AI results and errors cost 0 credits). [See the Caching page for details.](https://docs.scrapecreators.com/caching)", + "enum": [ + "14d", + "1d", + "30d", + "3d", + "7d" + ], + "type": "string" +} - added
Input schema / properties / url / descriptionAdded value: +"Instagram post or reel URL"
- Changed
get_instagram_post6 fields changed- added
Input schema / properties / cache_max_ageAdded value: +{ + "description": "If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with \"cached\": true and a \"cached_at\" timestamp). Otherwise, scrape a live result (1 credit). [See the Caching page for details.](https://docs.scrapecreators.com/caching)", + "enum": [ + "14d", + "1d", + "30d", + "3d", + "7d" + ], + "type": "string" +} - added
Input schema / properties / download_mediaAdded value: +{ + "description": "Set to true to download the video/images and get back permanent Supabase URLs. Costs 10 credits if media is found, 1 credit otherwise.", + "type": "boolean" +} - added
Input schema / properties / include_play_countAdded value: +{ + "description": "Set to false to omit `video_play_count` and skip its additional fetch for a faster response. Defaults to true.", + "type": "boolean" +} - added
Input schema / properties / regionAdded value: +{ + "description": "2 letter country code to set the proxy in", + "type": "string" +} - added
Input schema / properties / trimAdded value: +{ + "description": "Set to true to get a trimmed response", + "type": "boolean" +} - added
Input schema / properties / url / descriptionAdded value: +"Instagram post or reel URL"
- Changed
get_instagram_post_comments3 fields changed- added
Input schema / properties / cursorAdded value: +{ + "description": "The cursor to get more comments. Get 'cursor' from previous response.", + "type": "string" +} - added
Input schema / properties / include_repliesAdded value: +{ + "description": "Set to true to include replies for every returned comment. This always costs 15 credits because each comment requires a separate Instagram replies request. You will still be charged 15 credits if no replies are returned. This is much slower and may time out at 29 seconds.", + "type": "boolean" +} - added
Input schema / properties / url / descriptionAdded value: +"The URL of the post or reel to get comments from"
- Changed
get_instagram_profile3 fields changed- added
Input schema / properties / cache_max_ageAdded value: +{ + "description": "If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with \"cached\": true and a \"cached_at\" timestamp). Otherwise, scrape a live result (1 credit). [See the Caching page for details.](https://docs.scrapecreators.com/caching)", + "enum": [ + "14d", + "1d", + "30d", + "3d", + "7d" + ], + "type": "string" +} - added
Input schema / properties / handle / descriptionAdded value: +"Instagram handle" - added
Input schema / properties / trim / descriptionAdded value: +"Set to true to get a trimmed response"
- Changed
get_instagram_reels_search3 fields changed- added
Input schema / properties / date_posted / descriptionAdded value: +"Optional Google-search date filter. Runtime confirmed with `last-hour`; omit this parameter if a provider search window is unavailable.\n\nProvider reference (supplier schema): `{\"enum\":[\"last-hour\",\"last-day\",\"last-week\",\"last-month\",\"last-year\"],\"type\":\"string\"}`." - added
Input schema / properties / page / descriptionAdded value: +"The page number to return." - added
Input schema / properties / query / descriptionAdded value: +"The keyword to search for"
- Changed
get_instagram_search_hashtag4 fields changed- added
Input schema / properties / cursorAdded value: +{ + "description": "The cursor returned by the previous response. In this version, it is the next Google results page number.", + "type": "string" +} - added
Input schema / properties / date_postedAdded value: +{ + "description": "Only return Google-indexed posts found in this relative window.", + "enum": [ + "last-day", + "last-hour", + "last-month", + "last-week", + "last-year" + ], + "type": "string" +} - added
Input schema / properties / hashtag / descriptionAdded value: +"The hashtag to search for. Include or omit the #." - added
Input schema / properties / media_typeAdded value: +{ + "description": "Use all to search public posts and reels, or reels to only return reels. Defaults to all.", + "enum": [ + "all", + "reels" + ], + "type": "string" +}
- Changed
get_instagram_search_profiles2 fields changed- added
Input schema / properties / cursorAdded value: +{ + "description": "The cursor returned by the previous response. In this version, it is the next Google results page number.", + "type": "string" +} - added
Input schema / properties / query / descriptionAdded value: +"Bio or caption keyword/phrase to search for."
- Changed
get_instagram_song_reels2 fields changed- added
Input schema / properties / audio_id / descriptionAdded value: +"The audio id from the Instagram audio page URL." - added
Input schema / properties / cursorAdded value: +{ + "description": "Pagination cursor returned by Instagram from the previous response.", + "type": "string" +}
- Changed
get_instagram_user_embed1 field changed- added
Input schema / properties / handle / descriptionAdded value: +"Instagram handle"
- Changed
get_instagram_user_highlight_detail1 field changed- added
Input schema / properties / id / descriptionAdded value: +"Highlight ID. Use `/instagram/user/highlights` to discover current highlight IDs for a public account."
- Changed
get_instagram_user_highlights2 fields changed- added
Input schema / properties / handle / descriptionAdded value: +"Instagram handle. Use user_id for faster response times." - added
Input schema / properties / user_idAdded value: +{ + "description": "Instagram user id. Use for faster response times.", + "type": "string" +}
- Changed
get_instagram_user_posts3 fields changed- added
Input schema / properties / handle / descriptionAdded value: +"Instagram handle" - added
Input schema / properties / next_max_idAdded value: +{ + "description": "Cursor to get next page of results.", + "type": "string" +} - added
Input schema / properties / trim / descriptionAdded value: +"Set to true to get a trimmed response"
- Changed
get_instagram_user_reels4 fields changed- added
Input schema / properties / handle / descriptionAdded value: +"Instagram handle. Use user_id for faster response times." - added
Input schema / properties / max_idAdded value: +{ + "description": "Max id to get more reels. Get 'max_id' from previous response.", + "type": "string" +} - added
Input schema / properties / trimAdded value: +{ + "description": "Set to true for a trimmed down version of the response", + "type": "boolean" +} - added
Input schema / properties / user_idAdded value: +{ + "description": "Instagram user id. Use this for faster response times.", + "type": "string" +}
20 tool updates
- Added
batch_get_schema - Added
batch_quote - Changed
batch_use18 fields changed- added
Input schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / calls / descriptionRemoved value: -"Up to 20 items of {call_id, operation_id, arguments}; steps at the same execution_level of a plan go in one batch" - added
Input schema / properties / calls / items / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - changed
Input schema / properties / calls / items / additionalPropertiesPrevious value: -trueNew value: +false - added
Input schema / properties / calls / items / propertiesAdded value: +{ + "arguments": { + "additionalProperties": true, + "description": "Strictly schema-compliant arguments using the exact field names and types from this tool's arguments_schema.", + "type": "object" + }, + "call_id": { + "description": "Caller-chosen identifier unique within this batch.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "tool": { + "description": "Exact tool name returned by search or batch_get_schema. Never invent a name.", + "minLength": 1, + "type": "string" + } +} - added
Input schema / properties / calls / items / requiredAdded value: +[ + "call_id", + "tool", + "arguments" +] - added
Input schema / properties / calls / maxItemsAdded value: +20 - added
Input schema / properties / calls / minItemsAdded value: +1 - removed
Input schema / properties / max_price_usdRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Per-call price cap applied to every item" -} - removed
Input schema / properties / search_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / search_id / defaultRemoved value: -null - changed
Input schema / properties / search_id / descriptionPrevious value: -"search_id from the search that found these operations"New value: +"Optional search correlation identifier returned by search." - added
Input schema / properties / search_id / typeAdded value: +"string" - added
Input schema / properties / session_idAdded value: +{ + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" +} - added
Output schema / $defsAdded value: +{ + "jsonValue": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/jsonValue" + }, + "type": "object" + }, + { + "items": { + "$ref": "#/$defs/jsonValue" + }, + "type": "array" + }, + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "JSON value returned by the upstream tool." + } +} - added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / propertiesAdded value: +{ + "batch_id": { + "type": "string" + }, + "error_count": { + "minimum": 0, + "type": "integer" + }, + "next_steps_guidance": { + "description": "Deterministic next-step instructions derived from this result. Not an authorization grant.", + "items": { + "type": "string" + }, + "type": "array" + }, + "results": { + "items": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "call_id": { + "type": "string" + }, + "customer_cost_micros_usd": { + "description": "Actual customer charge settled by AIsaServices, in micro-USD. Omitted when the upstream response does not report it.", + "minimum": 0, + "type": "integer" + }, + "data": { + "$ref": "#/$defs/jsonValue" + }, + "error": { + "anyOf": [ + { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "message": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "status": { + "type": "integer" + }, + "type": { + "enum": [ + "validation", + "authentication", + "payment", + "permission", + "rate_limit", + "upstream", + "timeout", + "internal" + ], + "type": "string" + } + }, + "required": [ + "type", + "status", + "retryable" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "request_id": { + "type": "string" + }, + "successful": { + "type": "boolean" + }, + "tool": { + "type": "string" + }, + "upstream_status": { + "description": "HTTP status returned by AIsaServices when a request was dispatched.", + "type": "integer" + } + }, + "required": [ + "call_id", + "tool", + "successful", + "request_id" + ], + "type": "object" + }, + "type": "array" + }, + "session_id": { + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" + }, + "success_count": { + "minimum": 0, + "type": "integer" + }, + "total_count": { + "minimum": 1, + "type": "integer" + } +} - added
Output schema / requiredAdded value: +[ + "session_id", + "batch_id", + "total_count", + "success_count", + "error_count", + "results", + "next_steps_guidance" +]
- Changed
get_details13 fields changed- added
Input schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / argumentsRemoved value: -{ - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "The arguments the operation would be called with, for a price that reflects them. Keyed by operation_id for a batch, or passed flat for a single operation_id. Routes whose required parameters are validated before pricing have no price without them." -} - added
Input schema / properties / include_arguments_schemaAdded value: +{ + "default": true, + "description": "Return the complete arguments_schema. Defaults to true.", + "type": "boolean" +} - changed
Input schema / properties / include_documentation / descriptionPrevious value: -"Include the complete native public OpenAPI document, reference closure and scoped completeness. Existing execution schemas remain unchanged."New value: +"Return the complete immutable public OpenAPI operation, referenced declarations, provenance and scoped completeness. Documentation does not change execution support." - added
Input schema / properties / include_response_schemaAdded value: +{ + "default": false, + "description": "Return the complete response_schema. Defaults to false.", + "type": "boolean" +} - removed
Input schema / properties / operation_idRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "One operation_id from search" -} - removed
Input schema / properties / operation_idsRemoved value: -{ - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Up to 20 operation_ids, for a batch" -} - added
Input schema / properties / session_idAdded value: +{ + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" +} - added
Input schema / properties / toolsAdded value: +{ + "description": "Exact tool names returned by search whose complete contracts are needed. Never invent tool names.", + "items": { + "minLength": 1, + "pattern": "^\\S(?:.*\\S)?$", + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true +} - removed
Input schema / properties / with_quoteRemoved value: -{ - "default": true, - "description": "Whether each operation is priced for this account before the answer. One round trip per operation; spends nothing.", - "type": "boolean" -} - added
Input schema / requiredAdded value: +[ + "tools" +] - added
Output schema / propertiesAdded value: +{ + "error_count": { + "type": "integer" + }, + "next_steps_guidance": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "session_id": { + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9_-]{1,128}$", + "type": "string" + }, + "success_count": { + "type": "integer" + }, + "tools": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "arguments_schema": { + "additionalProperties": true, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ] + }, + "canonical_operation_id": { + "type": "string" + }, + "documentation": { + "additionalProperties": true, + "type": "object" + }, + "error": { + "additionalProperties": false, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ], + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ] + }, + "execution_supported": { + "description": "Whether this router can execute and quote the operation; false retains documentation and discovery only.", + "type": "boolean" + }, + "execution_unsupported_reason": { + "description": "Why execution and quoting remain unavailable through this router.", + "type": "string" + }, + "idempotent": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + } + ] + }, + "known_pitfalls": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "read_only": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + } + ] + }, + "response_schema": { + "additionalProperties": true, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ] + }, + "side_effects": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "successful": { + "type": "boolean" + } + }, + "required": [ + "successful" + ], + "type": "object" + }, + "type": "object" + }, + "total_count": { + "type": "integer" + } +} - added
Output schema / requiredAdded value: +[ + "error_count", + "next_steps_guidance", + "session_id", + "success_count", + "tools", + "total_count" +]
- Changed
get_instagram_basic_profile2 fields changed- removed
Input schema / properties / userId / descriptionRemoved value: -"Instagram user id" - removed
Input schema / properties / userId / exampleRemoved value: -"314216"
- Changed
get_instagram_media_transcript2 fields changed- removed
Input schema / properties / url / descriptionRemoved value: -"Instagram post or reel URL" - changed
Input schema / requiredPrevious value: -[ - "url" -]New value: +[]
- Changed
get_instagram_post5 fields changed- removed
Input schema / properties / download_mediaRemoved value: -{ - "description": "Set to true to download the video/images and get back permanent Supabase URLs. Costs 10 credits if media is found, 1 credit otherwise.", - "type": "boolean" -} - removed
Input schema / properties / regionRemoved value: -{ - "description": "2 letter country code to set the proxy in", - "example": "US", - "type": "string" -} - removed
Input schema / properties / trimRemoved value: -{ - "description": "Set to true to get a trimmed response", - "type": "boolean" -} - removed
Input schema / properties / url / descriptionRemoved value: -"Instagram post or reel URL" - changed
Input schema / requiredPrevious value: -[ - "url" -]New value: +[]
- Changed
get_instagram_post_comments4 fields changed- removed
Input schema / properties / cursorRemoved value: -{ - "description": "The cursor to get more comments. Get 'cursor' from previous response.", - "example": "eyJjYWNoZWRfY29tbWVud...", - "type": "string" -} - removed
Input schema / properties / url / descriptionRemoved value: -"The URL of the post or reel to get comments from" - removed
Input schema / properties / url / exampleRemoved value: -"https://www.instagram.com/reel/DOq6eV6iIgD" - changed
Input schema / requiredPrevious value: -[ - "url" -]New value: +[]
- Changed
get_instagram_profile5 fields changed- removed
Input schema / properties / handle / descriptionRemoved value: -"Instagram handle" - removed
Input schema / properties / handle / exampleRemoved value: -"jane" - removed
Input schema / properties / trim / descriptionRemoved value: -"Set to true to get a trimmed response" - changed
Input schema / properties / trim / typePrevious value: -"boolean"New value: +"string" - changed
Input schema / requiredPrevious value: -[ - "handle" -]New value: +[]
- Changed
get_instagram_reels_search10 fields changed- removed
Input schema / properties / date_posted / descriptionRemoved value: -"Optional Google-search date filter. Runtime confirmed with `last-hour`; omit this parameter if a provider search window is unavailable." - removed
Input schema / properties / date_posted / enumRemoved value: -[ - "last-hour", - "last-day", - "last-week", - "last-month", - "last-year" -] - removed
Input schema / properties / date_posted / exampleRemoved value: -"last-hour" - added
Input schema / properties / limitAdded value: +{ + "type": "string" +} - removed
Input schema / properties / page / descriptionRemoved value: -"The page number to return." - removed
Input schema / properties / page / exampleRemoved value: -1 - changed
Input schema / properties / page / typePrevious value: -"number"New value: +"string" - removed
Input schema / properties / query / descriptionRemoved value: -"The keyword to search for" - removed
Input schema / properties / query / exampleRemoved value: -"dogs" - changed
Input schema / requiredPrevious value: -[ - "query" -]New value: +[]
- Changed
get_instagram_search_hashtag6 fields changed- removed
Input schema / properties / cursorRemoved value: -{ - "description": "The cursor returned by the previous response. In this version, it is the next Google results page number.", - "example": "2", - "type": "string" -} - removed
Input schema / properties / date_postedRemoved value: -{ - "description": "Only return Google-indexed posts found in this relative window.", - "enum": [ - "last-hour", - "last-day", - "last-week", - "last-month", - "last-year" - ], - "example": "last-week", - "type": "string" -} - removed
Input schema / properties / hashtag / descriptionRemoved value: -"The hashtag to search for. Include or omit the #." - removed
Input schema / properties / hashtag / exampleRemoved value: -"makeup" - removed
Input schema / properties / media_typeRemoved value: -{ - "description": "Use all to search public posts and reels, or reels to only return reels. Defaults to all.", - "enum": [ - "all", - "reels" - ], - "example": "all", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "hashtag" -]New value: +[]
- Changed
get_instagram_search_profiles4 fields changed- removed
Input schema / properties / cursorRemoved value: -{ - "description": "The cursor returned by the previous response. In this version, it is the next Google results page number.", - "example": "2", - "type": "string" -} - removed
Input schema / properties / query / descriptionRemoved value: -"Bio or caption keyword/phrase to search for." - removed
Input schema / properties / query / exampleRemoved value: -"fitness coach" - changed
Input schema / requiredPrevious value: -[ - "query" -]New value: +[]
- Changed
get_instagram_song_reels4 fields changed- removed
Input schema / properties / audio_id / descriptionRemoved value: -"The audio id from the Instagram audio page URL." - removed
Input schema / properties / audio_id / exampleRemoved value: -"1392969992841787" - removed
Input schema / properties / cursorRemoved value: -{ - "description": "Pagination cursor returned by Instagram from the previous response.", - "example": "Gsbyq-aju4eF02y...", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "audio_id" -]New value: +[]
- Changed
get_instagram_user_embed3 fields changed- removed
Input schema / properties / handle / descriptionRemoved value: -"Instagram handle" - removed
Input schema / properties / handle / exampleRemoved value: -"jane" - changed
Input schema / requiredPrevious value: -[ - "handle" -]New value: +[]
- Changed
get_instagram_user_highlight_detail2 fields changed- removed
Input schema / properties / id / descriptionRemoved value: -"Highlight ID. Use `/instagram/user/highlights` to discover current highlight IDs for a public account." - removed
Input schema / properties / id / exampleRemoved value: -"18029499352961095"
- Changed
get_instagram_user_highlights3 fields changed- removed
Input schema / properties / handle / descriptionRemoved value: -"Instagram handle. Use user_id for faster response times." - removed
Input schema / properties / handle / exampleRemoved value: -"jane" - removed
Input schema / properties / user_idRemoved value: -{ - "description": "Instagram user id. Use for faster response times.", - "example": "2700692569", - "type": "string" -}
- Changed
get_instagram_user_posts5 fields changed- removed
Input schema / properties / handle / descriptionRemoved value: -"Instagram handle" - removed
Input schema / properties / next_max_idRemoved value: -{ - "description": "Cursor to get next page of results.", - "type": "string" -} - removed
Input schema / properties / trim / descriptionRemoved value: -"Set to true to get a trimmed response" - changed
Input schema / properties / trim / typePrevious value: -"boolean"New value: +"string" - changed
Input schema / requiredPrevious value: -[ - "handle" -]New value: +[]
- Changed
get_instagram_user_reels5 fields changed- removed
Input schema / properties / handle / descriptionRemoved value: -"Instagram handle. Use user_id for faster response times." - removed
Input schema / properties / handle / exampleRemoved value: -"jane" - removed
Input schema / properties / max_idRemoved value: -{ - "description": "Max id to get more reels. Get 'max_id' from previous response.", - "example": "QVFCVzNnS2lI...==", - "type": "string" -} - removed
Input schema / properties / trimRemoved value: -{ - "description": "Set to true for a trimmed down version of the response", - "example": "false", - "type": "boolean" -} - removed
Input schema / properties / user_idRemoved value: -{ - "description": "Instagram user id. Use this for faster response times.", - "example": "2700692569", - "type": "string" -}
- Changed
search17 fields changed- added
Input schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / category / anyOfRemoved value: -[ - { - "enum": [ - "seo", - "finance", - "social", - "search", - "sales", - "mail" - ], - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / category / defaultRemoved value: -null - changed
Input schema / properties / category / descriptionPrevious value: -"Restrict to one category (seo, finance, social, search, sales, mail). Omit to search everything."New value: +"Restrict retrieval to one category. Omit to search everything. (AIsa-only: tool-router has no equivalent.)" - added
Input schema / properties / category / enumAdded value: +[ + "seo", + "finance", + "social", + "search", + "sales", + "mail" +] - added
Input schema / properties / category / typeAdded value: +"string" - added
Input schema / properties / known_fieldsAdded value: +{ + "additionalProperties": true, + "default": {}, + "description": "Known values such as ticker, URL, provider, or identifier that improve retrieval.", + "type": "object" +} - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum candidates, 1-10"New value: +"Maximum number of additional direct tool candidates." - added
Input schema / properties / limit / maximumAdded value: +20 - added
Input schema / properties / limit / minimumAdded value: +1 - added
Input schema / properties / provider_filtersAdded value: +{ + "default": [], + "description": "Optional exact catalog provider keys used to narrow retrieval (for example similarweb). Do not use display brands. Omit this field if the exact key is unknown.", + "items": { + "type": "string" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true +} - changed
Input schema / properties / query / descriptionPrevious value: -"What you need, in plain language, e.g. 'backlinks of a domain', 'recent tweets by a user', 'insider trades for AAPL'. English works best."New value: +"Natural-language capability or task to discover." - added
Input schema / properties / query / maxLengthAdded value: +2000 - added
Input schema / properties / query / minLengthAdded value: +1 - added
Input schema / properties / session_idAdded value: +{ + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" +} - added
Output schema / propertiesAdded value: +{ + "next_steps_guidance": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "plan": { + "additionalProperties": false, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ], + "properties": { + "canonical_use_case": { + "type": "string" + }, + "description": { + "type": "string" + }, + "known_pitfalls": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "plan_ref": { + "type": "string" + }, + "primary_tools": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "recommended_steps": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "related_tools": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + } + }, + "required": [ + "canonical_use_case", + "description", + "known_pitfalls", + "plan_ref", + "primary_tools", + "recommended_steps", + "related_tools" + ] + }, + "retrieval_mode": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] + }, + "search_id": { + "type": "string" + }, + "session_id": { + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9_-]{1,128}$", + "type": "string" + }, + "tools": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "additionalProperties": false, + "properties": { + "arguments_schema": { + "additionalProperties": true, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ] + }, + "description": { + "type": "string" + }, + "execution_supported": { + "description": "Whether this router can execute and quote the operation; false retains documentation and discovery only.", + "type": "boolean" + }, + "execution_unsupported_reason": { + "description": "Why execution and quoting remain unavailable through this router.", + "type": "string" + }, + "has_full_schema": { + "type": "boolean" + }, + "match_reasons": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "price": { + "additionalProperties": true, + "type": "object" + }, + "retrieval_debug": { + "additionalProperties": false, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ], + "properties": { + "fused_rank": { + "type": "integer" + }, + "fused_score": { + "type": "number" + }, + "lexical_rank": { + "type": "integer" + }, + "lexical_score": { + "type": "number" + }, + "rerank_admission_rank": { + "type": "integer" + }, + "rerank_rank": { + "type": "integer" + }, + "rerank_score": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "number" + } + ] + }, + "runtime_availability": { + "type": "string" + }, + "vector_view_ranks": { + "additionalProperties": { + "type": "integer" + }, + "type": "object" + }, + "vector_view_scores": { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } + }, + "required": [ + "fused_rank", + "fused_score", + "lexical_rank", + "lexical_score", + "rerank_admission_rank", + "rerank_rank", + "runtime_availability", + "vector_view_ranks", + "vector_view_scores" + ] + }, + "summary": { + "type": "string" + }, + "tool": { + "type": "string" + } + }, + "required": [ + "description", + "has_full_schema", + "price", + "summary", + "tool" + ], + "type": "object" + } + } +} - added
Output schema / requiredAdded value: +[ + "next_steps_guidance", + "search_id", + "session_id", + "tools" +]
- Changed
use1 field changed- changed
Input schema / properties / max_price_usd / descriptionPrevious value: -"Refuse the call before any spend if it would cost more than this many USD"New value: +"Refuse the call before any spend if its quoted price is above this many USD"
1 tool update
- Changed
get_details1 field changed- added
Input schema / properties / include_documentationAdded value: +{ + "default": false, + "description": "Include the complete native public OpenAPI document, reference closure and scoped completeness. Existing execution schemas remain unchanged.", + "type": "boolean" +}
12 tool updates
- Changed
get_instagram_basic_profile1 field changed- added
Input schema / properties / userId / exampleAdded value: +"314216"
- Changed
get_instagram_post1 field changed- added
Input schema / properties / region / exampleAdded value: +"US"
- Changed
get_instagram_post_comments2 fields changed- added
Input schema / properties / cursor / exampleAdded value: +"eyJjYWNoZWRfY29tbWVud..." - added
Input schema / properties / url / exampleAdded value: +"https://www.instagram.com/reel/DOq6eV6iIgD"
- Changed
get_instagram_profile1 field changed- added
Input schema / properties / handle / exampleAdded value: +"jane"
- Changed
get_instagram_reels_search3 fields changed- added
Input schema / properties / date_posted / exampleAdded value: +"last-hour" - added
Input schema / properties / page / exampleAdded value: +1 - added
Input schema / properties / query / exampleAdded value: +"dogs"
- Changed
get_instagram_search_hashtag4 fields changed- added
Input schema / properties / cursor / exampleAdded value: +"2" - added
Input schema / properties / date_posted / exampleAdded value: +"last-week" - added
Input schema / properties / hashtag / exampleAdded value: +"makeup" - added
Input schema / properties / media_type / exampleAdded value: +"all"
- Changed
get_instagram_search_profiles2 fields changed- added
Input schema / properties / cursor / exampleAdded value: +"2" - added
Input schema / properties / query / exampleAdded value: +"fitness coach"
- Changed
get_instagram_song_reels2 fields changed- added
Input schema / properties / audio_id / exampleAdded value: +"1392969992841787" - added
Input schema / properties / cursor / exampleAdded value: +"Gsbyq-aju4eF02y..."
- Changed
get_instagram_user_embed1 field changed- added
Input schema / properties / handle / exampleAdded value: +"jane"
- Changed
get_instagram_user_highlight_detail1 field changed- added
Input schema / properties / id / exampleAdded value: +"18029499352961095"
- Changed
get_instagram_user_highlights2 fields changed- added
Input schema / properties / handle / exampleAdded value: +"jane" - added
Input schema / properties / user_id / exampleAdded value: +"2700692569"
- Changed
get_instagram_user_reels4 fields changed- added
Input schema / properties / handle / exampleAdded value: +"jane" - added
Input schema / properties / max_id / exampleAdded value: +"QVFCVzNnS2lI...==" - added
Input schema / properties / trim / exampleAdded value: +"false" - added
Input schema / properties / user_id / exampleAdded value: +"2700692569"
22 tool updates
- First observed
batch_use - First observed
get_details - First observed
get_instagram_basic_profile - First observed
get_instagram_media_transcript - First observed
get_instagram_post - First observed
get_instagram_post_comments - First observed
get_instagram_profile - First observed
get_instagram_reels_search - First observed
get_instagram_reels_trending - First observed
get_instagram_search_hashtag - First observed
get_instagram_search_profiles - First observed
get_instagram_song_reels - First observed
get_instagram_user_embed - First observed
get_instagram_user_highlight_detail - First observed
get_instagram_user_highlights - First observed
get_instagram_user_posts - First observed
get_instagram_user_reels - First observed
instagram_posts_digest - First observed
instagram_profile_digest - First observed
list_categories - First observed
search - First observed
use
Publisher details
- Operator
- AIsa · Publisher source
- Operator website
- https://aisa.one
- Vendor relationship
- Independent
- Documentation
- https://mcp.aisa.one/servers
- Trust center
- Not available
- Restrictions
- No paid plan, admin approval, regional limit or custom OAuth app is needed to connect. Sign-in is OAuth against auth.aisa.one with dynamic client registration (RFC 7591), or an Authorization: Bearer AIsa API key. search, get_details and list_categories are free. use and batch_use are billed per call to the caller's own AIsa key, and max_price_usd refuses anything above a cap before any spend. Some operations are subscription-only on the gateway and answer 402 without the Hive GTM Growth plan.
Related MCP Connectors
Your agent needs X/Twitter data — who follows a competitor, what a community is posting, who quoted that tweet, what is trending in Japan. Normally that means applying for an X developer account, passing app review, and managing a quota per endpoint. **What you can ask for** • "Who follows @stripe, and which of them are verified?" • "Pull every reply and quote on this tweet and summarise what people object to." • "List this community's moderators and its posts this week." • "What is trending in Japan right now?" • "Give me the full thread context behind this link, including the long-form article." **How to use it** Point any MCP client at https://mcp.aisa.one/twitter-api/mcp and sign in with OAuth — there is no key to create or paste. 29 read tools: users (profile, about, batch lookup by id, search, followers, verified followers, followings, follow check), tweets (timeline, latest, mentions, advanced search, replies, quotes, retweeters, thread context, articles), communities, lists, Spaces and trends. **Why this rather than the source** No developer account to apply for, no app review, no per-endpoint quota to manage. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Ask for a handle's followers here, then ask the same agent for that brand's search traffic, its backlinks, or the people to contact — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/social/mcp for X plus Instagram, Reddit, Pinterest and YouTube; https://mcp.aisa.one/gtm/mcp for those plus Similarweb and Apollo.
Your agent needs what people are posting — across X, Instagram, Reddit, Pinterest and YouTube at once, not five accounts and five rate limits. **What you can ask for** • "What is being said about our brand this week on X and Reddit?" • "Find the creators posting about this category on Instagram and YouTube." • "Pull the replies and quotes on this tweet and the comments on that reel." • "What is trending in this country right now?" • "Which subreddits and hashtags keep coming up for this topic?" **How to use it** Point any MCP client at https://mcp.aisa.one/social/mcp and sign in with OAuth — there is no key to create or paste. 56 read tools across five platforms: X/Twitter (users, tweets, communities, lists, Spaces, trends), Instagram (profiles, posts, reels, highlights, transcripts), Reddit (search, subreddits, comment trees), Pinterest (pins, boards, search) and YouTube search. **Why this rather than the source** One login instead of five developer programmes, and no app review on any of them. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Measure the conversation here, then ask the same agent for the site traffic behind it or the people to contact — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/twitter-api/mcp · /instagram/mcp · /reddit/mcp · /pinterest/mcp · /youtube-search/mcp for one platform at a time; https://mcp.aisa.one/gtm/mcp adds Similarweb and Apollo.
Your agent needs to know what a community actually thinks — which subreddit is discussing your category, what the top posts argue, what the comment tree says underneath. **What you can ask for** • "Which subreddits discuss project-management tools, and how big are they?" • "Find posts complaining about Notion pricing in the last month." • "Read the full comment tree on this thread and summarise the disagreement." • "What is r/selfhosted posting about this week?" • "Search every community for mentions of our product name." **How to use it** Point any MCP client at https://mcp.aisa.one/reddit/mcp and sign in with OAuth — there is no key to create or paste. 5 read tools: search across all of Reddit or inside one subreddit, browse a subreddit's post stream, read a subreddit's details, and pull a post's comment tree. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Find the complaint here, then ask the same agent what the competitor's traffic or backlinks look like — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/social/mcp for X plus Instagram, Reddit, Pinterest and YouTube; https://mcp.aisa.one/gtm/mcp for those plus Similarweb and Apollo.
Your agent needs creators who actually fit — starting from one profile you already like, or from a brief — and then a way to reach them. **What you can ask for** • "Find creators similar to this profile, in this country." • "Who else makes content like this account, with a comparable audience?" • "Look up the contact email for this creator." • "Build a shortlist for this brief and give me the emails." **How to use it** Point any MCP client at https://mcp.aisa.one/creator-discovery/mcp and sign in with OAuth — there is no key to create or paste. 2 tools: similar-creator lookup from a seed profile or a brief, and an email lookup for a creator. **Why this rather than the source** Similarity from a profile you already trust, rather than a filter over a follower-count database. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Shortlist the creators here, then ask the same agent for their posting history on Instagram or X — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/social/mcp for what those creators actually post; https://mcp.aisa.one/sales/mcp for the rest of the outreach.
Related MCP Servers
- AlicenseAqualityFmaintenanceInstagram influencer discovery for AI agents. One tool (search_leads) with filters for category, country, city, keyword, gender, follower range; returns username, bio, public business email (where available), verified/business flags. Pay-per-call in USDC on Base or Solana via x402 — no API keys. Free demo mode returns 3 preview results. Live at https://socialintel.dev/mcp.11MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to retrieve and analyze Instagram posts and profiles, including captions, media, video frames, transcripts, and engagement metrics, through MCP tools.MIT
- AlicenseAqualityAmaintenanceEnables AI agents to query public social media data across TikTok, Instagram, YouTube, X, Douyin and Xiaohongshu through ten unified business-level tools covering creator and post search, comments, trending topics, and comment insights. Ships one normalized schema over MCP, SSE, REST and stdio, with per-call pricing and cost/balance reported in every response.10MIT
- FlicenseNot gradedqualityCmaintenanceA production-ready MCP server for interacting with Instagram/Meta APIs, enabling AI agents to manage content, analyze performance, research competitors, and handle publishing workflows.-
Glama MCP Gateway
Add one secure layer between your agents and this server.