niceapps-creative-studio
It is an MCP server that helps plan, critique, and QA App Store screenshots without generating final artwork.
Catalog research: Search niceapps.club apps (
search_apps), get app details (get_app), and retrieve reviewed screenshot sets (get_screenshot_set).Frame-level reference retrieval: Search curated screenshot patterns by communication job, visual style, composition, device treatment, and category (
search_screenshots).Visual reference board: Fetch selected screenshots as a single comparison image for visual inspection (
get_reference_board).App Store context import: Load public App Store metadata and current screenshots from a URL or Apple ID (
import_app_store).Creative direction memory: Record rejected directions and which visual axes to avoid/preserve (
record_direction_feedback).Replacement preview comparison: Compare 2–4 preview images against a rejected direction to ensure material differences (
compare_direction_previews).Copy preflight: Measure localized screenshot copy against target dimensions/typography and detect collisions (
validate_screenshot_copy).Screenshot set QA: Validate export files for dimensions, format, opacity, readable image data, and sequence naming (
validate_screenshot_set).Evidence-based briefing: Produce normalized product briefs, positioning, ordered screenshot story, copy drafts, source-screen needs, and art-direction guidance.
Honest limitations: It does not generate finished artwork, certify visual quality, or predict conversion performance.
Provides tools for importing public App Store metadata and screenshots to analyze an app and plan App Store screenshot stories, messaging, and art-direction briefs.
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., "@niceapps-creative-studioPlan a 5-frame App Store screenshot story with references and art direction."
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.
Niceapps Creative Studio
Turn App Store inspiration into an evidence-backed screenshot brief.
Install · How it works · Tools · Limitations
Niceapps Creative Studio is an analysis-first MCP server for developers preparing App Store screenshots. It studies your app alongside human-reviewed campaigns from niceapps.club, then helps an AI agent produce a clearer story, stronger copy, and a concrete art-direction brief.
It does not generate finished marketing artwork. The first public version is deliberately focused on the part it can do reliably: research, reasoning, critique, and measurable QA.
Why this exists
“Make screenshots like this app” is a weak creative brief. It encourages imitation, generic templates, and unexplained design choices.
Creative Studio gives the agent better evidence:
relevant screenshot references, selected at frame level rather than by category alone;
the actual reference images in a visual comparison board;
an explanation of why each reference is useful;
a screen-by-screen narrative, copy, and source-screen plan;
art direction described as hierarchy, crop, material, typography, composition, and image-making method;
memory for rejected directions so the next proposal changes meaningfully;
copy-fit and export checks that remain separate from subjective design review.
Related MCP server: Cold Email & Outreach MCP Server
Install
Requires Node.js 20 or newer and any MCP-compatible client.
OpenAI Codex
codex mcp add niceapps-creative-studio -- npx -y niceapps-creative-studio@latestOr install the Codex plugin to load both the MCP server and the screenshot-planning skill:
codex plugin marketplace add ilyastorunn/niceapps-creative-studio --ref main
codex plugin add niceapps-creative-studio@niceappsClaude Code
claude mcp add --scope user niceapps-creative-studio -- npx -y niceapps-creative-studio@latestClaude Desktop, Cursor, and Windsurf
Add this server to your client's MCP JSON configuration:
{
"mcpServers": {
"niceapps-creative-studio": {
"command": "npx",
"args": ["-y", "niceapps-creative-studio@latest"]
}
}
}Common configuration locations:
Client | Configuration |
Claude Desktop |
|
Cursor |
|
Windsurf |
|
On Windows, use "command": "cmd" and begin the arguments with "/c", "npx".
VS Code
Add .vscode/mcp.json to a workspace, or use the corresponding user-level MCP configuration:
{
"servers": {
"niceapps-creative-studio": {
"type": "stdio",
"command": "npx",
"args": ["-y", "niceapps-creative-studio@latest"]
}
}
}Gemini CLI
Add the server to ~/.gemini/settings.json:
{
"mcpServers": {
"niceapps-creative-studio": {
"command": "npx",
"args": ["-y", "niceapps-creative-studio@latest"]
}
}
}Any stdio MCP client
Run the package through npx and configure the client to communicate over standard input/output:
npx -y niceapps-creative-studio@latestThe server writes protocol messages to stdout, so launching it directly may appear to do nothing. That is expected; normally an MCP client starts and controls the process.
Restart the client or begin a new conversation after installation so it discovers the tools.
Try it
Give the agent an App Store URL, product brief, or a set of current screenshots:
Analyze this app and plan a five-frame App Store screenshot story. Find visually and rhetorically relevant Niceapps references, show me the reference board, explain what is worth borrowing, and propose the messaging, source screen, composition, and art direction for every frame. Do not generate final artwork.
For critique:
Review my current screenshot set against the product promise and the selected references. Separate messaging, narrative, visual-system, copy-fit, and technical-export problems. Prioritize the three changes with the highest impact.
For a rejected direction:
I rejected this direction because it feels like a generic gradient template. Record that feedback and define two replacements that change both the image-making method and composition system—not just the palette.
How it works
flowchart LR
A[App context] --> B[Reference retrieval]
B --> C[Visual reference board]
C --> D[Messaging and narrative]
D --> E[Art-direction brief]
E --> F[Human design work]
F --> G[Copy and export QA]The catalog currently contains 418 human-reviewed frames across all 55 apps in the reviewed 2026-09-17 catalog snapshot. Retrieval considers communication job, headline pattern, product language, visual style, composition, background, and device treatment. Results include match reasons and can exclude the target app or cap repeated results from one campaign.
Annotations are an index, not a substitute for sight. get_reference_board returns the selected screenshots as an image so the agent must inspect the actual hierarchy, crop, lighting, material, typography, collage, and product scale before proposing a direction.
What you get
A useful response should include:
A normalized product brief with unknowns marked explicitly.
A small reference set split into product, visual, and communication relevance.
A positioning statement and the primary audience.
An ordered screenshot story with one job per frame.
Draft headline and supporting copy for each locale.
The real in-app screen or state needed for every frame.
A concrete art-direction brief tied to visible reference evidence.
Risks, unsupported claims, and the next decisions a human designer must make.
Tools
Area | Tool | What it does |
Catalog |
| Searches the public niceapps.club catalog. |
Catalog |
| Returns one app and its screenshot URLs. |
Research |
| Finds reviewed frame-level patterns and explains every match. |
Research |
| Returns a reviewed campaign in storefront order. |
Research |
| Returns selected real screenshots as an image for visual inspection. |
Context |
| Imports public App Store metadata and current screenshots. |
Iteration |
| Stores why a direction was rejected and what must change or remain. |
Iteration |
| Checks whether externally created alternatives are materially different. |
QA |
| Measures localized copy against the target canvas in pixels. |
QA |
| Checks existing exports for dimensions, format, opacity, and ordering. |
The two QA tools validate measurable facts. They do not certify visual quality or predict conversion performance.
Design principles
Evidence before aesthetics. Every recommendation points back to the app, a visible reference, or a stated product constraint.
References are not templates. The server extracts principles; it does not reproduce another campaign.
Real gaps stay visible. Weak catalog coverage is reported instead of forcing an unrelated match.
Rejection changes the system. A replacement must alter image-making method and composition, not merely color or decoration.
Human judgment remains the final gate. Technical validity and creative acceptance are different questions.
Privacy and writes
Catalog and App Store lookups use public data.
The server does not upload screenshots, edit your app, or publish to App Store Connect.
No API key is required for the default public catalog.
Direction feedback and optional comparison boards are written only when you provide an explicit local path beneath the current project or operating-system temporary directory.
Set
NICEAPPS_API_URLonly if you want to use a different catalog API origin. The default ishttps://api.niceapps.club.
Honest limitations
The reviewed catalog is intentionally small and will not cover every product or visual language.
Reference relevance is explainable lexical retrieval plus human-authored annotations, not proof of conversion lift.
The MCP can critique and specify art direction, but it cannot replace a strong graphic designer or produce finished App Store artwork.
Copy measurement currently targets the supported
1290 × 2796iPhone canvas and local font fallbacks can vary by operating system.Cross-platform behavior beyond the current macOS verification remains incomplete.
Development
git clone https://github.com/ilyastorunn/niceapps-creative-studio.git
cd niceapps-creative-studio
npm install
npm test
npm run eval:retrieval
npm pack --dry-runTo inspect the server interactively:
npx -y @modelcontextprotocol/inspector npx -y niceapps-creative-studio@latestSee the project wiki, changelog, contribution guide, security policy, and architecture notes.
Status and roadmap
Creative Studio is an early public preview. The next milestones are broader reviewed reference coverage, stronger critique evaluations, and additional copy-measurement targets.
Image generation is not on the first-version roadmap. It should return only after repeatable evaluation shows that it improves on a designer-ready brief.
License
MIT © niceapps.club contributors
Available Tools
10 toolscompare_direction_previewsCompare replacement direction previewsB
Build one visual board for two to four opening-frame previews and reject candidates that do not materially change the image-making method, composition, and enough core visual axes. Use before expanding any replacement into a full set.
| Name | Required | Description | Default |
|---|---|---|---|
| rejected | Yes | ||
| candidates | Yes | ||
| output_path | No | ||
| minimum_changed_axes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must carry the behavioral burden. It discloses the high-level behavior ('Build one visual board... reject candidates') and some evaluation criteria, but it does not explain whether the board is persisted, what output is returned, whether it modifies any inputs, or what happens when output_path is omitted. This leaves key behavioral aspects under-specified.
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 main action and followed by a concise workflow note. Every phrase contributes to understanding when and why the tool should be used, with no filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the nested schema, four parameters, no parameter descriptions, and no output schema, this description is too sparse for a fully informed invocation. It gives a useful workflow position but omits important context about the rejected baseline, output_path behavior, and return value, leaving an agent to guess at semantics not recoverable from the schema.
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 0%, so the description must compensate. It adds meaning by mapping 'two to four' to the candidates array, and 'image-making method, composition, and enough core visual axes' to the axis fields and minimum_changed_axes concept. However, it does not explain the required 'rejected' object or the optional 'output_path' parameter, so compensation is partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action: build a visual board for two to four opening-frame previews and reject candidates that fail material-change criteria. It is not a tautology and identifies the resource ('replacement direction previews') and the workflow position, though it does not explicitly name sibling tools to distinguish itself.
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 clear usage context with 'Use before expanding any replacement into a full set,' which tells an agent when in the workflow to invoke this tool. It does not, however, state when not to use it or mention alternative sibling tools explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_appGet niceapps.club appA
Get one catalog app and its screenshot URLs by slug.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action and result but does not mention side effects, error handling, rate limits, or that it is a read-only operation. For a getter, this is minimal transparency.
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 a single, efficient sentence with no filler. The action and key input are front-loaded, making it easy to parse quickly. It is appropriately concise for a tool with one parameter.
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 simple fetch-by-slug tool with one parameter and no output schema, the description explains what is returned ('one catalog app and its screenshot URLs') which is the essential context. It lacks details on error conditions or return structure, but these are minor for this straightforward use case.
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 0%, so the description must compensate. It does add the crucial meaning that 'slug' is the identifier used to fetch the app, which goes beyond the schema's generic string type. However, it does not elaborate on slug format or additional constraints beyond what the schema already provides.
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 uses a specific verb ('Get'), a clear resource ('one catalog app and its screenshot URLs'), and the key method ('by slug'). It distinguishes from siblings like search_apps (search) and get_screenshot_set (screenshots only) by stating exactly what it returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used when you have a specific slug to fetch a single app, but it does not explicitly contrast with alternatives or state when not to use it. No direct comparison to sibling tools is provided, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reference_boardView selected screenshot referencesA
Fetch selected approved niceapps.club screenshots and return one visual comparison board. Use after retrieval and visually inspect the actual compositions before proposing art direction; annotations alone are insufficient.
| Name | Required | Description | Default |
|---|---|---|---|
| screenshot_ids | Yes | Approved screenshot IDs returned by search_screenshots or get_screenshot_set |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Fetch... and return' implies a read-only operation, and the 'approved' qualifier plus 'one visual comparison board' constrains what the tool accepts and produces. However, it never explicitly confirms the absence of side effects, states what happens with invalid IDs, or describes permission/authorization requirements, leaving part of the disclosure burden unmet.
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 with zero filler: the first delivers the core fetch-and-return behavior, and the second delivers the when-and-why usage guidance. The most decision-relevant information is front-loaded in the opening clause. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool whose schema fully documents the input, the description covers the essentials: what it does, when in the workflow to call it, and that it produces a single visual comparison board. With no output schema, 'return one visual comparison board' is the only return-format information, and it does not specify whether the board is an image URL, rendered HTML, or file path. Error/failure behavior is also unstated, so a 4 rather than a 5 is appropriate.
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%; the schema already documents that screenshot_ids are 'Approved screenshot IDs returned by search_screenshots or get_screenshot_set,' including provenance and constraints (min 1, max 6, minLength 3). The description's 'approved niceapps.club screenshots' reinforces the schema's qualifier and adds the domain context, but adds little beyond what the schema provides. Baseline 3 is correct when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise action and outcome: 'Fetch selected approved niceapps.club screenshots and return one visual comparison board,' naming the verb, resource, and output format in a single clause. The phrase 'one visual comparison board' hints at differentiation from siblings like get_screenshot_set, which presumably returns raw screenshot data. It does not explicitly name the sibling it is not, so it falls one step short of the strongest definitions.
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?
'Use after retrieval and visually inspect the actual compositions before proposing art direction' places the tool explicitly in the workflow, telling the agent exactly when in the pipeline it belongs. 'Annotations alone are insufficient' supplies the selection rationale, explaining why this tool is necessary rather than skipping it. It provides clear context but does not name excluded alternatives or say when NOT to use it, so it earns a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_screenshot_setGet an annotated screenshot setA
Return the ordered, human-reviewed screenshot annotations for one niceapps.club app slug.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full behavioral disclosure burden. It usefully discloses that results are ordered and human-reviewed, which adds context beyond 'get screenshot set'. However, it does not mention output format, error behavior for unknown slugs, or any access considerations.
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 a single, front-loaded sentence with no filler. It puts the verb and object first, then the scoping detail, and every word contributes useful 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 one-parameter read tool with no output schema, the description covers the essential context: what is returned (annotations), their nature (ordered, human-reviewed), and scope (one app slug). Lacking only detailed return-value structure and edge-case behavior, which are minor for this simple operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only a bare 'slug' string with no description, so schema coverage is 0%. The description adds minimal meaning by identifying the slug as a 'niceapps.club app slug', but it does not explain slug format, valid values, or how to obtain one; the single parameter is simple enough that this is adequate but not strong.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Return') and resource ('ordered, human-reviewed screenshot annotations') scoped to one app slug. It does not explicitly contrast with sibling tools like search_screenshots, but the noun phrase 'screenshot annotations' distinguishes this from raw screenshot retrieval.
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 implied rather than explicit: the description tells the agent this tool returns annotations for one specific niceapps.club app slug, suggesting it is appropriate when a slug is already known. It does not provide any when-to-use vs. when-not-to-use guidance or mention sibling alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_app_storeImport App Store contextA
Load public App Store metadata and current screenshots from an App Store URL or Apple ID.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | App Store URL or numeric Apple ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It does disclose that the data is 'public' and 'current', which suggests no authentication and a fresh read. However, it does not explicitly state whether the operation is read-only, whether it mutates any local/context state, or what happens on an invalid URL or ID.
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 a single sentence with no filler. It front-loads the resource and result ('public App Store metadata and current screenshots') before stating the input ('from an App Store URL or Apple ID'), making it easy for an agent to parse quickly.
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 simple one-parameter tool with no output schema, the description identifies the input and the expected result (metadata and screenshots). It is mostly complete, though it does not explain what 'context' means operationally or how the loaded data is returned or stored, which would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully describes the single parameter as 'App Store URL or numeric Apple ID' with 100% coverage. The description only restates this same source condition and does not add examples, format details, or constraints beyond what the schema provides.
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 uses a specific verb ('Load') with a specific resource ('public App Store metadata and current screenshots') and an explicit source ('an App Store URL or Apple ID'). It clearly states the tool's function and distinguishes it from search/screenshot-only siblings by covering both metadata and screenshots from a direct identifier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used when the agent has an App Store URL or Apple ID, but it gives no guidance on when to choose this over alternatives such as get_app or search_screenshots. It provides no exclusions, prerequisites, or context for selecting the right sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_direction_feedbackRecord rejected creative directionA
Persist a rejected direction and the user’s reason so later iterations do not silently repeat the same image-making method, composition, palette, or device treatment.
| Name | Required | Description | Default |
|---|---|---|---|
| avoid | No | ||
| reason | Yes | ||
| preserve | No | ||
| project_id | Yes | ||
| fingerprint | Yes | ||
| direction_id | Yes | ||
| feedback_file | Yes | JSON file beneath the current project or operating-system temporary directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states 'Persist', indicating a write operation, but does not disclose whether it creates or updates records, what happens on repeated calls, whether it overwrites existing feedback, if authorization is required, or what the return value is. This is a significant gap for a state-changing 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?
The description is a single sentence with no filler or repetition. It front-loads the core action ('Persist a rejected direction and the user's reason') and then states the purpose, making it concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, no annotations, a nested fingerprint object, and 7 parameters, the description is too sparse to fully guide an agent. It does not explain how to construct feedback_file, what avoid/preserve mean in practice, or how direction_id relates to fingerprint. An agent would need to infer significant details to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 14%, so most parameters lack descriptions. The description adds meaning to 'reason' as the user's reason and to 'fingerprint' as the fields for image-making method, composition, palette, and device treatment. However, it does not explain required fields like project_id, direction_id, feedback_file, or the optional avoid/preserve arrays, leaving major gaps in understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Persist a rejected direction and the user's reason', and explains the purpose of preventing later iterations from repeating the same method, composition, palette, or device treatment. None of the sibling tools (search_apps, get_app, screenshot tools) overlap with this feedback-recording function, so it is clearly distinguishable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use the tool: when a direction is rejected and the user's reason must be recorded to avoid silent repetition in later iterations. It does not explicitly name alternatives or exclusions, but the sibling tools are unrelated, so this contextual guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_appsSearch niceapps.clubA
Find screenshot references in the niceapps.club catalog. Results are candidates, not conversion evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | Product, audience, feature, style, or communication terms | |
| category | No | Optional exact App Store category |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. The 'candidates, not conversion evidence' caveat is a genuinely useful behavioral trait, but the description lacks other context such as result limits, matching behavior, or output shape.
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 extremely concise, with the core purpose front-loaded and the key caveat in the second sentence. Every word earns its place, and there is no redundant padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter search tool, the description provides purpose and a crucial result interpretation, while the schema covers parameters. However, with no output schema and no sibling differentiation, an agent is left without explicit return structure or guidance on choosing between related search tools.
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 67%, with query and category already described in the schema. The description itself does not add parameter-level detail, but it does reinforce the overall intent behind the query terms. The 'limit' parameter remains generic, though its schema constraints are sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Find') and resource ('screenshot references in the niceapps.club catalog'), so an agent understands the tool's basic purpose. However, it does not explicitly contrast itself with sibling tools like search_screenshots, leaving some differentiation to the tool name and context.
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 'Results are candidates, not conversion evidence' implies this tool is for discovery/reference gathering rather than validation, which is useful usage context. It does not explicitly say when to use this tool instead of search_screenshots or get_app, so the guidance remains somewhat implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_screenshotsSearch curated screenshot patternsA
Search human-reviewed screenshot-level annotations by communication job, visual style, composition, device treatment, and category. Results explain their text-match reasons and are references, not conversion evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | Communication, visual, composition, or product terms | |
| category | No | Optional exact App Store category | |
| composition | No | ||
| visual_style | No | ||
| exclude_slugs | No | App slugs to omit, usually including the target app | |
| per_app_limit | No | Maximum results from one reference app | |
| device_treatment | No | ||
| communication_job | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explicitly discloses that results are human-reviewed, include text-match reasons, and are references rather than conversion evidence. These are meaningful behavioral traits beyond what the schema shows. It does not cover ordering, pagination, or filter semantics, but the core behavior is transparent.
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 two sentences: the first front-loads the purpose and facets, the second frames result interpretation. Every clause earns its place, with no redundancy or 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?
For a 9-parameter tool with no output schema and no annotations, the description covers the high-level purpose but leaves gaps: it does not explain multi-filter logic, what constitutes a valid query or array value, defaults (e.g., limit=8, per_app_limit=2), or the meaning of exclude_slugs. An agent could still invoke it correctly with a simple query, but the description is not fully complete for effective use of all parameters.
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 44%, so the description must compensate. It merely re-lists the same facet names as parameters (communication job, visual style, composition, device treatment, category) without adding value. It does not explain what values are valid, whether filters combine as AND/OR, or what 'human-reviewed' means for query behavior. The small benefit of indicating curated data does not offset the missing guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Search human-reviewed screenshot-level annotations' and lists six distinct facets. It clearly differentiates from sibling tools like search_apps by scoping to screenshot-level annotations, and the second sentence clarifies the intended use case (references, not conversion evidence).
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 implied by the purpose: an agent can infer this tool is for finding curated screenshot patterns by various facets. However, there is no explicit when-to-use versus alternatives, no mention of when not to use it (e.g., when needing app metadata), and no comparison to search_apps or get_reference_board. The guidance is present but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_screenshot_copyPreflight screenshot copyB
Rasterize localized screenshot copy with the same typography and target dimensions as the renderer, then report exact pixel widths and copy-to-source collisions before any files are written.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | No | ||
| width | No | ||
| frames | Yes | ||
| height | No | ||
| locale | No | en-US |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool rasterizes using the same typography and dimensions as the renderer (simulation), reports measurements, and is non-destructive (before writing). It does not mention failure modes or output format, but the key behavioral traits are covered.
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 a single, dense sentence that front-loads the primary action and key outputs. It is concise and avoids redundancy, though the long sentence could be split for readability.
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 tool with 5 parameters, a complex nested schema, no output schema, and no annotations, the description is insufficient. It does not describe the report structure, collision criteria, or parameter semantics, leaving significant gaps for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides no explanation of parameters like frames, slot, width, height, or locale. The complex nested schema remains entirely undocumented, leaving the agent without guidance on how to construct valid inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Rasterize localized screenshot copy'), the specific outputs ('report exact pixel widths and copy-to-source collisions'), and the timing ('before any files are written'). It distinguishes itself from sibling validate_screenshot_set by focusing on copy and collisions, making its purpose 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 description implies usage as a preflight check ('before any files are written') but does not explicitly contrast it with validate_screenshot_set or other siblings. There is no when-to-use vs when-not-to-use guidance, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_screenshot_setValidate App Store screenshot filesC
Validate local screenshot files for dimensions, format, opacity, readable image data, and deterministic sequence naming. Reports visual-review and source-fidelity gates separately.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | Yes | ||
| files | Yes | ||
| locale | No | en-US | |
| expected | Yes | ||
| render_manifest | No | Optional render manifest for automatic source hash and interior pixel-equality verification | |
| full_resolution_reviewed | No | ||
| source_fidelity_verified | No | ||
| storefront_scale_reviewed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the validation aspects and that it reports gates separately, but does not disclose whether the tool is read-only, what happens on validation failure, if it writes any state, or what the output format is. For a validation tool, it should explicitly state that it does not modify files or require special permissions. This is a significant gap.
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 concise, consisting of two sentences with no wasted words. It front-loads the action ('Validate local screenshot files') and then lists the validation dimensions and the gate reporting. It is easy to parse and not verbose, though it could be slightly better structured with parameter hints, but it meets the conciseness bar.
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?
This tool has 8 parameters, a nested 'expected' object, no output schema, and no annotations. The description is far from complete: it does not explain what the gates are, how the booleans affect behavior, what the return value looks like, or how to handle multiple files. An agent cannot correctly call this tool based on the description alone; it would need to infer from parameter names, which is risky given the lack of documentation. This is severely incomplete.
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 13%, meaning most parameters are undocumented in the schema, and the description does not compensate. The description mentions validation aspects but does not map them to specific parameters like 'files', 'slot', 'expected', 'render_manifest', or the three boolean flags. There is no explanation of what 'full_resolution_reviewed' or 'source_fidelity_verified' mean. With such low coverage, the description must clarify parameter semantics, but it offers none.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: validating local screenshot files for specific attributes (dimensions, format, opacity, readable image data, and deterministic sequence naming) and reporting two gates separately. It names the resource (screenshot files) and the verb (validate), making the core purpose evident. However, it does not explicitly differentiate from the sibling tool 'validate_screenshot_copy', which could be confused for a similar validation task, so it lacks sibling distinction.
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?
No guidance is provided on when to use this tool versus alternatives like validate_screenshot_copy. There is no mention of prerequisites, scenarios where this validation is appropriate, or exclusions. The description only states what it does, not when to invoke it, leaving the agent to infer usage context.
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.
10 tool updates
v0.8.0- First observed
compare_direction_previews - First observed
get_app - First observed
get_reference_board - First observed
get_screenshot_set - First observed
import_app_store - First observed
record_direction_feedback - First observed
search_apps - First observed
search_screenshots - First observed
validate_screenshot_copy - First observed
validate_screenshot_set
TDQS
Scored across 10 tools
Most tools target clearly distinct resources: catalog apps, screenshot annotations, reference boards, preview comparisons, and validations. A few pairs like search_apps/search_screenshots and get_reference_board/compare_direction_previews could be confused, but their descriptions clarify intent.
All tool names follow a consistent verb_noun snake_case pattern: search_, get_, validate_, import_, record_, compare_. There are no mixed conventions or vague generic verbs.
Ten tools cover the advertised creative-studio workflow without bloat. Each tool has a distinct role in research, direction, comparison, validation, or import.
The set covers the main workflow: reference discovery, retrieval, board creation, direction feedback, preview comparison, and validation. A notable minor gap is that record_direction_feedback persists rejected directions but no tool retrieves or lists that persisted feedback.
Maintenance
Related MCP Connectors
Live App Store & Google Play data for AI agents: app discovery, ASO keywords, reviews.
Generate exact-size App Store and Google Play screenshots, feature graphics, and listing copy.
ASO tools for AI agents: keyword research, rank tracking, competitor analysis (iOS & Android).
App Store Optimization for AI agents: keyword ranks, suggestions, popularity, competitors, reviews
Related MCP Servers
- AlicenseAqualityAmaintenanceEvidence-backed web research for AI agents. Real-time search with cited claims, confidence scores, and compare mode showing raw LLM hallucination vs evidence-backed answers.520Apache 2.0
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to draft evidence-grounded cold-email openers, A/B variants, personalized LinkedIn DMs, and SEO content-gap plans for sales and marketing outreach.-
- AlicenseAqualityAmaintenanceEnables App Store and Google Play keyword rank tracking, competitor comparisons, and AI visibility checks through natural language, without requiring store credentials.8220 npm1MIT
- AlicenseNot gradedqualityBmaintenanceProvides AI agents with live search research—competitors, topics, entities, questions, AI citations, content gaps, and source URLs—before they write.MIT