16 Instagram creator tools as an MCP server — Reels/Story/carousel downloaders, engagement audit, hashtag search, Reels hook generator, best-time-to-post, content calendar and more.
instapdown-mcp registers 16 tools with complete input schemas and descriptions. Tool naming is action-based and clear (download_*, search_*, generate_*, get_*, audit_*, extract_*). Descriptions are comprehensive (150-300 chars typical), exceeding the 10-1024 char guideline and providing context on when to use each tool. All parameters are typed and described. However, output schemas are NOT documented, the handler returns generic text wrapped in {type: 'text'} without revealing the structure of responses (e.g., does download_reels return JSON with {url, audio_url} fields, or plain text?). Error handling returns JSON-formatted error messages but lacks recovery guidance (no actionable next steps for LLMs). Tool composition is excellent, single-responsibility tools chain naturally (e.g., search_hashtags → get_hashtag_niche). The server lacks tool annotations (readOnlyHint, destructiveHint, idempotentHint) which would help agents understand side effects. No pagination parameters despite tools that could return large arrays (e.g., get_content_calendar returns up to 200 entries but schema does not document per-item field names or structure).
Extract the exact hashtag set any public Instagram creator uses on their last 12 posts, ranked by frequency. Reveals someone's actual working tag stack, not what they say they use. Public accounts only.
Download every slide of a public Instagram carousel post — photos and videos both. Returns an array of media URLs in the original slide order at each slide's native aspect ratio.
Download a single-image Instagram post at original full resolution. Use download_carousel instead if the post has multiple slides.
Download the full-resolution profile picture for any public Instagram account. Returns the original ~1080x1080 JPG straight from the CDN, not the low-res avatar Instagram shows in the app.
Download an Instagram Reel from a public post URL. Returns the original 9:16 HD MP4 URL and audio track, with no watermark and no re-encoding. Public accounts only — private accounts return HTTP 422.
Output schemas are not documented. Handlers return `{type: 'text', text: <string>}` but the structure of the returned text (JSON fields, array format, etc.) is never specified. LLMs cannot plan downstream tool chains without knowing what fields to expect (e.g., does download_reels return {url, audio_url, duration}?).
Error handling returns JSON-formatted errors but lacks recovery guidance. When a tool fails (e.g., HTTP 422 for private account), the LLM receives only {error: <message>} without actionable next steps. Should include hints like 'Try a different public account' or 'Call search_hashtags instead'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 60 | 2026-07-28+ | v2 |
Fetch every currently-active Instagram Story for a public username within the 24-hour visibility window. Returns MP4 or JPG URLs for each Story frame. Private accounts return HTTP 422.
Download an Instagram feed video (not a Reel) from a public post URL. Returns the original MP4 in whatever resolution the creator uploaded, no re-encoding.
Calculate Instagram engagement rate weighted for the 2026 Reels-ranker signals: likes, comments, saves and shares are each weighted differently. Returns weighted ER, follower-tier benchmark (Nano through Mega) and a niche multiplier. Use engagement_health_check instead when you have a live username — this tool is for hypothetical / manual numbers.
Audit any public Instagram profile's engagement health. Pulls the last 12 posts and returns engagement rate, save rate, comment rate, follower-tier benchmark comparison and niche-adjusted rating. Public accounts only.
Extract the audio track from a public Instagram Reel and return the direct URL to the source m4a container. Useful for trending-sound research, podcast clips and remix reference material.
Convert plain text into Instagram-compatible Unicode "fonts" for bio, name field and captions. Not real fonts — Unicode Mathematical Alphanumeric Symbols and other substitutions Instagram renders as if styled. 22 styles supported including Bold, Italic, Script (cursive), Fraktur (gothic), Double Struck, Monospace, Small Caps, Circled, Squared, Upside Down. Pass one style name or omit to get every style back.
Generate first-second Instagram Reels opening hooks for a niche. Returns 10 verified 2026 hook templates drawn from Instapdown's 900-hook library. Country + language optional — pass them for locale-native hooks (Turkish, Arabic, Spanish etc). 2024-era slow-burn "wait for it…" openers are deprioritized because Reels' 2026 ranker penalises them.
Return data-driven optimal Instagram posting windows for a country. Source: Buffer 2026 verified dataset (30M+ posts) mapped to each market's local timezone. Returns 5 prime posting slots (with notes on which signal each optimizes for — Reels Save rate, Watched-to-end, comment threads etc.) plus a 7-day heatmap. Supported markets: US, GB, CA, AU, BR, MX, ES, IT, DE, FR, NL, SE, TR, JP, SA, AE, RU.
Return the Instagram content calendar entries for a market, filtered by an optional date range and/or niche. Each entry carries a native-language Reels hook and a hashtag set. Islamic-lunar and astronomical dates use verified 2026 and 2027 anchors. Markets: US, GB, CA, AU, BR, MX, ES, IT, DE, FR, NL, SE, TR, JP, SA, AE, RU, GLOBAL. Use "GLOBAL" for cross-market dates (Christmas, New Year, Ramadan, etc).
List the 25 curated Instagram hashtag seed niches Instapdown ships. Returns each niche's slug, human label, one-line description and category grouping. Use search_hashtags with the returned slug to get live hashtags for a niche.
Live-search Instagram's public hashtag index for a topic and return real post counts. Not cached, not fabricated — reflects the current state of the public hashtag graph. Country + language shape the returned tag mix (Turkish tags for TR, Arabic for SA/AE, etc). Use this when the user gives a free-form topic; use get_hashtag_niche if they name one of the 25 curated seed niches.
Tool annotations are missing. No tools declare readOnlyHint, destructiveHint, or idempotentHint. All tools are read-only (safe to retry), but this is never declared in the schema. Agents cannot infer safety properties without annotations.
get_content_calendar accepts 'limit' parameter (default 50, max 200) but output schema never specifies the per-item structure (what fields does each calendar entry contain?). Tool description mentions 'entries' with 'native-language Reels hook' and 'hashtag set' but does not document the response format.
generate_instagram_fonts and generate_reels_hooks can return variable-length arrays (up to 22 styles or 10 hooks) but tool descriptions do not specify whether all items fit in one response or if pagination is needed. Agents calling these tools cannot predict response size.
Parameters like 'country' (in search_hashtags, get_best_time_to_post, get_content_calendar) accept free-form strings but descriptions reference 'BCP-47 language tag' or 'ISO 2-letter country code' without explicit enum constraints. Agents may pass invalid codes; server accepts them silently or fails with opaque errors.
download_story, download_reels, engagement_health_check, and audit_creator_hashtags accept 'username' with or without '@' (per descriptions), but no validation or normalization is documented. If an agent passes '@jack' vs 'jack' inconsistently, tool may silently fail or succeed unpredictably.