Skip to main content
Glama

PartForge

Add a font to a forge

fetch_web_font

Fetch an open-licensed font from the Google Fonts catalog and attach it to a forge as a source file. Returns a pfc-asset:// token to declare in the part's fonts: field — then render text with k.text2d(str, {font: ""}). family is the catalog family name (e.g. "Roboto"); variant defaults to regular.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
familyYes
forgeIdYesThe forge's id or its slug, exactly as list_forges or get_forge returned it.
variantNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already flag a non-destructive, open-world mutation. The description adds real value on top: the source is the Google Fonts catalog (consistent with openWorldHint), the effect is attaching a source file to the forge, and the return is a pfc-asset:// token — notable since there is no output schema. Gaps remain on failure behavior (unknown family) and whether repeated calls duplicate assets.

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?

Three tight sentences, front-loaded with the action and scope, followed by the integration token and the per-parameter clarifications. No filler or repetition of the schema.

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

Completeness4/5

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

For a 3-parameter mutating tool with no output schema and only 33% schema coverage, the description covers purpose, return value, and post-call usage adequately. It leaves edge cases (invalid family, variant format, re-fetch/idempotency) unaddressed but is otherwise sufficient to call the tool correctly.

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 coverage is only 33% (only forgeId is documented), so the description must compensate, and it largely does: `family` is defined as the catalog family name with an example ('Roboto') and `variant` is said to default to regular. It stops short of giving the accepted variant syntax (e.g. bold/italic vs numeric weight).

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?

States a specific verb and resource ('Fetch an open-licensed font from the Google Fonts catalog') plus its side effect ('attach it to a forge as a source file'). No sibling tool deals with fonts, and the downstream linkage (pfc-asset:// token, k.text2d rendering) makes the intent unmistakable.

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

Usage Guidelines4/5

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

Tells the agent exactly where the result goes: declare the returned token in the part's `fonts:` field, then use it in k.text2d. That is clear contextual guidance for when this tool is needed, but there is no explicit when-not or named alternative for obtaining fonts by other means.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources