Overview
Nooticr MCP is a Model Context Protocol server that lets an AI assistant read public social posts across 10 networks and product listings across 12 marketplaces, and act on what it finds.
It connects over Streamable HTTP at https://mcp.nooticr.com/mcp, authenticates with OAuth 2.1 (or an API key, for a server with no browser), and exposes 133 tools. Assistants use it to fetch a post's media and spoken transcript, read its comment section, survey a niche, scan a shopping category down to its review text, and then produce work from that: alternative hooks, variants to film, a draft scored before publication.
Networks covered: TikTok, Instagram, YouTube, X, Reddit, Weibo, LinkedIn, Douyin, Xiaohongshu, Bilibili.
For IT administrators
If you are deciding whether to approve this server for your organisation, this section is the short version. Everything here is enforced in the implementation, not policy alone.
What it does
- Reads public posts your users or their assistant explicitly request, by URL or search term
- Returns that content to the assistant to reason over — it runs no model of its own
- Draws on the signed-in user's own credit balance
- Returns structured data and rendered cards to the assistant
What it cannot do
- Hold your social credentials. An account can be linked, but only by sending you to the platform's own consent screen — the token it issues is held by Nooticr and never reaches the assistant
- Post, comment, like, follow or message anywhere, on anyone's behalf
- Read private messages, drafts, or non-public profile data
- Access anything on the user's device or network
- Reach other systems in your environment — it only calls out to the services listed below
Almost nothing it writes leaves Nooticr. Of the 133 tools, 93 carry readOnlyHint: true. The 40 that do not include writes to the user's own Nooticr account, consent-flow setup, store-connection links, a confirmed comment reply, AI-employee management, creator-pipeline records, creative briefs, and two paid marketplace scans that collect public listings and reviews. Fifteen carry destructiveHint: true because they replace a saved marker, portfolio, product value, analysis, content plan, review, spreadsheet cells, a creator's pipeline details, or the assets attached to a creative brief, stop something the user started, let an AI employee go, or approve or reject one of its queued actions. None writes to your organisation's systems. Public actions an AI employee prepares (publish, email, reply, listing or price changes) wait for the user's approval through approve_action, and only the exact action the user was shown and approved goes out, unless the user has turned autopilot on for that action type, and the one tool that writes to a third-party network, post_comment_reply, posts a single reply to a comment on the user's own account, and only the exact text the user confirmed; no other tool can post, comment, like, follow or message anywhere.
Access and revocation
Interactive clients authenticate with OAuth 2.1 with PKCE (S256) and dynamic client registration — no key is ever pasted into a chat window, and the tokens it issues are scoped and expiring.
A server-side integration has no browser to run that flow in, so it authenticates with an API key instead: one credential, sent as Authorization: Bearer nk_…, minted from an account that did sign in once. A key is scoped to one account and one workspace, stored only as a hash, and cannot create or revoke keys — so a leaked key cannot outlive being revoked. See Server-side integrations.
Two scopes are granted, and they describe exactly what the tools do:
social:read— read public posts, transcripts, comments, creators, sounds and hashtagscredits:spend— run the tools that draw on the user's credit balance
To revoke: the user removes the connector in their AI client, which invalidates its tokens immediately; an API key is revoked with npx -y @nooticr/mcp api-key revoke <id>, which takes effect at the API on the spot. To remove the account and its data entirely, email support@nooticr.com.
Data handling
| Data | Stored? | Retention |
|---|---|---|
| Account identity (email, display name, user id) | Yes | Until the account is deleted |
| OAuth tokens issued to the AI client | Yes | Until expiry or revocation |
| API keys (stored as a sha256 hash, never in the clear) | Yes | Until revoked or deleted with the account |
| Credit ledger (tool name, credits, timestamp) | Yes | Retained as a financial record |
| URLs and search terms passed to tools | No | Processed, not retained after the call |
| Content of retrieved posts | No | Streamed through; media cached only transiently so it can be displayed |
| Chat conversation content | No | The server sees the tool call, not the surrounding conversation |
| Payment card details | No | Stripe handles payment; Nooticr receives only a reference |
| Operational logs (timestamps, status codes, errors) | Yes | Up to 30 days |
Data is not sold, not shared for advertising, and not used to train models.
Subprocessors and egress
The server calls out to these services and no others:
| Service | Purpose |
|---|---|
| Cloudflare | Hosting and edge delivery of this server |
| api.nooticr.com | The Nooticr API — accounts, credits, tool execution |
| Stripe | Payment processing |
| Social data provider | Retrieving public posts from the supported networks |
| AI provider | The analysis and generation tools |
If you allowlist egress, the assistant only needs to reach mcp.nooticr.com. Everything else is server-to-server.
Cost control
Spend is bounded by the user's prepaid credit balance — there is no invoice, no overage and no auto-renewal. A user cannot spend more than they have loaded. Every tool declares its price in its own description and in _meta.nooticr/creditCost, so an assistant can budget before calling. Failed calls are refunded automatically, and a call interrupted mid-flight is billed once at most.
Third-party content
Retrieved posts are published by third parties and may contain personal data about the people who published them. Nooticr processes it only to answer the request. Your users are responsible for using it lawfully — see the acceptable use section of the Terms. Nooticr is not affiliated with, endorsed by or sponsored by any of the platforms; their names and marks identify coverage only.
Connecting
Claude.ai and Claude Desktop
Settings → Connectors → Add custom connector, then paste:
https://mcp.nooticr.com/mcpSign in with Nooticr when prompted. No key to copy.
Claude Code
/plugin marketplace add Nooticr/nooticr-mcp
/plugin install nooticr@nooticrChatGPT
Settings → Connectors → Advanced → Developer mode, then add the same URL.
Cursor and other stdio clients
{
"mcpServers": {
"nooticr": {
"command": "npx",
"args": ["-y", "@nooticr/mcp"]
}
}
}Then npx -y @nooticr/mcp login once to sign in.
Server-side integrations (no browser)
The OAuth flow needs a browser once and leaves behind a token that has to keep being refreshed. If your integration runs on a server, mint an API key instead. The quickest way is the API keys card on your dashboard — sign in, name the key, copy it. From a terminal, the same thing:
npx -y @nooticr/mcp login
npx -y @nooticr/mcp api-key create --name "my-service"The key is printed once and stored only as a hash, so it cannot be shown again. Give it to the deployment and there is nothing left to configure:
POST https://mcp.nooticr.com/mcp
Authorization: Bearer nk_…Or, for a local stdio process, set NOOTICR_API_KEY — or run npx -y @nooticr/mcp login --api-key nk_… where a client will not inherit your shell environment. There is no consent screen, no redirect URI and no refresh: the key is valid until npx -y @nooticr/mcp api-key revoke <id>. Pass --expires-in-days at creation if you would rather it also expire on its own.
Marketplaces
Twelve shopping sites, read the same way a post is: the products, their prices, the full star histogram and the review text itself — not a summary of it.
One marketplace argument picks the site, so an assistant chooses a site rather than choosing between twelve near-identical tools. Amazon has a tool of its own, scan_amazon_category, because it returns Amazon's own review-aspect counts on top of the same shape.
| Site | marketplace | What to pass as the product id |
|---|---|---|
| Amazon | amazon | an ASIN or a full Amazon product URL Storefronts — domain: a country code or host — com (US), co.uk, de, fr, it, es, ca, co.jp, in, com.br, com.mx, com.au, nl, se, pl, com.be, com.tr, ae, sa, eg, sg, cn. Default www.amazon.com |
| AliExpress | aliexpress | the numeric id from /item/<id>.html, or a full AliExpress product URL One storefront; takes no market argument. |
| Cdiscount | cdiscount | the SKU from a product URL's /f-<category>-<sku>.html, or the full URL One storefront; takes no market argument. |
| Flipkart | flipkart | the 16-character PID from a product URL's pid= parameter, or the full URL One storefront; takes no market argument. |
| Mercado Libre | mercadolibre | a site id such as MLA904253674, or a full Mercado Libre product URL Storefronts — market: one of eighteen markets, named however it comes to hand — MLB, br, Brazil or mercadolivre.com.br. Inferred from the ids when omitted, and a job runs against one market: an id from another is refused rather than mis-filed |
| Lazada | lazada | the number after -i in a product URL (13711387806 in /products/<slug>-i13711387806.html), or the full URL Storefronts — market: sg, my, th, vn, ph or id. An item id is scoped to one of them — the same id on another Lazada host is a different product or nothing at all |
| Otto | otto | the tail of the product path — C1720803139 on otto.de, or the SKU AKLBB2029107352 on ottoversand.at Storefronts — market: de or at. The two are not interchangeable: an id from one does not address a product on the other |
| Rakuten | rakuten | on Ichiba `<shopId>_<itemId>` (411453_10000003) or `<shop>/<manageNumber>`; on Taiwan `<shop>/<productCode>`. A full product URL works too Storefronts — market: jp (Ichiba) or tw. Taiwan publishes no review text, so a category study there reads on price and rating alone |
| Trendyol | trendyol | the number after -p- in a product URL (819066262 in /brand/name-p-819066262), or the full URL Storefronts — market: one of 47 storefronts — tr, de, ae, sa, at, be, fr, it, nl, pl, ro and the rest. An id is scoped to one: the same number 404s on another country's |
| Jumia | jumia | a SKU such as OR537EA86PWGTNAFAMZ. A product URL does NOT contain it — the number at the end of a product path is a different handle — so reach a product through `query` instead Storefronts — market: ng, eg, ke, ma, ci, gh, sn, tn, ug or dz |
| Vinted | vinted | the numeric id from /items/<id>, or a full Vinted item URL Storefronts — market: one of 27 European storefronts — fr, de, es, it, pl, co.uk, com (US), com.au and the rest. A listing belongs to exactly one: the same item id does not exist on another country's Vinted |
| Temu | temu | the goods id after -g- in a product URL, or the full URL One storefront; takes no market argument. |
Search in the site's own language. A query in the wrong language does not error — it returns the few imported listings that happen to match, which reads as a thin category and is really a bad search. Each site's expected language: Amazon the storefront's own — English on com, co.uk, ca, in, com.au and sg, otherwise the country's · AliExpress English · Cdiscount French · Flipkart English · Mercado Libre Spanish, except Brazil (MLB), which is Portuguese · Lazada English on sg and ph; Thai, Vietnamese, Indonesian or Malay on th, vn, id and my · Otto German, on both storefronts · Rakuten Japanese on jp, Traditional Chinese on tw · Trendyol Turkish on tr; the storefront's own language elsewhere · Jumia English on ng, ke, gh and ug; French on ci, sn, ma, tn and dz; Arabic or French on eg · Vinted the storefront's own — French on fr, German on de, Polish on pl, and so on · Temu English.
Collection is a real browser render behind each site's bot defences, so it runs as a background job: a scan returns what is ready plus a scanId, and the poll that finishes it is free. 3 credits per product collected; a single product by id is 3.
Tool reference
133 tools. Costs are in credits and match what the server charges; an argument marked ? is optional.
Read a post
Retrieve what a post contains. No interpretation, no AI.
| Tool | Cost | Inputs | What it does |
|---|---|---|---|
get_social_media | 1 cr | url | A post's media, caption, author and engagement counts. You want the post itself, not an interpretation of it. |
get_post_transcript | 1 cr | url, language? | The words actually spoken: read from the caption track where a platform publishes one (TikTok, Douyin, YouTube), heard from the audio everywhere else. The exact wording matters — a hook, a claim, a CTA. |
get_post_comments | 2 cr | url, limit? | Top comments, the themes the platform clusters them into, and which the creator pinned or liked. You want to read what people wrote. Use summarize_post_comments to have it synthesised instead. |
get_post_frames | 2 cr | url, count? | Frames from the post's video as real images, chosen by scene change rather than by the clock. Roughly 1,200 tokens of context each. The frames are all you want. analyze_post pairs them with the transcript for one credit more. |
Understand a post
The material behind a post you already have, for your own model to read.
| Tool | Cost | Inputs | What it does |
|---|---|---|---|
analyze_post_fast | 2 cr | url | The post's transcript, caption and stats — everything but the pictures. Two fetches: get_social_media and get_post_transcript. The words and numbers answer the question. 2 credits, without frames, and it carries everything the script and structure depend on. |
analyze_post | 3 cr | url | Frames sampled across the video, as images your own model can look at, plus the transcript. Two fetches: get_post_frames (2) and get_post_transcript (1). The visuals are the point — framing, editing, on-screen text, pacing. |
understand_social_post | 3 cr | url, focus? | The same frames and transcript as analyze_post, asked for what physically happens on screen rather than why it works. You need the events, not the strategy. |
summarize_post_comments | 2 cr | url, limit? | The comment section, every comment with an id, and the taxonomy to label them with — sentiment, and whether each is praise, a complaint, a bug report, a question, a request, a comparison or spam. The goal is what to make next, not what people wrote. show_comment_review then draws your labels for free. |
compare_social_posts | 1 cr | urls[] (2–5) | The first post with its stats, and the comparison left to you — fetch the rest with get_social_media at 1 credit each. Performance differs and you need to know why. |
why_did_this_underperform | 3 cr | url | One post read against the creator's own recent median, so the answer can be “this is an ordinary result, not a failure”. You have one post and nothing to compare it with; compare_social_posts is for two URLs you already picked. |
show_post_analysis | Free | the analysis you wrote | Draws the analysis you wrote after analyze_post or analyze_post_fast handed you the material. Fetches nothing. After you have read the frames and the transcript. |
show_comment_review | Free | your labelled comments | Draws the comment classifications you produced from summarize_post_comments, each with its sentiment and category, sortable. After you have classified the comments. |
show_compared_posts | Free | your comparison | Draws the comparison you wrote, with a badge on the winner, what differed and the next experiment. After compare_social_posts and the fetches you made yourself. |
Research a niche or creator
Look across many posts to find the pattern.
| Tool | Cost | Inputs | What it does |
|---|---|---|---|
discover_social_posts | 2 cr | niche, platform?, limit?, offset? | Recent posts for a niche across seven networks, with pagination. You want posts to look at. Use niche_report for the pattern across them. |
get_user_posts | 2 cr | username, platform?, limit? | One creator's recent posts with stats. Scanning an account. |
search_creators | 2 cr | keyword, platform?, count? | Creators by niche or keyword, with follower and engagement data. You know the niche but not the names. |
get_similar_creators | 2 cr | username, platform? | Lookalikes for a creator that already fits. One creator works and you want more like them. |
suggest_creator_identity | 2 cr | handle, platform?, platforms? | Accounts on other networks that may be the same person, with the evidence for each. Suggests, never merges. 2 per network searched plus 2 for the handle. You have one confirmed handle and want the same creator elsewhere. |
discover_sounds | 2 cr | keyword, platform?, count? | Trending audio with playable previews and usage counts. Picking audio, or spotting a sound before it peaks. |
discover_hashtags | 2 cr | country?, days?, count?, industryId? | Trending hashtags with volumes and whether each is rising, cooling or steady. Choosing tags, or catching a wave early. |
find_hook_pattern | 2 cr | username, platform?, limit? | A creator's recent posts, fetched so their opening lines can be read as a set and turned into fill-in-the-blank templates. Reverse-engineering someone you want to learn from. The same single fetch as analyze_creator_profile, asked a narrower question. |
niche_report | 2 cr | niche, platform?, count? | Recent posts in the niche with their stats, so the dominant formats, the hook patterns and the gaps can be read off them. Entering a niche, or deciding what to make next. |
analyze_creator_profile | 2 cr | username, platform?, limit?, focus? | A creator's recent posts with their stats — the material of a teardown: niche, themes, hook formula, what over- and underperforms. A deep read of one account. Pair it with analyze_post on the posts whose visuals you want to see. |
search_mentions | 2 cr | term, platforms?, since?, limit?, offset? | Brand monitoring: every comment that names a term, across nine networks at once, grouped under the post it was left on and filtered to a date window you choose — 2 credits per network searched (5 for Xiaohongshu), not per call. Watching what is said about a brand, product or person; discover_social_posts is for one platform. |
watch_creator | Free | username, platform?, note? | Add a creator to your watchlist. Stores the handle only — nothing is fetched. You want to follow someone over time rather than look once. |
unwatch_creator | Free | username, platform? | Drop a creator from the watchlist. They should no longer appear in the catch-up. |
list_watchlist | Free | — | Who you are watching, and when you last caught up on each. Reads the stored list only. Before paying for a catch-up, or to find the exact handle to unwatch. |
catch_up_watchlist | 2 cr | limit?, platform? | What everyone you watch has posted since your last catch-up — 2 credits per creator checked, not per call. Following a set of creators over time. |
detect_spoken_mentions | 2 cr | url, brands?, language? | Every brand named out loud in one video, for your model to find in the transcript beside the caption — 1 credit for the transcript and 1 for the caption, nothing when no transcript can be made. A brand may be said on camera but never written; you have the video's URL. |
search_spoken_mentions | 2 cr | term, platforms?, handles?, maxTranscripts? | Finds a term said out loud on camera rather than written anywhere — 2 credits per platform searched, 2 per creator handle checked and 1 per transcript actually fetched. A term might be spoken but never typed; search_mentions reads written text only. |
find_people_with_problem | 2 cr | problem, platforms?, shapes? | People describing a problem in their own words — 2 credits per search, and each platform is searched once per query shape, three by default, so 6 per platform. Demand research: who has the pain, in what words. Not searchable here: LinkedIn. |
answer_my_audience | 2 cr | username, platform?, limit? | Your own recent posts and the comments under them, so you can write the replies — 2 credits for the post list plus 2 per post opened, 14 at the default of 6. The job is answering your own audience rather than reading about strangers. |
show_audience_replies | Free | your drafted replies | Draws the replies you drafted, grouped under the post each comment was left on. Sends nothing. After drafting. |
track_creator | 2 cr | username, platform?, window? | One rival's recent posts scored against their own median, marking what is new since your last check. A rival you follow over time. Flat price, whatever the window size. |
compare_creators | 2 cr | usernames[] (2–5), platform? | Several creators on one window, each against their own median — one post list per creator, so 2 credits each and 4–10 in total. Comparing hit rates between two to five creators; track_creator covers one creator. |
watchlist_standings | 2 cr | limit?, platform? | How everyone on your watchlist is doing against their own median — 2 credits per creator, so the price is the size of your list. It confirms before spending. The weekly “who is accelerating”; catch_up_watchlist is what is new rather than how it did. |
show_standings | Free | your standings | Draws the standings you read out of compare_creators or watchlist_standings — one row per creator, their median, how often they beat it and by how much. After you have read the numbers. |
who_should_i_work_with | 2 cr | niche, platform?, seed? | A shortlist of creators worth approaching, with what to check before you do. 4 credits with a seed creator. Building a list to vet. It says what a full vet would cost rather than faking one. |
show_collab_shortlist | Free | your scored creators | Draws the creators you scored after vetting, ranked, with the scores attributed to you rather than to nooticr. After who_should_i_work_with and your own vetting. |
what_should_i_make_next | 2 cr | niche, platform?, limit? | The supply side and the demand side together — 2 credits for the post list, 2 per post read and 2 for the sweep, 12 at the default of 4. Deciding what to film; niche_report covers the supply half alone. |
create_brand_watch | Free | term or handle, kind?, cadence?, budgetCredits?, deliverTo? | Schedules a recurring sweep and emails only what is new. Free to create; each run bills like the tool it repeats — 2 credits per network (5 for Xiaohongshu), or a flat 2 for a competitor watch. You want the answer to keep arriving. It quotes the cost and asks before creating anything. |
list_brand_watches | Free | — | Every watch you have: cadence, cost per run, credits spent, runs made, next run due, and whether it is stopped. Before creating one — a second watch on the same term is a second recurring charge for the same answer. |
stop_brand_watch | Free | id | Stops a watch immediately: the run that was due does not happen and nothing further is charged. Works at a zero balance, because someone out of credits is exactly who needs to turn off what is spending them. |
update_watch_portfolio | Free | watchId, add, remove | Adds terms to a portfolio watch or takes them out. The per-run budget you agreed to does not move, so no new confirmation is needed. When a new competitor or product should join the comparison — the reply says if the split budget now reaches fewer networks. |
mention_trend | Free | watchId | The series a brand watch has built up over its runs, per network, with the mentions more than one run has seen. Free — the sweeps were billed when they ran. Reading direction out of a watch you already pay for. |
show_trend | Free | your read of the series | Draws the trend as a chart with your own read of what changed. Says so when the series is too short to call. After mention_trend. |
prepare_handoff | Free | the items you classified | Turns a bug report in a comment into the exact text to file in GitHub, Jira or Linear, with the quote framed as third-party evidence and a search string to check for duplicates first. You classified something worth filing. Fetches nothing and costs nothing. |
Research a marketplace
Read a category on twelve shopping sites: products, prices, star histograms and the review text itself.
| Tool | Cost | Inputs | What it does |
|---|---|---|---|
scan_marketplace_category | 3 cr | marketplace, query? or items[], limit?, reviews?, market? | A whole category from one of twelve marketplaces: products, prices, star histograms and the review text, with the arithmetic over them. 3 credits per product collected — a product with reviews is a real browser render behind the site's bot defences. Sizing up a category or a competitive set. Collection runs in the background; poll marketplace_scan_status for free. |
marketplace_scan_status | Free | marketplace, scanId, waitSeconds? | Picks up a scan that was still running. Free: it is the poll the scan asked for, and repeating it is how a scan gets more time. A scan came back incomplete — which the first call usually does. |
marketplace_changes | Free | marketplace, query, market? | What moved in a category since the run before: products that entered or left a search's results, and ones whose price or place changed. Compared from stored scans, so it fetches nothing. Free. A category was scanned before and you want to know what changed; scan it again first to have a second run. |
get_price_history | Free | marketplace, id, market?, from?, to?, metric? | One product's price, rating, review count or availability over time, from the observations stored each time it was scanned. Fetches nothing. Free. You want to know whether a product got cheaper or better rated; read it once with get_marketplace_product to start its record. |
get_marketplace_product | 3 cr | marketplace, item, market? | One product by id or URL: price, rating, the full star histogram, specs and the review text. A single product; scan_marketplace_category collects many in one job. |
scan_amazon_category | 3 cr | query? or asins[], limit?, reviews?, domain? | The same as scan_marketplace_category for Amazon, plus Amazon's own review-aspect counts. 3 credits per listing collected. Amazon specifically. Any other site goes through scan_marketplace_category. |
amazon_scan_status | Free | scanId, waitSeconds? | Picks up an Amazon scan that was still running. Free, and repeatable. The Amazon half of marketplace_scan_status. |
get_amazon_product | 3 cr | asin or url, domain? | One Amazon listing: price, rating, star histogram, features, specs, Amazon's review digest and aspect breakdown, and the review text. A single listing. |
show_amazon_category_insights | Free | your category read | Draws the read you wrote beside the listings and their reviews, so a person can click a product and check any claim against the text it came from. After you have read the reviews. The scores shown are attributed to you, not presented as a nooticr rating of anyone's product. |
show_marketplace_category_insights | Free | marketplace, your category read | The same card for the other eleven sites: your read beside that site's listings and reviews, re-read from the scan so nothing is re-typed. After reading a scan_marketplace_category result. |
Make something
Turn what you learned into work you can publish.
| Tool | Cost | Inputs | What it does |
|---|---|---|---|
generate_hook_ideas | 2 cr | url? or topic, count?, tone? | The source post and its transcript, to write openings against. With a topic and no url it fetches nothing and costs nothing. You know the subject and need openings to choose between. |
evaluate_social_draft | Free | draft, platform? | Your draft back with the rubric to hold it to — hook, clarity, payoff, specificity and fit, each scored 1-10, plus the fixes worth making. Free: the text is already yours, so there is nothing to fetch. Before filming, while the draft can still be changed. |
adapt_post_for_platform | 2 cr | url, targets? | The source post and its transcript, to rewrite as an X thread, LinkedIn post, carousel, YouTube metadata or newsletter. A post worked and you want it on other surfaces. |
generate_post_variants | 2 cr | url, count?, angle? | The post that worked, with its transcript, to build variants from — hook, the angle that changes, ordered shot beats, CTA. Moving from why it worked to what to make. |
show_hooks | Free | the hooks you wrote | Draws the openings you wrote, each with the device it uses and who it stops. After generate_hook_ideas. |
show_variants | Free | the variants you wrote | Draws each variant's hook, the angle that changes, its shot beats and its call to action. After generate_post_variants. |
show_repurposed_post | Free | the copy you wrote | Draws the rewritten copy, one entry per surface you rewrote it for. After adapt_post_for_platform. |
review_post | Free | postId, or appId plus draft fields | Scores a post before you publish: hook strength, an optional A-vs-B hook comparison, aesthetic and storytelling notes, rewritten hook and caption suggestions. Nothing is published. The last check before it goes out. Free, same as the dashboard's own pre-publish review. |
draft_post | Plan AI credits | topic, appId?, platform? | A full draft for your own product — hook, caption, hashtags and a per-slide script. Saves and schedules nothing. Billed like the dashboard's Draft Post button: your workspace's plan AI credits, not your MCP balance. |
generate_captions | Plan AI credits | videoId or appId | A transcript plus start/end-timed caption lines for your own video. Burns nothing onto the video. Billed like the dashboard's Generate Captions button: plan AI credits. |
generate_content_plan | Plan AI credits | appId? | A weekly plan grounded in your own post history. Saves it; schedules and publishes nothing. Billed like the dashboard's Content Plan button: plan AI credits. Read it back later with get_content_plan. |
get_content_plan | Free | appId? | The saved weekly plan, or null when none has been generated yet. Read-only. Reading back what generate_content_plan produced. Free even when a plan exists. |
growth_brief | Plan AI credits | appId? | What is working, what is not, the wins, the risks and concrete next actions — grounded in your real post history and synced analytics. Read-only. Billed like the dashboard's Growth Brief button: plan AI credits. |
Your own product
Your own workspace: its products, its pipeline, its connected accounts and its performance.
| Tool | Cost | Inputs | What it does |
|---|---|---|---|
list_comments_to_answer | Free | platform?, influencerId?, postId?, sinceDays?, limit?, includeAnswered? | Recent comments on your own connected account that nobody has answered yet, newest first. Read-only; sends nothing. Free. You want to answer your audience and the account is connected with comment management. |
draft_comment_reply | Free with your text, else 1 cr | platform, commentId, postId, text?, guidance? | Stores a reply to one comment; nothing is posted. Free with your own text, 1 credit when nooticr writes it. Returns a draftId and confirmationToken. After list_comments_to_answer, to have a reply ready for the user to read. |
post_comment_reply | Free | draftId, confirm, confirmationToken | Posts a stored draft as the user's own account. Only after the user has agreed to the exact text. Each comment is answered at most once. Free. The user has read the draft and said to send it. |
creative_assets_list | Free | appId?, kind?, briefId?, since?, limit?, cursor? | The creative assets (voice-overs, images, videos, composites) generated in your workspace, newest first. Free. You want to see or reuse what was already generated before making more. |
creative_voices_search | Free | query?, language?, accent?, gender?, age?, useCase?, limit? | Search ElevenLabs' voice library for a voice to use in a voice-over. Library voices only. Free. Before creative_voiceover: it needs a voiceRef from here. |
creative_voiceover | Quoted first | appId, text, voiceRef?, quality?, confirm?, confirmationToken? | A voice-over with word timings. The first call returns a credit quote; nothing is charged until you confirm. You have a script and a voice from creative_voices_search. |
creative_sfx | Quoted first | appId, description, durationSeconds?, confirm?, confirmationToken? | A short sound effect from a description. The first call returns a credit quote; nothing is charged until you confirm. You need a one-off sound, not a music bed. |
creative_music | Quoted first | appId, prompt, durationSeconds, confirm?, confirmationToken? | An instrumental music bed of 5-60 seconds, generated as a job. The first call returns a credit quote; nothing is charged until you confirm. You need background music; describe mood and tempo, not artists. Poll creative_job_status for the result. |
creative_video | Quoted first | appId, prompt, durationSeconds?, aspect?, firstFrameAssetId?, referenceAssetIds?, audio?, confirm?, confirmationToken? | One short draft video clip (3-30 s), generated as a job. The first call returns a credit quote; nothing is charged until you confirm. You need a short clip, optionally from a first-frame image; add voice-over and music with the audio tools. Poll creative_job_status for the result. |
creative_compose | Quoted first | appId, segments, aspect?, draft?, voiceoverAssetId?, captions?, music?, sfx?, safeZone?, brandKit?, endCard?, output?, confirm?, confirmationToken? | Cuts your creative assets into one finished vertical video or still, with captions, brand colours, music and an end card. One flat render, quoted first. Never publishes. You have clips, images or audio and want them assembled into one post. Poll creative_job_status for the result. |
creative_settings_get | Free | appId? | Your workspace's creative spend caps and what was spent in the last 24 hours and this month. Free. A creative call was refused for a cap, or before a large batch. |
creative_brief_create | Free | appId, brief, platforms, audience?, hook?, voiceNotes?, variants?, pick?, budgetCredits?, slotAt?, influencerId? | Files a creative brief for one product; your Creative Producer employee or a teammate works it. Free. You want creative made for a product rather than generating it yourself. |
creative_brief_list | Free | status?, appId?, limit? | Your creative briefs with their drafts, picks and deliveries. Free. To see what is queued, waiting for a pick or delivered. |
creative_brief_update | Free | briefId, status?, notes?, draftAssetIds?, deliveredAssetIds?, actionIds?, creditsSpent? | Moves a creative brief along and attaches what was made. Free. Work on a brief started, produced drafts, or finished. |
creative_image | Quoted first | appId, prompt, size?, n?, transparent?, confirm?, confirmationToken? | 1-4 still images with GPT Image (low quality). The first call returns a credit quote; nothing is charged until you confirm. You need a picture, a background or a transparent sticker; put long text in captions, not in the prompt. |
creative_image_edit | Quoted first | appId, prompt, imageAssetIds, maskAssetId?, size?, confirm?, confirmationToken? | Edit or combine 1-4 of your existing image assets, with an optional mask. The first call returns a credit quote; nothing is charged until you confirm. You want to change or merge images you already generated rather than start over. |
creative_job_status | Free | jobId | Where an asynchronous creative job stands, with its finished assets and the credits quoted, charged and refunded. Free. A creative job was started and you are waiting for it; poll after pollAfterSeconds. |
sheets_create | Free | appId?, title, sheets? | Create a Google spreadsheet in the connected Google account, with named tabs and header rows. Nooticr owns the file, so later writes need no approval. Free. An employee needs a ledger, price table or report sheet it can keep writing to. |
sheets_list | Free | appId?, limit? | The spreadsheets this connection can see: the ones Nooticr created and the ones the customer picked, and whether each may be edited without approval. Free. Before creating one: the sheet you need may already exist. |
sheets_read | Free | appId?, id, range | Read an A1 range of a spreadsheet (at most 10000 cells). Free. You need the current numbers before adding to or changing a sheet. |
sheets_append_rows | Free | appId?, id, sheet, rows | Append typed rows after the last row of a tab. Free on files Nooticr created or the customer allowed; other picked files wait for approval. You are logging new entries (an expense, a price check) without touching existing rows. |
sheets_update_range | Free | appId?, id, range, values | Overwrite an A1 range with typed values. Same approval rule as sheets_append_rows. You are correcting or recalculating cells that already exist. |
sheets_add_sheet | Free | appId?, id, name | Add an empty tab to a spreadsheet. Same approval rule as sheets_append_rows. A new month or product needs its own tab. |
hire_employee | Free | template, name?, instructions?, schedule?, monthlyBudgetCredits?, maxCreditsPerRun? | Hires an AI employee that works on a schedule inside your workspace. Free to call: it quotes first and creates nothing until you confirm; the runs are billed to the hiring user, up to the monthly budget. You want recurring work done for you. Public actions wait for your approval unless autopilot is on. |
list_employees | Free | includeFired? | Your workspace's AI employees with status, schedule, next run and budget left. Free. Before hiring another, or to see what is running. |
pause_employee | Free | employeeId, resume? | Pauses an AI employee, or resumes it. It keeps its memory and thread. Free. You want it to stop for a while rather than for good. |
fire_employee | Free | employeeId | Lets an AI employee go for good and discards what was waiting for approval. Describes the effect first and acts only on confirmation. Free. You are done with it; to stop it temporarily, pause it instead. |
crm_upsert_creator | Free | platform, handle, ...fields | Adds a creator to your creator pipeline, or updates the one already there (matched by platform and handle). Free. You found a creator worth tracking, or learned more about one. |
crm_list_creators | Free | status?, appId?, query?, limit?, dueBefore? | Your creator pipeline, most recently updated first, each with its last interaction. Free. Before adding a creator, or to see who is due a next step. |
crm_update_status | Free | creatorId, status, note | Moves a creator to a new pipeline status and records why. Free. A creator's relationship with you changed. |
crm_log_interaction | Free | creatorId, kind, summary, body? | Records a note, vetting result, outreach draft, reply or deliverable against a creator. Free. Something happened with a creator that the pipeline should remember. |
list_pending_actions | Free | employeeId?, limit? | What your AI employees are waiting to do until you approve: a preview of what will be published, sent or changed. Free. Before approving or rejecting anything. |
get_employee_audit | Free | employeeId, from?, to?, types?, runId?, actionId?, limit?, verify? | One AI employee's tamper-evident audit trail: runs, calls and their cost, approvals, executed actions, config changes. Owners and admins only. Free. You need to know what an employee did, why an action went out, or that the record is intact. |
approve_action | Free | actionId | Approves one pending action. Returns the preview and a token first and runs nothing; the stored action runs exactly once after you confirm. Free. You have read the preview and want it to go out. |
reject_action | Free | actionId, note? | Rejects one pending action, with a note the employee can learn from. Free. The preview is not something you want published or sent. |
list_own_apps | Free | — | Every product in your own workspace — id, name, niche, product type. Reads only your own workspace. First, when your workspace has more than one product and another tool here asks for an appId. |
create_product | Free | name, niche?, product_type?, website_url? | Creates a product in the session's own workspace — the row every other tool here needs. Free: no AI call, just a row. A fresh workspace has none. It cannot create in a workspace you could name. |
update_product | Free | appId?, plus the fields to change | Patches your product's fields; omitted arguments leave their column unchanged, and the result lists what was actually written. A misspelled field shows up as one that did not change rather than as a silent no-op. |
analyze_product | Plan AI credits | appId? | Fetches your product's own website, reads its recent posts and performance, and writes the result as the product's brand playbook. 10 of your workspace's plan AI credits, first analysis free per workspace. Runs as a job — poll analyze_product_status. |
analyze_product_status | Free | jobId | Polls an analyze_product job: pending, thinking, done or error, and the playbook once it is done. Free to poll — the cost was charged when the job started. |
get_brand_playbook | Free | appId? | The product's brand playbook, if one has been configured in the dashboard or written by analyze_product. Returns available: false when none exists. Grounding anything you write in what the brand has already decided. |
get_scheduled_posts | Free | appId?, status? | What is queued to publish — title, status, scheduled time, approval status. Publishes and changes nothing. The pipeline, not the history; get_post_performance is what already went out. |
get_post_performance | Free | appId?, limit? | Your own published posts with their engagement counters — views, likes, comments, shares, platform, date. The raw history. Pair it with growth_brief for an interpretation. |
get_video_stats | Free | appId? | Your most recently synced video stats across every connected creator, plus a running total. Reads the last sync; triggers no new one. A quick total without spending anything. |
get_google_analytics_data | Free | appId? | Your GA4 sync as of its last sync: property, date range, rows synced. Checking your GA4 data is flowing into nooticr. |
get_search_console_data | Free | appId? | Search Console clicks, impressions and top queries as of the last sync. Whether people search for what your content is about. |
get_search_performance | Free | app_id, start_date?, end_date?, dimensions?, filters?, compare_to_previous?, ... | Your own site's clicks, impressions, CTR and position in Google Search, live from its connected Search Console. Free. Which queries and pages bring people to your site, and what changed. |
inspect_url | Free | app_id, url, urls? | Whether Google indexed pages of your own site, the canonical it chose and the last crawl. At most 20 per call. Free. A page of yours does not show up in Google. |
get_sitemaps | Free | app_id, url? | Your own site's submitted sitemaps with indexed counts, errors and warnings. Read-only. Free. Whether Google read your sitemap and how much of it is indexed. |
get_page_speed | Free | app_id, url, strategy? | Core Web Vitals for a page of your own site: field data when there is enough, and lab scores. Free. Whether a page of yours is fast enough, and what would make it faster. |
get_posthog_analytics | Free | appId? | Your PostHog pageview trend as of the last sync. Lining a post's date up against traffic to your site. |
list_social_connections | Free | — | Which social accounts your workspace has connected and what each one is allowed to do — read, publish, manage comments — plus which platforms can be connected at all. Publishing happens through an AI employee, when you approve its post in the dashboard, or on its own if you turned on autopilot for publishing for that employee; not from here. Before anything that needs an account linked. |
connect_social_account | Free | platform | A link to open so the user can connect one account. They approve at the provider; no credential passes through this tool. list_social_connections showed the platform is connectable and not yet connected. |
connect_store | Free | platform, shop?, region?, appId? | A link a workspace owner or admin opens to connect an Amazon seller account or a Shopify shop. They approve at the store; no credential passes through this tool. Free. You want your own store's catalogue read and none is connected yet. |
list_store_products | Free | connectionId?, query?, limit?, cursor?, productRef? | Your connected store's own catalogue: title, description, status, price and Amazon listing issues. Read-only. Free. Before changing anything about a listing, or to see what the store currently says. |
Account
Balance and billing. Never billed.
| Tool | Cost | Inputs | What it does |
|---|---|---|---|
nooticr_getting_started | Free | — | Where this account stands (balance, connections, watchlist) and the next calls worth making, with prices. The first call, or whenever you are not sure what to try. |
check_nooticr_credits | Free | — | Balance and billing URL. Before a run of paid calls. |
list_tool_runs | Free | tool?, from?, to?, success?, minCredits?, limit?, before?, scope? | Your tool-call history: what ran, whether it worked, and the credits each call actually took. A balance moved more than expected. |
get_tool_run | Free | id | One run by id, with its full error. Looking closely at one charge from list_tool_runs. |
get_usage_report | Free | days?, from?, to?, scope? | Spend over a window: totals, per tool, per day, recent failures; per seat for a workspace's owners and admins. What did we spend this month, on what, and what failed. |
nooticr_login | Free | — | Re-link the account. A call fails with an authentication error. |
nooticr_settings_read | Free | — | Read your default social platform and result count. Check the research defaults used when you omit those arguments. |
nooticr_settings_update | Free | set | Save your default social platform and result count for research tools. Choose the defaults for future calls that omit those arguments. |
Billing
Usage is prepaid in credits. New accounts start with 20 free credits. Every tool is priced at what it fetches upstream, so a tool that makes two fetches costs both — the table above says which.
| Pack | Price | Credits | Per credit |
|---|---|---|---|
| Starter | $15 | 600 | $0.025 |
| Pro | $40 | 2,000 | $0.020 |
| Scale | $85 | 5,000 | $0.017 |
- Credits do not expire and there is no subscription or recurring charge.
- A call that fails is refunded automatically.
- A call interrupted after it was charged — a deploy, a dropped connection, a timeout — is billed once at most. Retries carry an idempotency key.
- Payment is handled by Stripe. Nooticr never sees or stores card details.
Check the balance any time with check_nooticr_credits. Top up on the dashboard — the MCP surface deliberately offers no purchase of any kind, so nothing in a conversation can sell you credits.
Errors and limits
| You see | Meaning | Do |
|---|---|---|
401 Unauthorized | No valid token | Reconnect the connector, or run nooticr_login |
-32002 insufficient credits | Balance too low for this tool | Top up on the nooticr website, then call the tool again |
available: false | The post has no caption track | Not an error — use analyze_post instead |
| Unsupported URL | Not one of the 10 supported networks | Check the coverage list above |
A 401 carries a WWW-Authenticate header pointing at the protected-resource metadata, so a compliant client can discover the authorization flow without configuration.
Long-running tools stream their result over SSE and can take 20–70 seconds. If the connection drops, the client reconnects with Last-Event-ID and receives what it missed rather than restarting the call.
Support
Email support@nooticr.com for questions, security reports, data requests or account deletion. We respond to privacy requests within 30 days.
- Service status: /health
- OAuth metadata: /.well-known/oauth-authorization-server
- Source: github.com/Nooticr/nooticr-mcp
- Package: @nooticr/mcp