Skip to main content
Glama

Server Details

Serves your design system and coding standards to coding agents, so they stop guessing.

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
MariuszHenn/tseha-mcp
GitHub Stars
0

Available Tools

9 tools
get_componentGet component specA
Read-only
Inspect

Returns the full specification for one component: import path, props schema, usage example, anti-patterns, when-to-use and when-not-to-use notes, Figma spec, and dependencies. Read-only. Call it before writing code that uses a component, so props and import path come from the design system instead of memory. The name argument must be the exact component name as returned by list_components or search_components (case-sensitive, no package prefix); an unknown name returns a not-found error rather than a near match, so resolve the name first with search_components if you are guessing. The result may carry a provenance warning when the record was LLM-generated and not yet reviewed - treat those fields as unverified. It covers one component at a time; use list_components to enumerate and get_component_updates for version-to-version changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesExact component name, e.g. "Button"
project_idYesUUID as returned by list_projects - not the project name, title, or slug, and not guessable. Fetch it once and reuse the same id across tools. An id outside the caller's organization returns "Project not found or access denied" rather than empty data, and a project withheld by a plan limit returns a plan error that retrying cannot clear. The component must belong to a package assigned to this project; a name that exists elsewhere in the organization is still not found here.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With only readOnlyHint in the annotations, the description carries the full behavioral burden and delivers thoroughly: it confirms read-only semantics, discloses exact-match case-sensitive name lookup with a not-found error instead of near matches, warns about provenance of LLM-generated records to treat as unverified, and documents project-scoped error behavior including plan errors retrying cannot clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Six sentences, each earning its place. The key purpose and read-only safety statement are front-loaded, followed by param semantics, provenance caveat, and routing rules — no filler and no duplication of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with no output schema and only readOnlyHint by design, the description fully covers what is returned, when to call it, how to prepare inputs, error outcomes, and provenance caveats. An agent can select and invoke this tool correctly from the description alone, with the 100%-covered schema providing remaining parameter-level detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds meaningful context above — name must be exactly as returned by list_components or search_components (case-sensitive, no package prefix, no near-match fallback) and recommends resolving the name first when in doubt. This is useful but incremental beyond the already-rich schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb-plus-resource: 'Returns the full specification for one component' and enumerates the delivered contents (import path, props schema, usage example, anti-patterns, when-to-use notes, Figma spec, dependencies). It also distinguishes itself from sibling tools by naming what it is not for: enumerating components and per-version changes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use guidance is included: 'Call it before writing code that uses a component' so props and import paths come from the design system instead of memory. It also gives explicit alternatives with conditions — use list_components to enumerate, get_component_updates for version changes, and search_components to resolve a guessed name before calling this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_component_updatesGet component updatesA
Read-only
Inspect

Returns per-component breaking changes and a migration guide between an installed version of the project's active component package and the latest published version. Read-only: it reports an upgrade, it never performs one. Use it when planning or reviewing a component-library upgrade, or before bumping the package version in a manifest. current_version is the exact semver currently installed, e.g. "1.0.0" - not a range, so no leading "v", "^", or "~"; read it from list_packages when unsure. Passing the latest version returns an empty change set. It is not a per-component changelog and not a current spec - use get_component for one component today, and list_packages for what is installed. Requires update tracking, a Team plan feature; on lower plans it returns an upgrade-required error instead of data.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesUUID as returned by list_projects - not the project name, title, or slug, and not guessable. Fetch it once and reuse the same id across tools. An id outside the caller's organization returns "Project not found or access denied" rather than empty data, and a project withheld by a plan limit returns a plan error that retrying cannot clear. Changes are computed against this project's active package, so current_version must be the version of that package and not of some other dependency.
current_versionYesThe version currently installed, e.g. "1.0.0"

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation is reinforced with 'Read-only: it reports an upgrade, it never performs one,' and the description goes further by disclosing edge-case behavior (passing the latest version returns an empty change set) and the plan-dependent error. It also surfaces error behavior for an invalid project_id instead of silently returning data. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Seven sentences, each carrying non-redundant information: core result, read-only nature, use cases, version syntax, empty-set behavior, distinct-from alternatives, and plan requirement. The core purpose is front-loaded in the first sentence, and no filler or repeated schema content exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only 2-parameter tool with no output schema, this is as complete as needed: it explains the result shape, exact parameter syntax, source of truth for parameters, error conditions, and feature requirements. An agent can call this tool correctly on its first attempt.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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 critical semantic detail to both parameters: current_version must be an exact semver without 'v', '^', or '~', and project_id is a UUID from list_projects that cannot be guessed. It also clarifies the connection between the two parameters ('Changes are computed against this project's active package, so current_version must be the version of that package'), which the schema alone does not establish.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise verb-resource pair: 'Returns per-component breaking changes and a migration guide between an installed version ... and the latest published version.' It clearly differentiates this from siblings by naming what it is not ('not a per-component changelog and not a current spec') and pointing to get_component and list_packages as the alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is explicit: 'Use it when planning or reviewing a component-library upgrade, or before bumping the package version in a manifest.' It also defines exclusions and alternative tools, and states a hard prerequisite (update tracking Team plan) with the failure mode on lower plans. An agent can decide to use this tool vs others without ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_standardsGet development standardsA
Read-only
Inspect

Returns the organization's development standards: coding conventions, project structure, and framework-specific rules. Read-only. Call it before writing or reviewing code, so the result follows this organization's rules rather than general defaults. Call it first without a section to get an index of available sections, each with a note on what it covers, then call again with one section id copied from that index; inventing a section id returns a not-found error naming that step. Request only the sections a task needs - the full content of one section can be long. The framework argument is deprecated: use section with the "framework:" prefix instead. It returns prose rules, not data - use get_style_tokens for visual values and get_component for component APIs.

ParametersJSON Schema
NameRequiredDescriptionDefault
sectionNoSection identifier from the index, e.g. "global", "project_structure", "framework:react", "cicd". Omit to get the index.
frameworkNoDeprecated - use section instead. e.g. "react", "nextjs"
project_idYesUUID as returned by list_projects - not the project name, title, or slug, and not guessable. Fetch it once and reuse the same id across tools. An id outside the caller's organization returns "Project not found or access denied" rather than empty data, and a project withheld by a plan limit returns a plan error that retrying cannot clear. It resolves the organization whose standards are returned and decides which framework sections appear in the index.

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnly, but the description discloses important behavior: full sections can be long, inventing a section id returns a not-found error, project_id is not guessable and must come from list_projects, and that out-of-organization ids return an obfuscated error. It also clarifies that returns prose rules, not structured data. This adds considerable transparency beyond 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact yet dense, with each sentence adding a distinct behavioral or usage fact. It is front-loaded with the primary purpose and the 'Call it before' timing, then narrows down to workflow and alternatives. It carries no fluff or repetitive schema details, though the 'Read-only' is already in annotations; that duplication is minor.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there is no output schema, the description sufficiently explains the return behavior (index first, then section content) and error cases. It also covers prerequisites (project_id UUID, no guessing ids), constraints (limit to needed sections), and distinguishes prose rules from the data returned by sibling tools, so an AI agent can invoke the tool correctly and interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Even though schema coverage is 100%, the description adds substantial semantic value: section ids must come from the index, the framework parameter should be translated to a 'framework:' section prefix, and project_id is specifically a UUID from list_projects that resolves the org and controls which sections appear. This enrichment helps an agent select and reuse parameters correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns the organization's development standards: coding conventions, project structure, and framework-specific rules, with a specific verb 'returns' and resource. It also distinguishes itself from siblings by name, noting that get_style_tokens should be used for visual values and get_component for component APIs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage guidance is explicit and comprehensive: 'Call it before any code review or review' identifies the right moment to use it; 'Call it first without section' describes the two-step index-and-select workflow; and it tells the agent to request only needed sections and explicitly flags that the framework argument is deprecated. It also names direct alternatives for different data types, showing when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_styleGet style metadataA
Read-only
Inspect

Returns metadata for the project's active style: the style name, its Figma file key, when it was last synced, and a token count per available category (such as color, typography, spacing). Read-only and small - it names categories but returns no token values. Use it to inspect the project theme, or to learn which categories are populated before requesting values; call get_style_tokens for the values themselves. project_id is the only argument and it is not a plain filter: a style is assigned per project and there is no organization-level fallback, so sibling projects can report different style names and different populated categories, and a project with no style assigned returns a null style with a note rather than an error.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesUUID as returned by list_projects - not the project name, title, or slug, and not guessable. Fetch it once and reuse the same id across tools. An id outside the caller's organization returns "Project not found or access denied" rather than empty data, and a project withheld by a plan limit returns a plan error that retrying cannot clear. A style is assigned per project and there is no organization-level fallback, so sibling projects can report different styles and different populated categories, and a project with no style assigned returns a null style.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint=true annotation, the description discloses that the tool returns no token values, that style assignment is project-scoped with no organization-level fallback, and that a project with no style returns a null style with a note rather than an error. This is meaningful behavioral context that the annotation does not provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded and the core return semantics are stated immediately. The final sentence is useful but dense, mixing scoping rules with edge-case behavior; it is still economical and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one parameter, no output schema, and a safe annotation, this description is complete: it names the return fields, clarifies the absence of token values, names the recommended next tool, and covers the most relevant edge case. Nothing needed to call it correctly is left out.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes project_id at 100% coverage, so the baseline is 3. The description adds useful semantics by explaining that project_id is not a plain filter: styles are per-project, sibling projects can differ, and an unassigned style produces a null-style result. That extra meaning justifies moving above baseline without over-explain

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Returns metadata for the project's active style,' then lists exactly what is returned: name, Figma file key, last synced time, and token count per category. It also names the sibling get_style_tokens, so the agent can distinguish this tool without reading other definitions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says 'Use it to inspect the project theme, or to learn which categories are populated before requesting values; call get_style_tokens for the values themselves.' This gives explicit usage context and names the alternative, so the agent knows when this tool is preferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_style_tokensGet design tokensA
Read-only
Inspect

Returns the project's design tokens with their names, values, and token paths. Read-only. Use it to source exact visual values for styling instead of inventing hex codes, spacing, or radii. The category argument takes exactly one of: color, typography, spacing, radius, shadow, blur, all; omitting it behaves the same as "all". Pass a single category when you know which one you need - "all" returns the largest response this server produces. Use get_style first if you only need to know which categories exist, and get_standards for coding conventions, which are not tokens. A project with no style configured returns an empty token list with a note, not an error.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoOne of: color, typography, spacing, radius, shadow, blur, all
project_idYesUUID as returned by list_projects - not the project name, title, or slug, and not guessable. Fetch it once and reuse the same id across tools. An id outside the caller's organization returns "Project not found or access denied" rather than empty data, and a project withheld by a plan limit returns a plan error that retrying cannot clear. Tokens come from the style assigned to this project. A style is assigned per project with no organization-level fallback, so a project with no style assigned returns an empty token list, not the tokens of a sibling project.

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the read-only hint, the description discloses non-obvious behavior: omitting category is equivalent to 'all', 'all' returns the largest response this server produces, and an unconfigured project returns an empty token list with a note rather than an error. It also details plan/access error behavior for project_id, which is exactly the kind of context a caller needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a compact but information-dense paragraph. Each sentence earns its place: the first states the core return value, the second reinforces the read-only nature and primary intent, the third clarifies argument semantics, and the final covers alternatives and error behavior. No filler words, no repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With two params and no output schema, the description covers everything a caller could need: what tokens are, how category behaves, what the largest response is, how a missing style manifests, and how project_id errors appear. The inclusion of empty-list behavior and access-denied error messaging is thorough for a read-only tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Even though schema coverage is 100%, the description adds meaning that the schema alone does not: the category omission behavior ('behaves the same as all') and the project_id guidance ('not the project name, title, or slug... Fetch it once and reuse the same id', plus access/plan error scenarios). This significantly enriches what an agent knows before calling.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Returns' and the resource 'design tokens with their names, values, and token paths.' It stands out from siblings by explaining that get_style is for category discovery and get_standards is for coding conventions, so an agent can immediately tell this tool APIs apart without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly explains when to use it ('source exact visual values for styling instead of inventing hex codes, spacing, or radii'), when to use a single category, and names alternatives: 'Use get_style first if you only need to know which categories exist, and get_standards for coding conventions, which are not tokens.' A clear set of conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_componentsList UI componentsA
Read-only
Inspect

Lists every UI component in the project's design system, each with its name, source package, import path, and a short note on its intended use. Read-only and unpaginated: it returns the whole catalog across all packages assigned to the project, so expect a large response on big design systems. Use it to see what exists before building UI, and to get the exact component name other tools need. Do not use it to find a component by need - search_components ranks by description - and do not use it for props, examples, or Figma data, which only get_component returns. project_id is not a display filter: it selects the assigned packages, so two projects in one organization legitimately return different catalogs.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesUUID as returned by list_projects - not the project name, title, or slug, and not guessable. Fetch it once and reuse the same id across tools. An id outside the caller's organization returns "Project not found or access denied" rather than empty data, and a project withheld by a plan limit returns a plan error that retrying cannot clear. It selects the assigned packages that are enumerated, so two projects in one organization legitimately return different catalogs.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation covers safety, and the description adds meaningful behavioral context beyond it: the tool is unpaginated, returns the entire catalog, may produce a large response, and project_id is not a display filter but selects assigned packages. It also discloses that different projects in an organization can legitimately yield different catalogs. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average but every sentence earns its place: the core scope is front-loaded, followed by behavioral caveats, then explicit sibling routing. It communicates a lot of operational nuance without redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple signature, the read-only annotation, and the rich schema, the description is complete: it covers output content, size expectations, usage guidance, sibling routing, and project_id semantics. 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the project_id schema entries already explain UUID usage, 'not guessable', error behavior, and package selection. The description essentially restates this package-selection nuance without adding substantially new parameter-level semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource — 'Lists every UI component in the project's design system' — and enumerates what is returned (name, source package, import path, intended use). It also clearly differentiates itself from siblings by explicitly saying not to use it for finding by need (search_components) or for props/examples/Figma data (get_component).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit positive guidance: use it to see what exists before building UI and to get exact component names. It also gives explicit alternative routing: search_components for need-based search, get_component for props/examples/Figma data. This leaves no ambiguity about when to invoke this tool versus its siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_packagesList component packagesA
Read-only
Inspect

Lists the component packages assigned to a project, each with its name, version, and description, and marks which one is active. Read-only. Use it to decide which npm package to import from, or to read the installed version before calling get_component_updates. It lists packages, not their contents - use list_components to enumerate components and get_component for one component API. project_id is the only argument and it does more than filter output: assignment and active-package status are per project, so one organization package can be listed as active here and absent from a sibling project.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesUUID as returned by list_projects - not the project name, title, or slug, and not guessable. Fetch it once and reuse the same id across tools. An id outside the caller's organization returns "Project not found or access denied" rather than empty data, and a project withheld by a plan limit returns a plan error that retrying cannot clear. Assignment and active-package status are per project, so one organization package can be active here and absent from a sibling project.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description discloses a non-obvious behavioral trait: assignment and active-package status are per project, so the same organization package can be active in one project and absent in a sibling. This provides useful context that annotations alone do not convey. The 'Read-only' confirmation is consistent but redundant with the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is organized with purpose, use case, alternatives, and parameter semantics all present, and each sentence earns its place. It is slightly longer than strictly necessary because the per-project semantics appear in both the schema and the description, but it remains efficient and readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter, read-only tool with no output schema, this description provides a fully sufficient picture: return fields, decision context, sibling routing, and the key per-project behavior. The output schema absence does not leave an information gap because the description enumerates the return fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the project_id parameter schema already describes the UUID format, per-project semantics, error behavior, and plan limits. The description adds only framing ('the only argument', 'does more than filter'), which is helpful but adds minimal new meaning over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Lists'), the exact fields returned (name, version, description, active marker), and clearly differentiates from list_components and get_component. An agent can tell exactly what this tool does and how it differs from its siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use the tool ('to decide which npm package to import from', 'before calling get_component_updates') and what NOT to use it for, pointing to list_components and get_component as the alternatives. This is full usage guidance with no ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_projectsList projectsA
Read-only
Inspect

Lists the projects in this organization, each with its id, name, and framework. Read-only, takes no arguments, and returns only the projects the calling credential may see. Call it first in a session: the returned id is the project_id that every other tool in this server requires, and guessing that id fails. It does not return components, packages, or tokens - use list_components, list_packages, or get_style_tokens for those.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description discloses meaningful behavioral traits: it is credential-scoped ('only the projects the calling credential may see'), it takes no arguments, its results are mandatory for subsequent calls, and it explicitly excludes components, packages, and tokens. This materially helps the agent predict side effects and prerequisites.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four sentences, each earning its place: output content, read-only and scoping, usage ordering, and explicit exclusions with alternative tools. It is front-loaded and dense without extraneous detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only tool, this description covers what an agent needs: return shape, auth scoping, why it must be called first, and what it is not responsible for. No critical operational context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema is empty, so there are no parameter semantics to clarify; the 0-parameter baseline of 4 applies. The description still confirms 'takes no arguments,' matching the schema without contradiction.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb plus resource ('Lists the projects in this organization') and states exactly what fields are returned (id, name, framework). It explicitly contrasts with sibling tools like list_components, list_packages, and get_style_tokens, making the tool's scope unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage guidance: 'Call it first in a session' and explains that the returned id is the project_id required by every other tool and that guessing it fails. It also names alternatives for components, packages, and tokens, so when-not-to-use is crystal clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_componentsSearch componentsA
Read-only
Inspect

Searches the components of every package assigned to the project by use case, behavior, or description, and returns up to 10 ranked matches with a relevance score. Read-only. Use it when you can describe what the UI must do but do not know the component name. The query is free-text describing the need, such as "date range picker" or "dismissible inline warning" - not a component name, not a glob, and not a props expression. Do not use it when the exact name is known (get_component is direct and returns the full spec) or when you want the complete catalog (list_components). Semantic ranking needs AI features on the Team plan or above; on other plans it falls back to name and import-path matching and the score is null. No close match returns an empty result list, not an error.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesFree-text description of the need - a use case, behavior, or purpose, e.g. "date range picker". Not a component name and not a glob.
project_idYesUUID as returned by list_projects - not the project name, title, or slug, and not guessable. Fetch it once and reuse the same id across tools. An id outside the caller's organization returns "Project not found or access denied" rather than empty data, and a project withheld by a plan limit returns a plan error that retrying cannot clear. It bounds the search to the packages assigned to this project, so the same query returns different matches for different projects.

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description discloses ranking behavior, the 10-result limit, relevance scoring, semantic-search fallback on lower plans with a null score, and empty-result behavior (empty list, not an error). This gives the agent realistic expectations about return values and plan-dependent behavior, and it does not contradict 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but not padded; each sentence carries a distinct piece of guidance: what it does, read-only nature, when to use it, query format, exclusions, plan-based fallback, and error behavior. It front-loads the core purpose and follows with necessary constraints and caveats.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is no output schema, the description still covers the return shape, scoring behavior, empty behavior, and plan-dependent variations. It also covers the most important project_id hazards that could otherwise trip up an agent. The combination of annotation(s), schema coverage, and description leaves no critical gap for invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although the schema already documents both parameters with 100% coverage, the description adds meaningful usage semantics beyond field names: queries must describe use case/need, not component names; project_id must be fetched from list_projects, is not guessable, must be reused, bounds results to a project, and can yield access-denied vs plan-specific failures. This materially helps correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: searching the components assigned to a project by use case/behavior/description, returning up to 10 ranked matches with a relevance score. It also explicitly distinguishes itself from get_component and list_components, so an agent can tell it apart without reading sibling schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit when-to-use condition ('when you can describe what the UI must do but do not know the component name') and clear when-not-to-use guidance with named alternatives ('do not use it when the exact name is known... get_component is direct' and 'list_components' for a full catalog). The text also warns about free-text query semantics versus globs/props expressions.

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. Dates show when Glama detected each change.

  1. 2 tool updates
    • Changedget_style1 field changed
      • changedInput schema / properties / project_id / description
        Previous value: -"UUID as returned by list_projects - not the project name, title, or slug, and not guessable. Fetch it once and reuse the same id across tools. An id outside the caller's organization returns \"Project not found or access denied\" rather than empty data, and a project withheld by a plan limit returns a plan error that retrying cannot clear. The active style is resolved per project: a project-level override beats the organization default, so sibling projects can report different styles and different populated categories."New value: +"UUID as returned by list_projects - not the project name, title, or slug, and not guessable. Fetch it once and reuse the same id across tools. An id outside the caller's organization returns \"Project not found or access denied\" rather than empty data, and a project withheld by a plan limit returns a plan error that retrying cannot clear. A style is assigned per project and there is no organization-level fallback, so sibling projects can report different styles and different populated categories, and a project with no style assigned returns a null style."
    • Changedget_style_tokens1 field changed
      • changedInput schema / properties / project_id / description
        Previous value: -"UUID as returned by list_projects - not the project name, title, or slug, and not guessable. Fetch it once and reuse the same id across tools. An id outside the caller's organization returns \"Project not found or access denied\" rather than empty data, and a project withheld by a plan limit returns a plan error that retrying cannot clear. Tokens come from the style this project resolves to, which may be a project-level override rather than the organization default."New value: +"UUID as returned by list_projects - not the project name, title, or slug, and not guessable. Fetch it once and reuse the same id across tools. An id outside the caller's organization returns \"Project not found or access denied\" rather than empty data, and a project withheld by a plan limit returns a plan error that retrying cannot clear. Tokens come from the style assigned to this project. A style is assigned per project with no organization-level fallback, so a project with no style assigned returns an empty token list, not the tokens of a sibling project."
  2. 8 tool updates
    • Changedget_component1 field changed
      • changedInput schema / properties / project_id / description
        Previous value: -"Project ID from list_projects"New value: +"UUID as returned by list_projects - not the project name, title, or slug, and not guessable. Fetch it once and reuse the same id across tools. An id outside the caller's organization returns \"Project not found or access denied\" rather than empty data, and a project withheld by a plan limit returns a plan error that retrying cannot clear. The component must belong to a package assigned to this project; a name that exists elsewhere in the organization is still not found here."
    • Changedget_component_updates1 field changed
      • changedInput schema / properties / project_id / description
        Previous value: -"Project ID from list_projects"New value: +"UUID as returned by list_projects - not the project name, title, or slug, and not guessable. Fetch it once and reuse the same id across tools. An id outside the caller's organization returns \"Project not found or access denied\" rather than empty data, and a project withheld by a plan limit returns a plan error that retrying cannot clear. Changes are computed against this project's active package, so current_version must be the version of that package and not of some other dependency."
    • Changedget_standards1 field changed
      • changedInput schema / properties / project_id / description
        Previous value: -"Project ID from list_projects"New value: +"UUID as returned by list_projects - not the project name, title, or slug, and not guessable. Fetch it once and reuse the same id across tools. An id outside the caller's organization returns \"Project not found or access denied\" rather than empty data, and a project withheld by a plan limit returns a plan error that retrying cannot clear. It resolves the organization whose standards are returned and decides which framework sections appear in the index."
    • Changedget_style1 field changed
      • changedInput schema / properties / project_id / description
        Previous value: -"Project ID from list_projects"New value: +"UUID as returned by list_projects - not the project name, title, or slug, and not guessable. Fetch it once and reuse the same id across tools. An id outside the caller's organization returns \"Project not found or access denied\" rather than empty data, and a project withheld by a plan limit returns a plan error that retrying cannot clear. The active style is resolved per project: a project-level override beats the organization default, so sibling projects can report different styles and different populated categories."
    • Changedget_style_tokens1 field changed
      • changedInput schema / properties / project_id / description
        Previous value: -"Project ID from list_projects"New value: +"UUID as returned by list_projects - not the project name, title, or slug, and not guessable. Fetch it once and reuse the same id across tools. An id outside the caller's organization returns \"Project not found or access denied\" rather than empty data, and a project withheld by a plan limit returns a plan error that retrying cannot clear. Tokens come from the style this project resolves to, which may be a project-level override rather than the organization default."
    • Changedlist_components1 field changed
      • changedInput schema / properties / project_id / description
        Previous value: -"Project ID from list_projects"New value: +"UUID as returned by list_projects - not the project name, title, or slug, and not guessable. Fetch it once and reuse the same id across tools. An id outside the caller's organization returns \"Project not found or access denied\" rather than empty data, and a project withheld by a plan limit returns a plan error that retrying cannot clear. It selects the assigned packages that are enumerated, so two projects in one organization legitimately return different catalogs."
    • Changedlist_packages1 field changed
      • changedInput schema / properties / project_id / description
        Previous value: -"Project ID from list_projects"New value: +"UUID as returned by list_projects - not the project name, title, or slug, and not guessable. Fetch it once and reuse the same id across tools. An id outside the caller's organization returns \"Project not found or access denied\" rather than empty data, and a project withheld by a plan limit returns a plan error that retrying cannot clear. Assignment and active-package status are per project, so one organization package can be active here and absent from a sibling project."
    • Changedsearch_components1 field changed
      • changedInput schema / properties / project_id / description
        Previous value: -"Project ID from list_projects"New value: +"UUID as returned by list_projects - not the project name, title, or slug, and not guessable. Fetch it once and reuse the same id across tools. An id outside the caller's organization returns \"Project not found or access denied\" rather than empty data, and a project withheld by a plan limit returns a plan error that retrying cannot clear. It bounds the search to the packages assigned to this project, so the same query returns different matches for different projects."
  3. 1 tool update
    • Changedsearch_components1 field changed
      • addedInput schema / properties / query / description
        Added value: +"Free-text description of the need - a use case, behavior, or purpose, e.g. \"date range picker\". Not a component name and not a glob."
  4. 9 tool updates
    • First observedget_component
    • First observedget_component_updates
    • First observedget_standards
    • First observedget_style
    • First observedget_style_tokens
    • First observedlist_components
    • First observedlist_packages
    • First observedlist_projects
    • First observedsearch_components

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Design contract layer for AI agents. Scans Figma, code, Storybook, and token files, reconciles conflicts, and serves a single machine-readable source of truth so every agent gets the same authoritative design rules before it builds. Local-first.
    6
    1,205
    19
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server that exposes your design system components and tokens to AI agents, preventing duplicate component creation and hardcoded token values.
    18
    9
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.8/5.0
Disambiguation5/5

Each tool has a clearly distinct resource and role: enumeration (list_*), lookup (get_*), search, updates, and metadata. Even the closely related list_components and search_components are sharply separated by exact-name enumeration versus ranked by-use-case search.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern, using either list_* for enumerations or get_* for single-item or metadata lookups. Naming choices clearly signal the operation type and resource without exceptions.

Tool Count5/5

With 9 tools, the server is well-scoped for read-only access to a project's design system, component catalog, standards, and style tokens. Each tool has a distinct responsibility and none feel redundant or superfluous.

Completeness5/5

The surface fully covers the read-only domain: project discovery, package listing, component enumeration and search, component details, version updates, standards, and style tokens. It leaves no obvious dead ends for an agent needing design system information.