Shoplinky MCP server
Endpoint, sign-in, tools, quotas and errors for connecting an AI assistant to Shoplinky's Instagram influencer discovery.
Shoplinky builds and runs its own remote MCP server; no third-party automation service sits in between. It lets a brand ask its AI assistant to find Instagram creators, check their audience and engagement, and build a shortlist for campaigns, using the brand's own Shoplinky account, plan and quota.
You need a Shoplinky brand account. Creator accounts can't connect.
https://mcp.shoplinky.com/mcp.https://mcp.shoplinky.com/mcp as a remote MCP server that supports OAuth.Starting the connection opens the Shoplinky sign-in page. Sign in (or sign up), check which app is asking, and choose Allow. The assistant is then connected to your default brand account.
Example requests:
Every tool is read-only. The connector never posts, messages creators, or changes anything in your Shoplinky account.
The assistant loads a skill with get_skill and follows it. The skill tools only analyse the text the assistant passes to them: they don't use your creator-discovery quota, don't call Shoplinky, and don't post anything.
From the instagram-agent-skill pack by Jake Schincariol (MIT License): https://github.com/Jakeschincariol/instagram-agent-skill
ig-reel: Reel script from an idea, scored hooks, timed beat sheetig-viral: find reels working in a niche, build a swipe fileig-caption: write and lint a captionig-carousel: carousel slidesig-story: the day's Storiesig-profile: score a profile out of 100 and rewrite itig-plan: plan the weekig-human: make a draft sound human; use before showing any caption, script, comment, reply or DMig-comment: comments on other people's postsig-reply: replies to comments on the user's postsig-dm: DMs and follow-upsig-repurpose: turn a long video, podcast or article into postsig-audit: what worked in past postsGenerated from the server's tool registry, so it always matches what your assistant sees.
search_instagram_influencers read-onlySearch Instagram Influencers
Search for Instagram influencers/creators matching filters such as follower count, engagement rate, bio keywords, location, language, interests, and verification status. Pass platform_username to look up a specific creator (or the user's own account) by handle; pass creator_lookalikes to find creators similar to one. Uses your connected Shoplinky brand account's creator-discovery quota. Returns up to 50 creators per call.
| Parameter | Type | Description |
|---|---|---|
platform_username | string | Find creators whose username starts with this handle, e.g. to look up one account. When set, every other filter except limit and offset is ignored |
creator_lookalikes | string | Username of a creator to find lookalikes of: creators with similar content |
bio_phrase | string | Keyword(s) that should appear in the creator's bio |
hashtags | string[] | Hashtags the creator regularly uses |
mentions | string[] | Accounts the creator regularly mentions |
creator_locations | string[] | Location IDs the creator is based in, as returned by list_locations |
creator_language | string[] | Language codes the creator posts in |
creator_gender | "MALE" | "FEMALE" | "ANY" | Creator gender to match |
creator_age | { min: number, max: number } | Min/max creator age |
creator_interests | string[] | Interest/category names, as returned by list_interest_categories |
follower_count | { min: number, max: number } | Min/max follower count |
engagement_rate | { min: number } | Minimum engagement rate, e.g. 0.02 for 2% |
is_verified | boolean | Only creators with (true) or without (false) a verified badge |
has_contact_details | boolean | Only creators who list contact details such as an email |
limit | number | Max results to return (default 10, max 50) |
offset | number | Number of results to skip, for paging through results |
get_instagram_influencer_profile read-onlyGet Instagram Influencer Profile
Get full profile analytics for a single Instagram creator by username: follower count, engagement rate, average likes/views/comments, audience demographics (gender/age/region), and recent/top content. Uses the account's creator-analytics quota. If full analytics are unavailable it falls back to a creator search by username, then to a handle search, and says which one answered in `source`; do not repeat those calls yourself.
| Parameter | Type | Description |
|---|---|---|
username required | string | The creator's Instagram username (handle, without @) |
search_instagram_handles read-onlySearch Instagram Handles
Autocomplete/typeahead search for Instagram usernames matching a partial username or display name. Returns matching handles.
| Parameter | Type | Description |
|---|---|---|
query required | string | Partial username or display name to search for |
limit | number | Max handles to return (default 10, max 50) |
list_interest_categories read-onlyList Interest Categories
List the valid interest/category names usable in the creator_interests filter of search_instagram_influencers.
No parameters.
list_locations read-onlyList Locations
Search for location IDs (city/state/country) usable in the creator_locations filter of search_instagram_influencers.
| Parameter | Type | Description |
|---|---|---|
query required | string | Location name to search for, e.g. 'Mumbai' or 'United States' |
list_languages read-onlyList Languages
List the valid language codes usable in the creator_language filter of search_instagram_influencers.
No parameters.
get_skill read-onlyGet Skill
Load a skill: a step-by-step method to follow for the user's request. Call it before doing work a skill covers, then follow the skill. Instagram content: ig-reel (Reel script from an idea, scored hooks, timed beat sheet); ig-viral (find reels working in a niche, build a swipe file); ig-caption (write and lint a caption); ig-carousel (carousel slides); ig-story (the day's Stories); ig-profile (score a profile out of 100 and rewrite it); ig-plan (plan the week); ig-human (make a draft sound human; use before showing any caption, script, comment, reply or DM); ig-comment (comments on other people's posts); ig-reply (replies to comments on the user's posts); ig-dm (DMs and follow-ups); ig-repurpose (turn a long video, podcast or article into posts); ig-audit (what worked in past posts). Call with no arguments to list the skills with full descriptions, or pass `reference` (not together with `skill`) for a data file a skill points to.
| Parameter | Type | Description |
|---|---|---|
skill | "ig-reel" | "ig-viral" | "ig-caption" | "ig-carousel" | "ig-story" | "ig-profile" | "ig-plan" | "ig-human" | "ig-comment" | "ig-reply" | "ig-dm" | "ig-repurpose" | "ig-audit" | The skill to load |
reference | "hook-formulas" | "profile-rubric" | "slop-lexicon" | "voice-template" | A data file a skill refers to: hook-formulas, profile-rubric, slop-lexicon, voice-template |
score_reel_hooks read-onlyScore Reel Hooks
Score one or more Instagram Reel hooks (the first spoken line) 0-100 on length, specificity, stakes, front-loading and viewer address, flag dealbreakers like greetings or "stop scrolling", and rank them. Text heuristics that catch weak hooks; not a view predictor. Used by the ig-reel skill.
| Parameter | Type | Description |
|---|---|---|
hooks required | string[] | Hook lines to score, one per item |
time_reel_script read-onlyTime Reel Script
Turn an Instagram Reel script into a timed beat sheet (one line per beat) and flag a hook past 3 seconds, beats over 4 seconds, runs of beats with nothing concrete, a missing loop back to the hook, and distance from a target length. Timings are estimated from word count. Used by the ig-reel skill.
| Parameter | Type | Description |
|---|---|---|
script required | string | The spoken script, one beat per line |
target_seconds | number | Target Reel length in seconds |
wpm | number | Speaking rate in words per minute (default 165) |
lint_instagram_caption read-onlyLint Instagram Caption
Check an Instagram caption before it is posted: what the feed shows before "... more", length, first line, concreteness, hashtag count (Instagram's cap is 5), hashtag placement, dead links, number of calls to action, emoji density and whether search terms appear. Returns PASS/WARN/FAIL per check and a verdict. Used by the ig-caption skill.
| Parameter | Type | Description |
|---|---|---|
caption required | string | The caption text |
keywords | string[] | Search terms the caption should contain, e.g. ["client proposals"] |
truncate_at | integer | Characters shown before "... more" (default 125) |
humanize_text read-onlyHumanize Text
Clean a draft (caption, script, comment, reply or DM) so it reads as written by a person: removes invisible characters, replaces em dashes and curly quotes, swaps stock AI phrasing for plain words, keeps URLs intact, and flags structural tells to rewrite by hand. Returns the cleaned text and a report. Used by the ig-human skill.
| Parameter | Type | Description |
|---|---|---|
text required | string | The draft to clean |
check_ai_writing read-onlyCheck AI Writing Signals
Score how machine-written a draft reads on five checks (sentence-length variation, specificity, stock-phrase density, typographic fingerprint, voice), 0-100 where higher reads more human, with a PASS/REVIEW/FLAGGED verdict. Pass previous_text to compare a revision against the earlier draft. Text heuristics only; not an AI-detector verdict. Used by the ig-human skill.
| Parameter | Type | Description |
|---|---|---|
text required | string | The draft to score |
previous_text | string | An earlier draft, to show the before and after |
build_reel_swipe_file read-onlyBuild Reel Swipe File
Rank Instagram reels the user collected by outlier multiple (views divided by the account's median views, or followers if no median), name the hook formula each used, score each hook, compare the top and bottom thirds, and return the swipe file as markdown. Pass the reels as structured rows or as tab-separated text with a header row. Used by the ig-viral skill.
| Parameter | Type | Description |
|---|---|---|
reels | { account: string, followers: integer, median: integer, views: integer, hook: string, on_screen: string, length: number, cta: string }[] | One entry per reel |
tsv | string | Alternative to reels: tab-separated rows with a header like account, followers, median, views, hook |
creatorsDiscovered, creatorsRemaining, totalQuota).search_instagram_influencers returns up to 50 creators per call; use offset to page through results.https://mcp.shoplinky.com/mcp, Streamable HTTP in stateless mode. Send one JSON-RPC request per HTTP POST. GET and DELETE return 405.https://mcp.shoplinky.com/oauth/register). PKCE with S256 is required. Redirect URIs must use https; http is allowed only for localhost.https://mcp.shoplinky.com/.well-known/oauth-authorization-server and https://mcp.shoplinky.com/.well-known/oauth-protected-resource. An unauthenticated request to /mcp returns 401 with a WWW-Authenticate header that points to the resource metadata.isError: true and a message you can show the user, for example that Shoplinky took too long to respond, or that the Shoplinky sign-in expired and the connector needs to be reconnected.list_* tools change rarely and are cached for up to an hour.The connector acts as your signed-in Shoplinky account and only reads data your plan already gives you access to. The MCP server keeps the sign-in session needed to call Shoplinky on your behalf; the tokens it issues to your assistant are stored only as hashes. It does not store your conversations or tool results, including the text sent to the skill tools. See the Privacy Policy and Terms.
To disconnect, remove Shoplinky from your assistant's connector settings. Connections that aren't used for 30 days expire automatically.
Email contact@shoplinky.com or use the contact page.