Sleek
Server Details
Design your mobile app UI with AI, then have your coding agent build the real app from it.
- Status
- Healthy
- Uptime
- 100.0% over 24 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- sleekdotdesign/mcp
- GitHub Stars
- 0
- Server Listing
- Sleek MCP server
- ChatGPT
- Sleek
- Claude
- –
TDQS
Scored across 15 tools
Most tools are clearly distinguished by their domain (e.g., project vs. design run). However, the set contains several tools dedicated to presentation and viewing (`show_project`, `screenshot`, `get_project_view`, `open_sleek`), which have slightly overlapping purposes.
The naming follows a generally predictable pattern of prefix_noun or verb_noun, which is readable throughout. Minor deviations exist for specific actions like `design` and `cancel_design_run`, but the conventions remain internally consistent.
With 15 tools, the count is well-scoped for a complex design and project management server. Each tool appears to serve a distinct, logical function within the design lifecycle without being overly dense.
The set covers the basic lifecycle of projects and design runs well. However, there is a noticeable lack of direct mutation operations; for instance, there is no clear way to update a project definition or change components without triggering a full `design` run.
Available Tools
15 toolscancel_design_runCancel a design runADestructiveIdempotentInspect
Ask a design run to stop, for example when the brief was wrong. Returns the run as it stands right after the request. A queued run comes back 'failed' with error code 'cancelled' and never starts. A running run comes back still 'running' and stops at its next step. A run cut short settles as 'failed' with error code 'cancelled', or 'execution_failed' if saving its changes failed. It keeps any screens and theme changes it saved, listed in data.result.operations, and uses credits only when that list is not empty. A run that finishes before it stops settles as 'completed'. A run that had already settled comes back unchanged. The project stays locked until the run settles, so poll get_design_run before starting another run. A run that stopped responding settles as 'failed' with error code 'execution_timeout' 15 minutes after creation.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | Run id from data.runId in a design result. | |
| projectId | Yes | Project id from an item's id in list_projects, or data.id in create_project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| projectUrl | Yes | Open link for the project. Share it with your user. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond the annotations by disclosing that cancellation is best-effort and asynchronous: a queued run returns 'failed'/'cancelled' and never starts, a running run returns still 'running' and stops at its next step, credits are consumed only if data.result.operations is non-empty, and the project stays locked until settlement. It also names the 15-minute execution_timeout fallback.
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-loads the action and outcome model before the state-by-state detail, so the key takeaway is immediate. It is dense and slightly long, but nearly every sentence documents a distinct terminal state, so little is wasted.
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 an output schema present, the description need not explain return values, yet it still explains the asynchronous contract, credit accounting, project locking, and polling requirement. An agent has everything needed to call it correctly and handle 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 100%, so both runId and projectId are already fully documented in the schema, including their sources (data.runId in a design result, list_projects/create_project). The description adds no additional parameter-level meaning beyond that 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?
States a specific verb+resource ('Ask a design run to stop') and immediately gives a triggering scenario ('when the brief was wrong'). It distinguishes itself from the read-only sibling by naming get_design_run as the polling tool to use afterward.
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?
Provides clear context for when to call it ('brief was wrong') and prescribes the follow-up workflow ('poll get_design_run before starting another run'). It does not, however, state any when-not conditions or contrast against other mutation siblings like delete_project.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectCreate a projectAInspect
Create an empty project. Returns it in data, plus projectUrl. Pass data.id as projectId to design, then call show_project once the run completes. Creating a project is instant and uses no credits. Only design runs do. Share projectUrl so your user can watch and edit the designs.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Display name for the new project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| projectUrl | Yes | Open link for the project. Share it with your user. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses that creation is instant and uses no credits, while only design runs consume credits. It also explains the return shape ("Returns it in data, plus projectUrl") and the user-facing sharing behavior. These details add meaningful behavioral context beyond the structured hints.
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 purpose is front-loaded in the first sentence, followed by return details and the next-step workflow. Every sentence contributes useful information about credits, projectUrl, or follow-up tools, with no waste.
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?
The tool has an output schema and rich annotations, but the description still adds the critical credit-cost context and the design/show_project workflow. Nothing an agent needs to call create_project correctly is missing.
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?
There is only one input parameter, name, and the schema already documents it at 100% coverage. The description does not add syntax or constraints beyond the schema, so baseline 3 is appropriate for a single well-documented parameter.
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: "Create an empty project." It also distinguishes the tool from the sibling design tool by explaining that this creates an empty project and that design runs are the step that follows. An agent can identify the tool's role 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?
The description gives an explicit workflow: "Pass data.id as projectId to design, then call show_project once the run completes." It also says to share projectUrl with the user, making the intended usage sequence clear. Alternatives and next steps are named directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_projectDelete a projectADestructiveIdempotentInspect
Permanently delete a project and all its screens. Designs cannot be recovered. Call only after your user confirms the exact project by name. Never delete projects to tidy up on your own initiative.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Set only after your user confirms this exact project by name. Deletion is irreversible. | |
| projectId | Yes | Project id from an item's id in list_projects, or data.id in create_project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| deleted | Yes | Always true. The project and its screens are gone. |
| projectId | Yes | Id of the deleted project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds the consequences the annotation cannot convey: designs are unrecoverable and consent must be obtained per-project by name. That is genuinely additive safety context rather than a restatement.
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 irreversibility warning, then the consent precondition, then the anti-pattern. Every sentence carries distinct information; nothing is 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?
An output schema exists, so return values need not be described. For a two-parameter destructive tool, the description covers consequence, consent gate, and misuse avoidance — nothing an agent needs to call it safely is missing.
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 confirm parameter already documents "Set only after your user confirms this exact project by name. Deletion is irreversible." The description largely echoes that same consent language rather than adding new parameter-level detail, so the baseline 3 is appropriate.
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 ("Permanently delete a project") plus the blast radius ("and all its screens"). The word "permanently" and "cannot be recovered" distinguish it from softer siblings like cancel_design_run or create_project without opening any 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 preconditions and an explicit negative rule: "Call only after your user confirms the exact project by name" and "Never delete projects to tidy up on your own initiative." This is a rare case where both when-to-use and when-not-to-use are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
designDesign screens with AIADestructiveInspect
Run Sleek's design agent to create or edit screens from a plain-language brief. Send the whole request as ONE message, such as 'a food delivery app with onboarding, restaurants, dish detail, cart, tracking, and profile'. The agent plans the screens together, so separate calls produce mismatched screens. A run uses workspace credits only when it completes or saves changes. By default this waits for the run to finish. If it returns 'queued' or 'running', poll get_design_run. Only one run can be active per project. On CONFLICT, poll get_design_run until the run settles, then retry. cancel_design_run stops it sooner. If a failed run has data.error.url, relay data.error.message to your user with that link. They have to act before you retry. On completion, call show_project with data.runId to show your user what the run made, inline. Use screenshot only where your client cannot show apps. Then share projectUrl with your user.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Wait for the run to finish before returning. The wait is capped at 270 seconds, after which you get status 'running' back and poll get_design_run. Set false to return immediately and poll from the start, which is the better choice if your client times tool calls out sooner than that. | |
| message | Yes | The full design brief, as one message. Name every screen you want in this single request. | |
| screenId | No | Edit this existing screen instead of creating new ones. Use the screenId from list_components, or from a previous run's data.result.operations (via design or get_design_run). It is not the component id. | |
| imageUrls | No | HTTPS image URLs for visual input, such as screenshots, logos, or style references. | |
| projectId | Yes | Project id from an item's id in list_projects, or data.id in create_project. | |
| referenceId | No | Design reference to imitate, from list_references. | |
| idempotencyKey | No | Pick a unique key for each new design request, such as a UUID. Reuse it for retries to return the original run instead of starting a second one. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| projectUrl | Yes | Open link for the project. Share it with your user. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (destructiveHint=true, openWorldHint=true) by disclosing credit consumption timing ('only when it completes or saves changes'), the default blocking wait and its polling fallback, the one-active-run-per-project constraint, CONFLICT recovery, and the required user action when data.error.url is present. That is exactly the operational context an agent needs before firing a costly, state-changing run.
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 purpose and the single most important usage rule, then sequenced cleanly through credits, waiting/polling, conflicts, errors, and follow-up. It is dense and long, and the closing cluster of post-run instructions (show_project, screenshot, projectUrl) borders on overload for one tool, but none of it is 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 costly, long-running, destructive mutation, the description covers initiation, waiting, polling, conflict recovery, failure handling, and the follow-up call chain — even though an output schema exists. Nothing an agent needs in order to invoke it correctly is absent.
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 the baseline is 3, but the description adds real semantic weight: it stresses that message must carry every screen in a single call, and that create-vs-edit is selected by supplying screenId. It also frames the run's identifiers (data.runId, projectUrl) that the parameters feed into.
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 — 'run Sleek's design agent to create or edit screens from a plain-language brief' — with both the create and edit modes named. It is immediately distinguishable from siblings like get_design_run, cancel_design_run, and show_project, which are each given explicit roles in the text.
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?
Explicit when/when-not guidance: send everything as ONE message because separate calls produce mismatched screens; poll get_design_run on 'queued'/'running' or CONFLICT; use cancel_design_run to stop sooner; use show_project on completion and screenshot only where the client cannot render apps. Alternatives and their triggering conditions are all named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_componentGet a screen's HTMLARead-onlyIdempotentInspect
Fetch a screen's generated HTML. Returns the screen in data, with the HTML at data.versions[].code. versions holds only the version the screen currently shows. Use allVersions for the full history, which can be large. The returned screenId is the value design takes. Use this for a build handoff, not to check whether a design run worked.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Project id from an item's id in list_projects, or data.id in create_project. | |
| allVersions | No | Return every stored version instead of just the active one. Payloads grow quickly; leave it off unless you need the history. | |
| componentId | Yes | Component id from an item's id in list_components, or a componentId in a run's data.result.operations. Not a screenId. | |
| inlineIcons | No | Inline icons as SVG so the HTML works without loading Iconify. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the description only needs to add behavioral context, which it does: versions contains only the currently-shown version, and allVersions 'can be large' warns about payload growth. It does not cover error or permission behavior, but for a read tool that is a minor 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?
Four short sentences, front-loaded with the verb and resource, then return shape, then parameter guidance, then usage/anti-usage. No sentence is filler; each one changes how an agent would call the tool.
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?
An output schema exists, so return values need not be re-explained, yet the description still names the key data path (data.versions[].code) and the cross-tool handoff value. Nothing required to call this read tool correctly is missing.
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 the baseline is 3. The description adds real meaning beyond the schema by explaining what versions actually contains versus allVersions, and by noting that the returned screenId is the value to pass to design, which is chaining guidance the schema cannot express.
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 ('Fetch a screen's generated HTML') and immediately resolves the name/semantics mismatch (tool is get_component but the artifact is a screen's HTML). It explicitly distinguishes itself from the design-run siblings with 'not to check whether a design run worked'.
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 an explicit positive use case ('use this for a build handoff') and an explicit exclusion ('not to check whether a design run worked'), which routes the agent away from get_design_run. It also gives a conditional path for allVersions ('use allVersions for the full history').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_design_runGet a design runARead-onlyIdempotentInspect
Poll a run that design returned as 'queued' or 'running'. Wait a few seconds between polls. On 'completed', data.result.operations lists the saved screens and theme changes. Call show_project with this runId to show your user what the run made, inline. Use screenshot only where your client cannot show apps. Then share projectUrl. On 'failed', relay data.error.message to your user, with data.error.url if present. A failed run, including a cancelled one, keeps what it saved in that same list and uses credits only when the list is not empty. Check it before resending the brief.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | Run id from data.runId in a design result. | |
| projectId | Yes | Project id from an item's id in list_projects, or data.id in create_project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| projectUrl | Yes | Open link for the project. Share it with your user. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Although annotations already declare this as read-only, idempotent, non-destructive, and closed-world, the description adds substantial behavioral context beyond them. It describes polling cadence, state transitions, what `data.result.operations` contains, how to surface completed work, and how to handle `failed` runs including saved items and credit usage. There is no contradiction with the read-only annotation.
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 front-loaded with the core polling instruction and then covers each relevant state in sequence. Every sentence adds operational value: polling cadence, completed results, display fallback, error relay, and failed-run credit behavior. There is no redundant restatement of the tool name or schema.
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 stateful polling tool, the description covers the full lifecycle: queued/running polling, completed results, failed error handling, and the fallback display path. Output schema exists, so return values need not be exhaustively documented, but the description still gives useful result-field context. Nothing an agent needs in order to call and act on this tool correctly appears to be missing.
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 both required parameters are already well documented in the input schema. The description references the runId in the context of passing it to `show_project`, but it adds little parameter-level meaning beyond the schema. Baseline 3 is appropriate when the schema carries the parameter documentation.
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: polling a design run returned as 'queued' or 'running'. It clearly separates this from the sibling tool `design` that starts runs, and from `show_project`/`screenshot` for displaying results. An agent can identify exactly what this tool does 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?
It gives explicit when-to-use guidance: poll only queued/running runs, with a delay between polls. It also names alternatives and conditions: use `show_project` with this runId to show results inline, and use `screenshot` only when the client cannot show apps. Failure handling and checking a failed run before resending the brief are also specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_projectGet a projectARead-onlyIdempotentInspect
Fetch a project and its projectUrl. Use it to confirm the project exists and share the URL with your user. Use list_components to see its screens.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Project id from an item's id in list_projects, or data.id in create_project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| projectUrl | Yes | Open link for the project. Share it with your user. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds only that the resource is read-only, but its contributing value is mainly the note that the fetch can be used as an existence check and yields a shareable 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?
Three short sentences, front-loaded with the core action and no wasted words. Every sentence either states the action, its output, or the intended use.
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 getter with an output schema and full annotation coverage, the description supplies everything an agent needs: what it returns, why to call it, and which sibling covers the adjacent need.
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 projectId parameter is fully documented in the schema, including where the id comes from. The description adds nothing about the parameter, 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?
States a specific verb and resource (fetch a project) and names what it returns (projectUrl), which separates it from list_projects and create_project. Sibling differentiation is implied through the use cases rather than stated directly, so it falls just short of 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?
Gives concrete when-to-use guidance: confirm the project exists and hand the URL to the user, plus routes to list_components for screens. It names an alternative for a related need but gives no explicit when-not or exclusion condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_viewLoad a project's screen viewerARead-onlyIdempotentInspect
Called by Sleek's screen viewer to load a project's screens, in canvas order, with their images and the viewer's text. To read screens yourself, use list_components.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | No | Run id from data.runId in a design result. Marks the screens that run changed. | |
| locale | No | The host's BCP 47 locale, such as pt-BR. The viewer's text uses it when Sleek supports that language. | |
| projectId | Yes | Project id from an item's id in list_projects, or data.id in create_project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | Project name. |
| screens | Yes | The project's screens in canvas order, up to 200. Every screen the runId run changed is listed. |
| projectId | Yes | The project's id. |
| runStatus | No | Status of the run named by runId, when one was given. |
| projectUrl | Yes | Open link for the project. Share it with your user. |
| screenCount | Yes | How many screens the project has, including any not listed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, closed-world, so the safety profile is free. The description adds useful behavioral context the annotations lack: the payload contains screens in canvas order with images and viewer text, and runId flags changed screens — both relevant to response size and use.
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, no waste, with the caller/purpose front-loaded and the alternative second. Everything 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?
With an output schema present and 100% parameter coverage, the description needn't explain return values, and it adds the key fact that this is viewer-facing. Nothing essential is missing, though a note on whether direct agent invocation is supported would close the last 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 description coverage is 100%, so all three parameters including runId and locale are already documented in the schema. The description adds no parameter-level meaning beyond that, which is the baseline-3 case when the schema does the work.
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 ('load a project's screens ... in canvas order, with their images and the viewer's text') and identifies its caller, so an agent knows exactly what this does. It also names the sibling it is not (list_components) for the self-read case.
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?
'Called by Sleek's screen viewer' establishes this is the viewer's loader, and 'To read screens yourself, use list_components' routes the agent to the alternative. The one gap is that it never explicitly says the agent should not call this directly, though the implication is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_componentsList screensARead-onlyIdempotentInspect
List a project's screen names and active version numbers without generated HTML. Pass each item's screenId to design. Pass its id as componentId to get_component or in componentIds to screenshot. Use get_component only when you need a screen's code.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of items to return. | |
| offset | No | Number of items to skip before this page. | |
| projectId | Yes | Project id from an item's id in list_projects, or data.id in create_project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Items on this page. |
| pagination | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds real behavioral context beyond that by disclosing what is deliberately excluded ('without generated HTML'), i.e. a lightweight listing. It stops short of noting pagination behavior, which limit/offset imply but do not spell out.
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 listing scope, then chained-call instructions; every sentence carries actionable information and none is padding. It is dense with field names in quick succession, which slightly reduces scannability, but there is no waste.
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?
An output schema exists, so return values need no further explanation, and the description supplies the missing piece an agent actually needs: how the output feeds downstream tools. Nothing required to call this correctly is absent.
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 projectId, limit, and offset are already fully documented in the schema, establishing a baseline of 3. The description's field-passing guidance concerns returned values (screenId, id), not input parameters, so it adds little input-side semantics.
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 ('List a project's screen names and active version numbers') and adds a distinguishing scope qualifier ('without generated HTML') that separates it from get_component. An agent can tell immediately what this returns versus the code-fetching sibling.
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?
Explicitly routes the agent: use get_component only when code is needed, and tells exactly which returned fields feed design, get_component (componentId), and screenshot (componentIds). This is prescriptive when-to-use guidance with a named alternative and the condition that selects it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsList projectsARead-onlyIdempotentInspect
List the workspace's projects, newest first. Each project holds one app's screens, theme, and design chat. Check here before create_project to avoid duplicates.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of items to return. | |
| offset | No | Number of items to skip before this page. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Items on this page. |
| pagination | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety needs no restating. The description adds domain behavior the annotations can't: deterministic ordering (newest first) and what a project actually contains (screens, theme, design chat).
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, zero filler, with the primary action and ordering stated first and the sibling-routing tip placed last.
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?
An output schema exists so return values need no explanation, annotations cover the safety profile, and both parameters are documented in the schema. The description supplies the remaining domain context, making it complete for a low-complexity list 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% and both limit/offset are fully documented with defaults and bounds, so the description correctly omits them. It adds no extra semantics (e.g., behavior at the 100-item cap) beyond the schema, which is the expected 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?
States a specific verb+resource ('List the workspace's projects') plus ordering ('newest first') and scope, distinguishing it from the singular get_project and the write-side create_project/delete_project siblings.
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 usage guidance by naming the sibling it precedes ('Check here before create_project to avoid duplicates'), which is a real when-to-use condition. It stops short of full routing guidance — no mention of when to use get_project instead or how to page through results.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_referencesList design referencesARead-onlyIdempotentInspect
List curated app styles and their preview images. When your user asks for a look such as Airbnb, brutalist, or dark fintech, pass the closest reference's id as referenceId to design. Without a reference, the agent picks a style.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of items to return. | |
| offset | No | Number of items to skip before this page. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Items on this page. |
| pagination | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds genuine context beyond that: the list is curated (not user-generated), items carry preview images, and the ids are consumed by the `design` tool. It does not discuss result volume or pagination, but the output schema and limit/offset params cover that.
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 purpose, then the trigger, then the fallback. Every sentence carries information the agent needs to route correctly.
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?
An output schema exists, so return values need no explanation, and annotations cover the safety profile. The description supplies exactly the missing pieces: what the items are, when to fetch them, and how the resulting id is used downstream.
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%, with limit and offset fully documented in the schema with defaults and bounds. The description adds no syntax or semantics beyond that, 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?
States a specific verb and resource ('List curated app styles') and adds what the resource actually is ('and their preview images'), distinguishing it from sibling list tools like list_components and list_projects. An agent can tell instantly that this returns style references, not components or projects.
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 a concrete trigger ('when your user asks for a look such as Airbnb, brutalist, or dark fintech') plus the downstream action ('pass the closest reference's id as referenceId to design'). It also names the alternative path explicitly ('without a reference, the agent picks a style'), so the agent knows both branches.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_sleekSleekARead-onlyIdempotentInspect
Called by ChatGPT's sidebar and Sleek's widget to show the workspace's newest projects, each with a cover. To list projects yourself, use list_projects.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | The host's BCP 47 locale, such as pt-BR. The sidebar's text uses it when Sleek supports that language. |
Output Schema
| Name | Required | Description |
|---|---|---|
| projects | Yes | The workspace's newest projects, newest first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover core behaviors like being readOnly and idempotent. The description adds valuable operational context (that it is called by the UI widgets and shows the newest projects with a cover), which aids selection but does not provide complex behavioral constraints missing from the annotations.
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 efficient, front-loading the tool's primary function in the first sentence and the usage guidance/sibling differentiation in the second. Every word is purposeful.
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?
The tool involves UI interaction (sidebar/widget). Describing this context and contrasting its function with the listing sibling makes the definition extremely complete for an AI agent determining how to trigger a specific visual output.
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?
With 100% schema coverage, the schema adequately describes the 'locale' parameter. The description confirms its semantic role as the host's BCP 47 locale, which meets the baseline requirement for a fully covered 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 clearly states the tool's function: to display the workspace's newest projects within a specific UI context (sidebar/widget). It successfully distinguishes this presentation role from the enumeration role of the sibling tool, list_projects.
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 usage guidelines by defining the condition for using the alternative tool. The instruction 'To list projects yourself, use list_projects' leaves no room for ambiguity regarding the tool's intended application.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screenshotRender screens to an imageARead-onlyIdempotentInspect
Render up to four project screens side by side as one inline image, for clients that cannot show apps. Where your client can, call show_project instead. Returns the image, PNG unless format asks for WebP, and a one-line text note. Rendering uses no credits. Send projectUrl with the image so your user can open and edit the designs.
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | Pixel density. 1 is right for showing a design in chat; raise it only when the user asked for a high-resolution export. | |
| format | No | Image encoding for the screenshot. | png |
| padding | No | Space in pixels on each side of the row of frames. | |
| projectId | Yes | Project id from an item's id in list_projects, or data.id in create_project. | |
| background | No | CSS background behind the frames, such as "#ffffff" or "transparent". | transparent |
| fullHeight | No | Expand each frame to the full height of its content before capturing, so scrollable screens are rendered fully extended rather than cut off at the bottom of the frame. Frames are capped at 4x the default frame height. | |
| componentIds | Yes | Component id from an item's id in list_components, or a componentId in a run's data.result.operations. Not a screenId. Screens render left to right. Render more than 4 in separate calls. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds real value beyond them: no credit consumption, the return shape (image plus a one-line text note), and the default encoding. It stops short of describing failure behavior for invalid or missing ids, so not quite 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?
Four short sentences, front-loaded with the capability and its fallback, then return format, cost, and the follow-up action. No filler and no restatement of the tool 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 and seven fully documented parameters, the description fills the remaining gaps an agent needs: cost (no credits), return payload, client-capability branching, and the instruction to surface projectUrl to the user. Nothing essential to correct invocation is missing.
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 the baseline is 3; the description nevertheless reinforces the meaningful constraints (max four components, PNG unless format requests WebP) and adds a usage instruction not encoded anywhere in the schema. It could have clarified scale/padding intent, which restates nothing beyond the schema text.
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 action (render screens as one inline image), the object (project screens), and the limit (up to four, side by side). It explicitly distinguishes itself from the sibling show_project, so an agent can route correctly without opening either 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 an explicit when-to-use condition (clients that cannot show apps) and a when-not with the named alternative ("Where your client can, call show_project instead"). It also routes overflow cases: "Render more than 4 in separate calls."
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_mentionsSearch projects to mentionARead-onlyIdempotentInspect
Find the workspace's projects by name for an @ mention, newest first. Each item is a resource link whose name is the projectId and whose uri is the projectUrl. To browse every project, use list_projects.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Text the project name contains, ignoring case. Empty returns the newest projects. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | Matching projects. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive, so the safety profile is covered. The description adds ordering ('newest first') and the exact result shape (resource link with name=projectId, uri=projectUrl), which is useful context; it does not mention pagination or result-count limits, keeping it 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?
Two sentences, zero waste, with the core purpose front-loaded and the alternative routing last. Every 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?
A single-parameter read tool with an output schema and full annotation coverage; the description still explains the return shape and ordering, so nothing an agent needs to invoke it correctly is missing.
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 query parameter is fully documented in the schema, including case-insensitivity and the empty-string behavior. The description's 'by name' adds no syntax or format detail beyond that, 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?
States a specific verb and resource ('Find the workspace's projects by name for an @ mention'), adds ordering ('newest first'), and explicitly names the sibling it is not (list_projects). An agent can distinguish it from list_projects without opening either 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?
Explicitly routes the agent: use this for @ mention lookup, use list_projects to browse every project. The condition selecting each alternative is stated, not implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_projectShow a project's screensARead-onlyIdempotentInspect
Shows your user a project's screens inline, in canvas order. They can enlarge a screen, add screens to this chat, and open the project in Sleek. After a design run completes, call it with that runId to show what the run made. Where the client cannot show apps, this returns the screen names only; use screenshot to see the screens. Returns the screen names and ids, the same ones design takes as screenId.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | No | Run id from data.runId in a design result. Marks the screens that run changed. | |
| projectId | Yes | Project id from an item's id in list_projects, or data.id in create_project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | Project name. |
| screens | Yes | The project's screens in canvas order, up to 200. Every screen the runId run changed is listed. |
| projectId | Yes | The project's id. |
| runStatus | No | Status of the run named by runId, when one was given. |
| projectUrl | Yes | Open link for the project. Share it with your user. |
| screenCount | Yes | How many screens the project has, including any not listed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses the real behavioral trait: this tool produces a user-visible artifact in the chat (screens they can enlarge, add to the chat, or open in Sleek). It also documents graceful degradation to names-only output in non-rendering clients and states what is returned.
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 front-loaded with the core action and every sentence carries information (trigger, degradation, return contract). Slight cost for the mid-sentence interactive-capabilities clause, which is useful but slightly less essential than the rest.
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 two-parameter render tool with an output schema and full annotation coverage, the description covers the trigger, the fallback path, the screenId handoff to design, and return contents. An agent has everything needed to decide to call it and how to interpret 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 coverage is 100%, so both parameters are already documented, including runId's origin in data.runId. The description only adds the timing context for runId and restates the screenId interoperability, so baseline 3 is appropriate.
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 verb and resource ("Shows your user a project's screens inline, in canvas order") and immediately differentiates itself from the read-only data siblings by emphasizing user-facing inline rendering. It also explicitly names the sibling it defers to in degraded clients ("use screenshot to see the screens").
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 a concrete trigger for the optional parameter ("After a design run completes, call it with that runId to show what the run made") and an explicit fallback condition for clients that cannot render apps. What's missing is a direct comparison against the closer siblings get_project and get_project_view, which an agent must still infer.
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.
3 tool updates
- Added
get_project_view - Added
open_sleek - Added
show_project
1 tool update
- Added
search_mentions
3 tool updates
- Changed
cancel_design_run3 fields changed- added
Output schema / properties / data / properties / error / properties / limitAdded value: +{ + "description": "The plan or credit limit that caused this error.", + "enum": [ + "agent_access", + "credits", + "projects" + ], + "type": "string" +} - removed
Output schema / properties / data / properties / statusUrlRemoved value: -{ - "description": "Relative REST path for polling this run.", - "type": "string" -} - changed
Output schema / properties / data / requiredPrevious value: -[ - "runId", - "status", - "statusUrl" -]New value: +[ + "runId", + "status" +]
- Changed
design3 fields changed- added
Output schema / properties / data / properties / error / properties / limitAdded value: +{ + "description": "The plan or credit limit that caused this error.", + "enum": [ + "agent_access", + "credits", + "projects" + ], + "type": "string" +} - removed
Output schema / properties / data / properties / statusUrlRemoved value: -{ - "description": "Relative REST path for polling this run.", - "type": "string" -} - changed
Output schema / properties / data / requiredPrevious value: -[ - "runId", - "status", - "statusUrl" -]New value: +[ + "runId", + "status" +]
- Changed
get_design_run3 fields changed- added
Output schema / properties / data / properties / error / properties / limitAdded value: +{ + "description": "The plan or credit limit that caused this error.", + "enum": [ + "agent_access", + "credits", + "projects" + ], + "type": "string" +} - removed
Output schema / properties / data / properties / statusUrlRemoved value: -{ - "description": "Relative REST path for polling this run.", - "type": "string" -} - changed
Output schema / properties / data / requiredPrevious value: -[ - "runId", - "status", - "statusUrl" -]New value: +[ + "runId", + "status" +]
3 tool updates
- Changed
cancel_design_run1 field changed- changed
Output schema / properties / data / properties / error / properties / url / descriptionPrevious value: -"Where the caller's user can resolve this error (e.g. top up credits). Relay it to the user."New value: +"Where the caller's user can resolve this error. Relay it to the user."
- Changed
design2 fields changed- changed
Input schema / properties / idempotencyKey / descriptionPrevious value: -"Pick a unique key for each new design request, such as a UUID. Reuse it for retries to return the original run without a second charge."New value: +"Pick a unique key for each new design request, such as a UUID. Reuse it for retries to return the original run instead of starting a second one." - changed
Output schema / properties / data / properties / error / properties / url / descriptionPrevious value: -"Where the caller's user can resolve this error (e.g. top up credits). Relay it to the user."New value: +"Where the caller's user can resolve this error. Relay it to the user."
- Changed
get_design_run1 field changed- changed
Output schema / properties / data / properties / error / properties / url / descriptionPrevious value: -"Where the caller's user can resolve this error (e.g. top up credits). Relay it to the user."New value: +"Where the caller's user can resolve this error. Relay it to the user."
7 tool updates
- Changed
create_project3 fields changed- added
Output schema / properties / data / properties / createdAt / descriptionAdded value: +"ISO 8601 time the project was created." - added
Output schema / properties / data / properties / name / descriptionAdded value: +"Display name of the project." - added
Output schema / properties / data / properties / updatedAt / descriptionAdded value: +"ISO 8601 time the project last changed."
- Changed
delete_project2 fields changed- added
Output schema / properties / deleted / descriptionAdded value: +"Always true. The project and its screens are gone." - added
Output schema / properties / projectId / descriptionAdded value: +"Id of the deleted project."
- Changed
get_component2 fields changed- changed
Output schema / properties / data / properties / screenId / descriptionPrevious value: -"The id of the screen this component renders on the canvas. It is the value target.screenId takes when you edit this screen with a chat message, and the same screenId run results report. Null when the component is not placed on a canvas."New value: +"Pass as screenId to design to edit this screen. Null when the component is not placed on the canvas." - changed
Output schema / properties / data / properties / versions / descriptionPrevious value: -"Stored screen revisions with their generated HTML."New value: +"Only the version the screen currently shows, unless allVersions is true. Each holds the screen's generated HTML in code."
- Changed
get_project3 fields changed- added
Output schema / properties / data / properties / createdAt / descriptionAdded value: +"ISO 8601 time the project was created." - added
Output schema / properties / data / properties / name / descriptionAdded value: +"Display name of the project." - added
Output schema / properties / data / properties / updatedAt / descriptionAdded value: +"ISO 8601 time the project last changed."
- Changed
list_components4 fields changed- added
Output schema / properties / data / descriptionAdded value: +"Items on this page." - changed
Output schema / properties / data / items / properties / screenId / descriptionPrevious value: -"The id of the screen this component renders on the canvas. It is the value target.screenId takes when you edit this screen with a chat message, and the same screenId run results report. Null when the component is not placed on a canvas."New value: +"Pass as screenId to design to edit this screen. Null when the component is not placed on the canvas." - added
Output schema / properties / pagination / properties / limit / descriptionAdded value: +"Page size used for this response." - added
Output schema / properties / pagination / properties / offset / descriptionAdded value: +"Items skipped before this page."
- Changed
list_projects6 fields changed- added
Output schema / properties / data / descriptionAdded value: +"Items on this page." - added
Output schema / properties / data / items / properties / createdAt / descriptionAdded value: +"ISO 8601 time the project was created." - added
Output schema / properties / data / items / properties / name / descriptionAdded value: +"Display name of the project." - added
Output schema / properties / data / items / properties / updatedAt / descriptionAdded value: +"ISO 8601 time the project last changed." - added
Output schema / properties / pagination / properties / limit / descriptionAdded value: +"Page size used for this response." - added
Output schema / properties / pagination / properties / offset / descriptionAdded value: +"Items skipped before this page."
- Changed
list_references3 fields changed- added
Output schema / properties / data / descriptionAdded value: +"Items on this page." - added
Output schema / properties / pagination / properties / limit / descriptionAdded value: +"Page size used for this response." - added
Output schema / properties / pagination / properties / offset / descriptionAdded value: +"Items skipped before this page."
11 tool updates
- First observed
cancel_design_run - First observed
create_project - First observed
delete_project - First observed
design - First observed
get_component - First observed
get_design_run - First observed
get_project - First observed
list_components - First observed
list_projects - First observed
list_references - First observed
screenshot
Publisher details
- Operator
- https://sleek.design
- Operator website
- https://sleek.design
- Vendor relationship
- First-party
- Documentation
- https://sleek.design/agents
- Trust center
- Unknown
- Restrictions
- Unknown
Related MCP Connectors
Your AI agent designs editable, clickable UI prototypes on a live canvas.
Build and edit app screen mockups and clickable prototypes from your AI assistant.
Design mobile app screens with AI — describe your app, get linked screens instantly.
A design agent in your coding agent's loop: briefs each screen, reviews UX and visual quality.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnable AI agents to autonomously build and deploy full-stack mobile applications.1-
- AlicenseAqualityDmaintenanceTurns AI coding hosts into a guided mobile-UI design tool with design interviews, token contracts, linters, and local browser preview.87 npmMIT
- AlicenseNot gradedqualityCmaintenanceYour AI coding agent tests pages, copy, and flows on simulated users while building.8 npm1MIT
- AlicenseNot gradedqualityBmaintenanceLets a coding agent hand a plain-language app idea to a hosted AI software team that shapes, designs, builds, tests and deploys it, returning a one-time link into the full build workspace. Also lists your apps with their stage, pending approvals and live addresses after a standard OAuth sign-in.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.