Quarter4
Exports campaign plans as CSV intended for import into Airtable.
Exports plans as ICS calendar files compatible with Apple Calendar.
Uses Google Trends for live top searches by country and supports exporting plans as CSV for Google Sheets or ICS for Google Calendar.
Exports campaign plans as CSV intended for import into Notion.
Searches Openverse for free, commercially usable photos with license and attribution information.
Uses a Pexels API key to fetch studio-quality stock photos for mood and backgrounds.
Uses an Unsplash access key to fetch studio-quality stock photos for mood and backgrounds.
Provides WhatsApp platform specs and cadence guidance, and tracks WhatsApp order clicks on published pages.
Sources free licensed photos from Wikimedia Commons when no stock photo API keys are configured.
Pulls what the world is reading from Wikipedia as a live trend and context signal.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Quarter4I sell sneakers in Lagos, need Black Friday content for IG and WhatsApp"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Quarter4
A marketing engine for creators and sellers, all year round. Tell your AI assistant what you sell in plain words ("i sell sneakers in lagos, need bf content for ig and whatsapp") and Quarter4 gives it what it needs to do the job properly: the dates that matter in your country, what people are searching today, a content plan that fits your product, posts and video scripts, free licensed photos, and a cinematic sales page built around your product.
Works with Claude (Code and Desktop), ChatGPT and Codex, or any MCP client.
What it does
Understands messy requests. start_campaign reads whatever the user typed: platforms like "ig, tik tok, status", places like "Lagos", "the Gulf" or "West Africa", offers like "30 percent off" or "N5k off", deadlines like "ends nov 30". It says what it assumed, asks at most three questions, and never blocks: each question comes with the default it will use.
Knows the calendar, all year. 60+ curated events (Valentine's, Lunar New Year, Ramadan and Eid, Mothering Sunday and Mother's Day, Easter, Father's Day, back to school, Diwali, Black Friday, Christmas and more), computed by rule (Easter, Thanksgiving, Super Saturday) or verified tables (lunar and religious dates, with a note where moon sighting can shift a day). Plus live official public holidays for 100+ countries.
Knows what is happening now. whats_on pulls today's top searches per country (Google Trends), upcoming public holidays (Nager.Date) and what the world is reading (Wikipedia), flags sensitive topics brands must not use, and marks trends that fit the niche.
Fits the business. 15 niche profiles (footwear, fashion, beauty, jewellery, electronics, cars, home, food, fitness, courses, software, digital products, services, kids, general) drive the angles, hooks, shot lists, compliance rules and which events matter. A sneaker shop in Lagos gets Black Friday, Cyber Monday, Christmas and Boxing Day, not Diwali.
Plans like a marketer. Every slot belongs to a campaign phase (tease, warm-up, early access, launch, last chance, thank you). Launch days always get a post. Email and WhatsApp are capped so subscribers do not leave. Remembrance days get no sales content.
Builds pages that do not look generated. An art director picks the structure from the product: cinematic full-bleed scenes for cars and gadgets, a split showcase for fashion and food, a product stage for shoes and beauty, editorial for courses and software. Motion is scroll-linked (pinned scenes, scrubbed zoom, horizontal galleries, text that fills as you scroll). Fonts, navigation, buttons and countdown style vary per brand. Drop in a 3D model (.glb) and the product spins as you scroll; drop in a phone turntable video and scrolling plays it.
Stays honest. No invented reviews, prices, stock counts or results. Real "was" prices only. Countdowns that end. Ad disclosure, AI-image labels, music licensing, finance APR for cars, no cure claims for beauty: built into every brief.
Related MCP server: SuperCMO Skills
Tools
Tool | What it does |
| Start here. Understands the request, ranks the events that matter, says what to post now, prefills the next calls. |
| Holidays, shopping days and observances for any dates and places. |
| Live: today's searches, public holidays (100+ countries), world reading, with safety flags. |
| Day-by-day plan per platform with phase, angle, hook, shot, format and size. |
| Brief for one post, image, carousel, story, video or email, with compliance checklist. |
| Sizes, limits, safe zones and cadence for 10 platforms including WhatsApp. |
| Free, commercially usable photos with licence and attribution; filters logos. |
| Cinematic sales page from your product, photos, video or 3D model. |
| CSV (Sheets, Notion, Airtable), ICS (Google, Apple, Outlook calendar) or Markdown. |
| Puts the page online at |
| Views and WhatsApp order clicks per product. |
| Pro: serve pages on your own domain with automatic HTTPS. |
| Free API key by email, plan status, and Flutterwave upgrade links. |
Skills for Claude Code and Codex: /quarter4:campaign (does everything), /quarter4:plan, /quarter4:posts, /quarter4:visuals, /quarter4:landing, /quarter4:trends.
Install
Claude Code
/plugin marketplace add phestplus/quarter4-mcp
/plugin install quarter4@phestplusThen type /quarter4:campaign and describe your business.
Codex
codex plugin marketplace add phestplus/quarter4-mcpThen install Quarter4 from /plugins.
Claude Desktop, Cursor, Windsurf, any MCP client
{
"mcpServers": {
"quarter4": { "command": "npx", "args": ["-y", "quarter4-mcp"] }
}
}ChatGPT (remote MCP)
ChatGPT connects to MCP servers over HTTPS. Host the HTTP server on any Node host (Render, Railway, Fly.io, a VPS), then add it under Settings → Apps & Connectors → Developer mode → Create, with the URL https://your-host/mcp.
npx -y quarter4-mcp --http --port 3000Health check: GET /health. In HTTP mode the server never writes files.
Publish and measure (Quarter4 Cloud)
publish_page puts a page online in seconds and returns a link like https://q4-korakicks.erasstack.com/black-friday. page_stats shows views and WhatsApp order clicks per product.
Get a free key by asking your assistant to run cloud_account with your email, then add it to your MCP config:
"env": { "QUARTER4_API_KEY": "q4_..." }Plan | Price | Includes |
Free | ₦0 | 1 site, 3 live pages, 7-day analytics, small badge |
Pro | ₦9,900 or $9 a month | Your own domain, no badge, 100 pages, 12-month analytics |
Business | ₦39,000 or $39 a month | 10 brands, 10 custom domains |
Payments are handled by Flutterwave's secure checkout. Pricing: https://q4.erasstack.com
Better photos (optional, free)
Without keys, photos come from Wikimedia Commons and Openverse: free and licensed, but mixed quality. For studio-quality stock photos, get a free key and set it in your MCP config's env:
PEXELS_API_KEYfrom https://www.pexels.com/api/UNSPLASH_ACCESS_KEYfrom https://unsplash.com/developers
Stock photos are for mood and backgrounds. Show your own photos for the product you sell.
Accuracy and limits
Rule-based dates are tested across years. Lunar and religious dates use verified tables for 2026 to 2028; later years are left out, not guessed. Moon-sighted dates carry a note.
Live sources can be slow or down; every tool still answers and reports which source failed.
Platform specs carry a
lastRevieweddate; platforms change limits often.Shipping cutoffs are approximate. Compliance notes are guidance, not legal advice.
3D pages need WebGL2 (all current browsers); older devices see the product photo instead.
Development
npm install
npm test # 50 tests: dates, places, niches, plans, cadence, pages, MCP over stdio and HTTP
npm run build # bundles dist/server.mjs (used by the plugins, no install needed)
npm start # stdio
npm run start:httpLicense
MIT © phestplus
Available Tools
13 toolsasset_briefContent asset briefARead-only
Create a production brief for one post, image, carousel, story, video or email: exact specs, hook formulas, structure, image-generation prompt with the right size per tool (Midjourney, GPT Image, Imagen, Flux), video beat sheet and shot list, and a compliance checklist (ad disclosure, pricing, giveaways, AI labels, music).
| Name | Required | Description | Default |
|---|---|---|---|
| tone | No | ||
| brand | Yes | ||
| niche | No | What they sell, in their words; tailors hooks, shots and compliance | |
| offer | No | ||
| phase | No | ||
| format | No | Platform format id from platform_specs, e.g. "reel", "carousel" | |
| eventId | No | Event id or name, e.g. "black-friday", "valentines", "eid" | |
| product | No | ||
| giveaway | No | ||
| platform | Yes | Any spelling: instagram/ig, tiktok, whatsapp, email... | |
| assetType | Yes | ||
| sponsored | No | Paid partnership, gifted or affiliate | |
| aiGenerated | No | Asset will use AI-generated imagery/video | |
| videoSeconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, and nothing in the description contradicts that — it frames the tool as generating a brief, not mutating state. The description goes well beyond annotations by disclosing the actual deliverable contents: specs, hook formulas, per-tool image prompt sizes, beat sheet, and a compliance checklist. It could still say whether the brief is returned inline only or persisted.
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 front-loaded sentence with the verb and scope first, followed by the output enumeration. The list is long but each item conveys distinct deliverable value rather than repeating the schema, so it earns most of its length; a bulleted or clause-split structure would read slightly better.
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 no output schema, the description carries the burden of explaining what comes back, and it does that thoroughly. The 3 required parameters are self-evident from the schema; the gap is guidance on which of the 11 optional parameters actually change the brief's content, which the description leaves unstated.
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 43%, below the 50% threshold, so the description is expected to compensate for the 14 parameters. It only indirectly maps to inputs — compliance checklist implies sponsored/giveaway/aiGenerated, per-tool sizing implies platform/format, beat sheet implies videoSeconds — but it never states these explicitly, leaving tone, offer, phase, eventId, product and niche unexplained outside 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?
Specific verb ('Create a production brief') plus a precisely scoped resource ('for one post, image, carousel, story, video or email'), with an enumeration of what the brief contains. It is clear what the tool produces, but it never names or contrasts sibling tools such as content_plan or platform_specs, so differentiation is left to inference.
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 phrase 'for one post, image, carousel, story, video or email' implicitly scopes this to a single asset, which hints at a plan-vs-asset split with content_plan. However, there is no explicit when-to-use, when-not-to-use, or prerequisite statement, and no alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloud_accountQuarter4 account and plansA
Quarter4 Cloud account. action "signup" emails a free API key to the given email. "status" shows plan, limits and published sites. "upgrade" returns a secure Flutterwave checkout link for Pro (NGN 9,900 or USD 9 a month) or Business (NGN 39,000 or USD 39 a month). Never ask for card details in chat; always send the link.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | No | ||
| No | |||
| action | Yes | ||
| currency | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is rich in behavioral details beyond annotations, such as specifying that 'signup' emails a key, 'status' returns limits, and 'upgrade' returns a 'secure Flutterwave checkout link.' This defines the outcome of the function calls.
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 highly structured, progressing logically from tool identification to individual action details and ending with behavioral constraints, ensuring every word adds value.
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 lacking an output schema, the description is complete for a complex tool. It specifies the result type for every relevant action (API key, plan details, or checkout link), allowing the agent to anticipate outcomes.
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?
Given that schema coverage is 0%, the description is crucial. It explicitly defines the function of the 'action' enum values (signup, status, upgrade) and specifies the associated parameters (e.g., 'signup' requires an email).
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 tool clearly identifies itself as the 'Cloud account' manager. Although its purpose is well-defined, it does not explicitly compare its scope to the many content-focused siblings (e.g., page_stats or start_campaign), which would have achieved a 5.
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 provides explicit conditional usage instructions for 'upgrade' (returning a link, not taking payment) and a vital security constraint ('Never ask for card details in chat'). This is exceptionally helpful for guiding agent behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connect_domainConnect your own domainA
Pro: serve published pages on the user's own domain (e.g. sale.korakicks.com) with automatic HTTPS. Returns the one DNS record to add. Call again with check: true to see if it is live.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | Which brand site, if more than one | |
| check | No | ||
| hostname | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-readonly, open-world, non-destructive operation, and the description adds real value on top: it returns exactly one DNS record, HTTPS is provisioned automatically, and the check flag polls liveness. It does not say what happens on verification failure, whether repeated calls without check create duplicates, or whether the Pro gate causes an error — modest gaps for a mutation 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?
Three short sentences, front-loaded with the outcome, then the return value, then the follow-up call pattern. Every clause carries information: the 'Pro' tier flag, the HTTPS behavior, the single DNS record, and the liveness check.
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 3-parameter, no-output-schema tool, the description covers purpose, return value (one DNS record), and the second-call verification flow. It is close to complete; only error and idempotency behavior on repeat calls is unaddressed.
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 only 33%: 'site' is documented in the schema, 'check' is explained only in the description, and 'hostname' has no textual description in either place beyond a minLength constraint and the 'sale.korakicks.com' example. The description partly compensates by illustrating hostname format and check semantics, but multi-site selection ('site') is left entirely to 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?
The description names a specific outcome (serving published pages on the user's own domain with automatic HTTPS) and gives a concrete example hostname, so the agent knows exactly what the tool accomplishes. It does not reference any sibling tool (e.g. publish_page) to differentiate, but the purpose itself is unambiguous.
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 second call pattern is spelled out explicitly: 'Call again with check: true to see if it is live,' which is genuine when-to-use guidance for the two-phase workflow. It also implicitly scopes this to published pages and a paid tier ('Pro'). What is missing is any prerequisite or exclusion, such as domain ownership verification or what to do if the record never goes live.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
content_planBuild a content planARead-only
Generate a day-by-day content calendar per platform for the coming weeks. Niche-aware (angles, hooks and shots fit the product), audience-aware (events ranked by relevance to the regions) and cadence-aware (email and WhatsApp capped to avoid unsubscribes). Each slot is tied to a campaign phase (tease, warm-up, early-access, launch, last-chance, thank-you) for the most important upcoming event, or an evergreen pillar on quiet days. Observances like Remembrance Day get no-sales guidance. Returns slots you then fill with captions and assets.
| Name | Required | Description | Default |
|---|---|---|---|
| brand | Yes | ||
| niche | Yes | What they sell, in their words, e.g. "sneakers in Lagos", "online fitness coaching" | |
| offer | No | Written any way: "30% off", "N5k off", "BOGO", "free delivery" | |
| format | No | Default json | |
| endDate | No | Default 60 days from start | |
| product | No | ||
| regions | No | Countries, cities or codes, e.g. "Nigeria", "Lagos", "US", "UK", "worldwide" | |
| platforms | Yes | Platforms, any spelling: instagram, tiktok, youtube, linkedin, x, facebook, pinterest, threads, whatsapp, email (also "ig", "tik tok", "newsletter", "status") | |
| startDate | No | Default today | |
| focusEvents | No | Events to campaign around, ids or names ("black friday", "eid", "valentines") | |
| postsPerWeek | No | Per platform; default 4 | |
| sellsProducts | No | false for creators who only publish content; default true |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, and the description adds substantial behavior beyond that: cadence caps on email and WhatsApp to avoid unsubscribes, campaign-phase assignment tied to the most important upcoming event, evergreen fallback on quiet days, and no-sales guidance on observances like Remembrance Day. These are real generation rules an agent could not infer from structured data.
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 sentences, front-loaded with what is generated, then the awareness dimensions, then phase logic, then the return. Dense but every sentence carries information; the parenthetical phase list is long but useful enumeration.
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 12-parameter tool with no output schema, the description covers the generation logic and explicitly describes what comes back (slots to fill with captions and assets). Defaults for startDate/endDate/postsPerWeek/format are left entirely to the schema, which is acceptable given 83% coverage but a small gap.
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 83%, so baseline is 3, but the description adds meaning: 'regions' drives event relevance ranking, 'platforms' interacts with cadence caps, and 'niche' shapes angles, hooks and shots. It does not clarify offer, format or postsPerWeek semantics beyond the schema, 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?
Specific verb plus resource: 'Generate a day-by-day content calendar per platform for the coming weeks.' It is immediately distinguishable from siblings like event_calendar (event lookup) and asset_brief (asset creation) because it explicitly positions the output as slots to be filled later.
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?
Clear context: use it to plan posts across platforms, and the closing line 'Returns slots you then fill with captions and assets' routes the agent to a downstream tool. There are no explicit exclusions or named alternatives (e.g., when to prefer event_calendar first), 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.
event_calendarHoliday, shopping and events calendarARead-only
List holidays, shopping days, religious and cultural events and observances for any date range and region, with exact dates, days until each, when to start promoting, content angles and hashtags. Defaults to the next 90 days. Use this before planning any campaign.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End date inclusive; default 90 days from start | |
| from | No | Start date inclusive; default today | |
| year | No | Season year; default current year | |
| regions | No | Countries, cities or codes, e.g. "Nigeria", "Lagos", "US", "UK", "worldwide" | |
| minImpact | No | ||
| categories | No | ||
| includePast | No | Include events that already ended; default false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and openWorldHint=false, so safety is covered; the description adds real value by disclosing the default window (next 90 days) and the shape of what comes back, including derived fields like 'days until' and hashtags. It does not mention rate limits or result-set size caps, which keeps 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?
Two sentences, both dense with information, and the core capability plus return contents lead before the usage nudge. No filler or redundant restatement of the name.
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 no output schema, the description usefully describes what each result contains and states the default range, which is enough to call it correctly with zero required parameters. Minor gap: it never explains how minImpact or categories affect results, though the enums are self-evident.
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 71%, so most parameters are already documented in the schema (from/to/year/regions/includePast all have descriptions). The description reinforces the date-range and default behavior but adds nothing about minImpact or categories, leaving it at the baseline for this coverage level.
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 ('List holidays, shopping days, religious and cultural events') with scope ('any date range and region') and even enumerates the returned fields (dates, days until, promotion timing, content angles, hashtags). An agent knows exactly what this tool produces 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 explicit timing guidance ('Use this before planning any campaign'), which positions it ahead of siblings like content_plan and start_campaign. It stops short of naming those alternatives or stating when-not to use it, so it is clear context rather than full routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_planExport content planA
Export a content plan from content_plan as CSV (Google Sheets, Notion, Airtable), ICS (Google/Apple/Outlook calendar) or Markdown. Pass the same arguments you used for content_plan.
| Name | Required | Description | Default |
|---|---|---|---|
| as | Yes | ||
| brand | Yes | ||
| niche | Yes | ||
| offer | No | ||
| endDate | No | ||
| product | No | ||
| regions | No | Countries, cities or codes, e.g. "Nigeria", "Lagos", "US", "UK", "worldwide" | |
| platforms | Yes | Platforms, any spelling: instagram, tiktok, youtube, linkedin, x, facebook, pinterest, threads, whatsapp, email (also "ig", "tik tok", "newsletter", "status") | |
| startDate | No | ||
| outputPath | No | Local mode only: write the file here | |
| focusEvents | No | ||
| postsPerWeek | No | ||
| sellsProducts | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, destructiveHint=false, openWorldHint=false, so the agent knows this produces output rather than reading state. The description adds the format-to-destination mapping (Sheets/Notion/Airtable, calendar apps), but never says whether the result is returned inline or written to disk, or what outputPath/local mode means behaviorally.
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?
Two short sentences, front-loaded with the verb and resource, then the formats, then the invocation hint. Nothing is redundant and no sentence 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 13-parameter, non-read-only tool with no output schema, the definition covers purpose and invocation but leaves the delivery mechanism (inline payload vs. file, role of outputPath) and most optional parameters unexplained. Adequate to call, not adequate to predict the result.
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 only 23% across 13 parameters, so the description must compensate. The format list maps cleanly onto the `as` enum and the 'same arguments as content_plan' line helpfully delegates semantics for the shared parameters, but the remaining nine parameters (offer, product, dates, postsPerWeek, focusEvents, outputPath) get no clarification.
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 (Export) and resource (a content plan from content_plan) plus the three output formats and their target integrations. An agent can distinguish it from the sibling content_plan, which generates rather than exports, though the description never says so explicitly.
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?
"Pass the same arguments you used for content_plan" is a concrete, non-obvious invocation instruction that tells the agent exactly how to prepare the call. It gives clear context but names no exclusions or when-not conditions (e.g., what to do if no plan exists yet).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_imagesFind free, licensed photosARead-only
Search commercially usable photos for pages and posts. Uses Pexels or Unsplash when PEXELS_API_KEY or UNSPLASH_ACCESS_KEY is set (best quality), otherwise Wikimedia Commons and Openverse. Each result has its licence, author and an attribution line. Photos that likely show other brands' logos are removed by default. Use stock photos for mood and backgrounds; the product itself should be the seller's own photo.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| query | Yes | Describe the scene, e.g. "sneakers on wet street at night" | |
| allowBrands | No | ||
| orientation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond readOnlyHint/openWorldHint: conditional provider selection driven by environment keys, result contents (licence, author, attribution line), and a default filter that removes photos likely showing other brands' logos. These are non-obvious operational traits an agent could not infer from annotations or schema.
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 front-loaded sentences covering purpose, sourcing, result shape and usage advice; the sourcing/provider detail is dense but each sentence carries distinct information. Minor editorial advice is the only borderline filler.
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 no output schema, the description usefully discloses result fields (licence, author, attribution), so return shape is covered. Pagination/count limits and orientation semantics remain unaddressed, a small gap for a 4-parameter tool.
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 only 25%, so the description must compensate — and it partially does by implying allowBrands ("removed by default") and the intent of query (scene description). However, count and orientation are undocumented in both places, leaving the compensation incomplete.
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 ("Search commercially usable photos for pages and posts") and the licensing scope, which no sibling tool touches. An agent can immediately tell this is an image-sourcing tool rather than a publishing or planning tool.
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 usage context: stock photos for mood and backgrounds, while the product should be the seller's own photo. It also explains provider fallback conditions (PEXELS_API_KEY / UNSPLASH_ACCESS_KEY set). No explicit when-not or sibling alternative is named, but there is no competing sibling to route to.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
landing_pageSales landing pageA
Generate a premium, ready-to-deploy sales page (one HTML file) built around what the user sells. Works from minimal input (brand + product): the copy is written from the facts given and never invents reviews, guarantees or prices. An art director picks the page structure from the niche: cinematic full-bleed scenes for cars, gadgets and fitness; a split showcase (sticky photos beside scrolling story) for fashion, home, food and services; a product stage (product spins and zooms with scroll, stickers pop) for shoes, beauty, jewellery and kids; editorial for courses, software and digital products. Motion is scroll-linked (pinned scenes, scrubbed zoom, horizontal galleries, text that fills as you scroll), not timed fades. Fonts, navigation, buttons and countdown style vary per brand (re-roll with variant). Media: pass the seller's own photos (images, productImage), a turntable video (videoUrl, scrubbed by scroll) or a 3D model (modelUrl, .glb, rotates with scroll and can be dragged). With no media, free mood photos are fetched automatically (autoImages). A holiday theme (black-friday, cyber-monday, christmas, diwali, hanukkah, halloween, thanksgiving, boxing-day, new-year, default) adds its palette and name; with layout "signature" and no product, the art-directed holiday scenes are used instead. Includes an honest countdown, sticky mobile CTA, SEO/Open Graph tags, Product/Offer structured data and photo credits. Deploy to Netlify Drop, Vercel, GitHub Pages or Cloudflare Pages.
| Name | Required | Description | Default |
|---|---|---|---|
| faq | No | ||
| brand | Yes | ||
| niche | No | Optional extra context about the business, in the user's words | |
| offer | No | e.g. "40% off everything" | |
| price | No | ||
| terms | No | ||
| theme | No | Holiday accent | |
| ctaUrl | No | Checkout, WhatsApp (https://wa.me/...) or product link. If omitted the button links to "#" | |
| images | No | Photos, best first. Use the seller's own product photos when possible | |
| layout | No | Default: director when the product is known; "signature" forces the holiday scene | |
| ctaText | No | ||
| effects | No | false turns off particles and 3D motion | |
| pageUrl | No | ||
| product | No | What is on sale, in plain words: "sneakers", "ankara dresses", "used cars", "online course" | |
| variant | No | Re-roll fonts, nav, buttons and countdown style | |
| currency | No | ||
| deadline | No | ISO 8601 with offset, e.g. 2026-11-30T23:59:00-05:00 | |
| features | No | ||
| headline | No | ||
| imageAlt | No | ||
| imageUrl | No | ||
| modelUrl | No | 3D model (.glb); rotates with scroll | |
| products | No | Items on sale; shown as a product grid. With a WhatsApp ctaUrl each card opens a prefilled order chat | |
| timeZone | No | IANA zone for the printed deadline, e.g. Africa/Lagos | |
| videoUrl | No | Short turntable/walkaround video (mp4); scroll scrubs through it | |
| archetype | No | Override the art director | |
| eventName | No | Event label when no theme fits, e.g. "Eid", "Mother's Day" | |
| autoImages | No | Fetch free mood photos when no media is given (default true) | |
| brandColor | No | ||
| outputPath | No | Local mode only: write the HTML here (.html) | |
| subheadline | No | ||
| productImage | No | Product photo, ideally a cut-out PNG on transparent background | |
| testimonials | No | Real customer quotes only, with permission | |
| originalPrice | No | Only a price you actually charged recently | |
| discountPercent | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavioral context beyond the annotations: copy is written only from given facts and never invents reviews, guarantees or prices; the countdown is honest; motion is scroll-linked not timed fades; mood photos are fetched from the network. With readOnlyHint=false and openWorldHint=true already declared, this is meaningful added context. It stops short of saying where the generated file lands or what the call returns (path vs URL).
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 promise, then organized into coherent blocks (art direction, media, holiday theme, output contents). Dense and mostly waste-free for a 35-parameter tool, though the niche-to-archetype catalog runs long and could be tightened.
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 complex 35-param generator with no output schema, the description covers the deliverable well: a single HTML file with sticky mobile CTA, SEO/Open Graph tags, Product/Offer structured data and photo credits. The notable omission is the return contract — no statement of whether the call returns HTML, a path, or a hosted URL — which matters precisely because there is no output schema to fall back on.
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 60% schema coverage across 35 parameters, the description does substantive work: it explains what images/productImage/videoUrl/modelUrl/autoImages do and how they interact, that archetype is an art-director override mapped to niche categories, and what layout "signature" changes. Still, roughly a third of parameters (outputPath, pageUrl, ctaText, discountPercent, features, faq, testimonials interplay) get no prose semantics, so it does not fully close 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?
Opens with a specific verb+resource+artifact: "Generate a premium, ready-to-deploy sales page (one HTML file) built around what the user sells." That is unmistakable. It loses the top mark only because the closing line ("Deploy to Netlify Drop, Vercel, GitHub Pages...") sits near sibling publish_page and can read as if this tool deploys, without stating the boundary.
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 situational rules: works from minimal input (brand + product), no media means autoImages fetches free mood photos, holiday theme plus layout "signature" forces the art-directed holiday scene, variant re-rolls styling. These are conditional how-to-use cues rather than when-to-use-this-vs-sibling guidance, and no exclusion against publish_page is offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page_statsPage resultsARead-only
Views, WhatsApp order clicks and button clicks for published pages, broken down per product (e.g. "Runner One: 48 WhatsApp clicks"). Use it to tell the user what is selling and what to push next.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Look-back window, default 30 (free plan keeps 7) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds real behavioral context — results are restricted to published pages, are broken down per product, and the inline example shows the shape of the returned data. It does not mention the look-back window behavior, plan-based retention, or pagination limits, so it stops short of rich disclosure.
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?
Two sentences, front-loaded with the concrete output content before the recommendation for use. The inline example ('Runner One: 48 WhatsApp clicks') earns its place by conveying output shape compactly.
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, single-optional-parameter tool with no output schema, the description conveys enough: what is measured, the scope of pages, the per-product breakdown and an output example. Only minor gaps remain, such as the time-window default and plan retention, which the schema already covers.
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% and the single `days` parameter already documents its default of 30 and the 7-day free-plan cap, so the schema carries the parameter burden. The description adds nothing about the time window, which is acceptable at this coverage level but limits the score to baseline.
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?
Names the specific metrics (views, WhatsApp order clicks, button clicks), the scope (published pages) and the granularity (per product), which is far more informative than the title 'Page results'. It does not name or differentiate against any sibling tool, though none of the listed siblings is a competing analytics tool, so the practical risk of confusion is low.
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 second sentence gives a concrete use case — tell the user what is selling and what to push next — which sets clear context for when an agent should reach for this tool. There are no exclusions or named alternatives, but there is no obvious competing tool to redirect to.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
platform_specsPlatform content specsARead-only
Image/video sizes, aspect ratios, length limits, caption limits, safe zones, posting cadence and tips for Instagram, TikTok, YouTube, LinkedIn, X, Facebook, Pinterest, Threads, WhatsApp and email.
| Name | Required | Description | Default |
|---|---|---|---|
| platforms | No | Default: all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered and the bar is lower. The description adds useful context about breadth of coverage (eleven platforms plus email), but says nothing about the shape of the response or whether it is a static bundled reference versus a live fetch.
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 sentence with no filler, and the substance is front-loaded in the opening list of spec categories. The trailing platform enumeration is long but each item earns its place by defining coverage boundaries.
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 one-optional-parameter read-only lookup with no output schema, the description is close to sufficient: the enumeration effectively describes the returned content, and annotations cover safety. The only gaps are the return format and the behavior of the platforms filter, both minor for a static reference tool.
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 carries the single optional parameter; the description adds nothing about the platforms filter, which accepts either a string or an array and defaults to all. Baseline 3 applies when the schema does the heavy lifting, and here the description contributes no extra parameter meaning.
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 enumerates exactly what the tool returns (image/video sizes, aspect ratios, length limits, caption limits, safe zones, cadence, tips) and for which platforms, so an agent can immediately tell this is a static reference lookup. It lacks an explicit verb, but the resource and scope are specific and no sibling covers this ground.
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?
Usage is only implied by the content enumeration: an agent infers it should call this when it needs platform constraints. There is no explicit 'use when' statement, no mention of when not to call it, and no reference to any sibling such as content_plan or asset_brief that might also touch platform requirements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_pagePublish a page onlineA
Put a sales page online and get a shareable link, e.g. https://q4-korakicks.erasstack.com/black-friday. Pass the HTML from landing_page, a local file path (local mode), or "page" with landing_page arguments to build and publish in one step. Free plan: 1 site, 3 live pages, small badge. Pro adds the user's own domain and removes the badge. Needs QUARTER4_API_KEY (get one free with cloud_account action "signup").
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | Local mode: path to an .html file | |
| html | No | ||
| page | No | landing_page arguments to build and publish in one call | |
| path | No | Page path, e.g. "black-friday"; empty for the home page | |
| brand | Yes | Brand name; becomes the address q4-<brand>.erasstack.com | |
| title | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (not read-only, open-world, non-destructive); the description adds what the annotations cannot — that output becomes publicly reachable at a shareable URL, what the resulting address looks like, plan quotas enforced, badge injection on Free, and the authentication requirement with a self-service path to obtain the key.
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 tightly packed sentences with the core action and example URL front-loaded, followed by input modes and then constraints/auth. Dense but every clause carries information; the plan/badge sentence could arguably be trimmed but is load-bearing for expectations.
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 publishing mutation with no output schema, the description still discloses the return artifact (shareable link) and the shape of that link, plus quotas and auth. Minor gaps: behavior on republish to an existing path, and the 'title' parameter, are not addressed.
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 fills key gaps: it explains html's origin ('from landing_page'), the file param's local-mode semantics, the nested 'page' object's purpose, and implies brand→subdomain and path→URL segment via the example link. Only 'title' remains unaddressed in both description and 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 ('Put a sales page online and get a shareable link') and immediately clarifies the relationship with the sibling landing_page ('Pass the HTML from landing_page ... or "page" with landing_page arguments to build and publish in one step'). An agent can distinguish build-only from build-and-publish 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?
Enumerates the three concrete invocation modes (raw html, local file path in local mode, nested 'page' object for one-step build+publish), states the plan-based differences (Free: 1 site/3 pages/badge; Pro: own domain, no badge), and names the prerequisite action (QUARTER4_API_KEY via cloud_account 'signup').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_campaignStart here: understand the requestARead-only
Call this FIRST with whatever the user wrote, even if vague or misspelled ("i sell sneakers in lagos, need bf content for ig"). Returns what was understood (niche, product, platforms, regions, currency, offer, deadline), the assumptions made, at most 3 blocking questions, the events that matter for this audience ranked by relevance, what to post right now, compliance notes for the niche, the landing page direction, and prefilled arguments for the next tool calls. Questions are never blocking: ask them in one short message and continue with the defaults shown.
| Name | Required | Description | Default |
|---|---|---|---|
| brand | No | ||
| offer | No | ||
| product | No | ||
| regions | No | Countries, cities or codes, e.g. "Nigeria", "Lagos", "US", "UK", "worldwide" | |
| deadline | No | Any form: "Nov 30", "30/11", "black friday" | |
| platforms | No | Platforms, any spelling: instagram, tiktok, youtube, linkedin, x, facebook, pinterest, threads, whatsapp, email (also "ig", "tik tok", "newsletter", "status") | |
| description | Yes | The user's request in their own words |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, and the description is consistent with a pure-analysis tool. It adds genuinely useful behavior beyond the annotations: it surfaces assumptions, caps blocking questions at 3, never blocks on them, and hands off prefilled arguments — all things the annotations cannot express. Minor gap: it never says whether anything is persisted or how large the prefilled payload is.
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 imperative 'Call this FIRST' is front-loaded, and every clause maps to a real output or rule rather than filler. The single long enumeration sentence is dense but each listed artifact is distinct; it could be split for scanability, which keeps it off 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?
With no output schema, the description carries the return-value burden and does so by enumerating the response sections, and it clarifies downstream handoff via prefilled arguments for the next tools. Slightly short of complete because the 'events that matter for this audience' and 'compliance notes' are not given scope or size, and the handoff format is unspecified.
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 only 57%, and the description compensates by naming the semantic dimensions it extracts (niche, product, platforms, regions, currency, offer, deadline) and by noting that platforms and regions are accepted in any spelling or format. The fuzzy-tolerance rule is information the schema, whose platform descriptions list aliases but not the tolerance guarantee, does not fully convey.
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 role — an intake/parse step that takes the user's raw request and returns a structured understanding plus routing artifacts. It enumerates exactly what comes back (niche, platforms, regions, events, compliance, landing page direction, prefilled args for next tools), which makes it unmistakable against siblings like event_calendar or content_plan.
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?
"Call this FIRST with whatever the user wrote, even if vague or misspelled" is an explicit ordering constraint plus an input-quality rule, and the example phrase removes any doubt about what to pass. It also resolves the follow-up behavior: questions are never blocking, so the agent knows to ask at most 3 and continue with defaults rather than halt.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whats_onWhat's happening nowARead-only
Live data for content ideas: today's top searches per country (Google Trends), official public holidays coming up (100+ countries), and what the world is reading (Wikipedia). Flags sensitive topics that brands must not use for promotion and marks trends that fit the niche. Use it to make posts timely, plan around public holidays, and spot trends worth a quick story or reel.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Holiday look-ahead in days (default 60) | |
| niche | No | What they sell, to mark trends that fit | |
| places | Yes | Countries, cities or continents, e.g. "Nigeria, UK", "West Africa", "Dubai" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds genuine behavioral value beyond that: it flags sensitive topics brands must not use and marks trends matching the niche, which tells the agent what the output does. It says nothing about freshness, rate limits, or result volume, 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?
It is a single front-loaded paragraph that leads with the data sources and ends with use cases — no filler. The three-part enumeration is slightly dense but each clause carries 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?
With only 3 params, no output schema, and no nested objects, the description does the needed work by enumerating the three data categories returned and what the flags mean. It leaves the response shape and the interplay between 'days' and the trend data unstated, which is a modest gap for a read-only aggregation tool.
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 all three parameters are already documented in the schema, including that 'places' accepts countries/cities/continents and that 'niche' marks fitting trends. The description largely restates those semantics ('per country', '100+ countries', 'fit the niche') rather than adding new meaning, 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 names three concrete data sources (Google Trends top searches per country, public holidays, Wikipedia reading) and the framing 'live data for content ideas'. That is far more specific than a tautology, but it never contrasts itself with the obvious sibling event_calendar or content_plan, so an agent must infer the boundary.
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 clear use contexts: 'make posts timely, plan around public holidays, and spot trends worth a quick story or reel'. There are no when-not-to-use conditions and no named alternatives, which keeps it below 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.
13 tool updates
v0.3.0- First observed
asset_brief - First observed
cloud_account - First observed
connect_domain - First observed
content_plan - First observed
event_calendar - First observed
export_plan - First observed
find_images - First observed
landing_page - First observed
page_stats - First observed
platform_specs - First observed
publish_page - First observed
start_campaign - First observed
whats_on
TDQS
Scored across 13 tools
Each tool has a distinct role in the campaign pipeline (discover → plan → brief → build → publish), and descriptions clearly separate them. The only real overlaps are event_calendar vs. whats_on for holidays/events and landing_page vs. publish_page's 'page' one-step mode, both of which are clarified in the descriptions.
All names are lowercase snake_case and immediately readable. There is a mild split between verb_noun names (start_campaign, find_images, publish_page, connect_domain) and noun_noun names (event_calendar, content_plan, platform_specs, page_stats), which is a minor stylistic deviation rather than a real inconsistency.
13 tools is squarely in the well-scoped range, and each one maps to a distinct stage of the workflow. cloud_account bundles signup/status/upgrade as actions rather than inflating the count with three separate tools, which is the right call.
The surface covers discovery, planning, exporting, asset briefing, imagery, page building, deployment, domains and basic analytics — a full lifecycle for a marketing/publishing assistant. The main gap is page management: there is no tool to list, update, unpublish or delete published pages, only publish_page and read-only page_stats.
Maintenance
Related MCP Connectors
On-brand AI image and video campaigns with persistent characters and products, from any MCP client.
1Drive your AutoWhisper AI CMO to generate and publish marketing content from any MCP client.
An MCP for marketers that gives agents tools for SEO, AEO, socials and ads data. Generous free tier; works in Claude, ChatGPT, Cursor and other MCP clients.
Hosted MCP server for marketing agencies: connect Google Ads, GA4, Search Console, Meta, LinkedIn and more to Claude or ChatGPT. Pull reports and make changes via OAuth login, no setup.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI clients to compose and execute marketing campaigns by mapping free-form intent to a deterministic plan of over 1,000 production-tested skills, supporting multiple workflows across paid ads, SEO, content, and more.MIT

SuperCMO Skillsofficial
AlicenseAqualityBmaintenanceOpen-source skills that empower any AI agent (Claude, Cursor, Codex, Hermes, etc.) to generate end-to-end marketing campaigns — UGC videos, ad videos, product photography and more. From a product photo and a brief it casts AI actors, picks the best models, and edits finished assets of any length with consistent actor and product. It also researches competitors, publishes, and reviews performance.22142 npm164 PyPI248Apache 2.0- FlicenseNot gradedqualityBmaintenanceEnables to plan, write, illustrate, and voice a full marketing campaign through an MCP pipeline that generates copy, moodboards, voiceovers, and images with automated guardrails and budget controls.-

PaidSync MCPofficial
AlicenseNot gradedqualityBmaintenanceEnables AI assistants to create, manage, and optimize advertising campaigns across 14 ad and measurement platforms through a single MCP endpoint, with over 530 executable tools.4MIT