# SVG Lab (app.svglab/svglab): tool descriptions scored

- tools/list taken: 2026-11-02 (UTC)
- From: [Official MCP Registry](https://registry.modelcontextprotocol.io/v0/servers/app.svglab%2Fsvglab/versions/latest)
- Connected to: https://svglab.app/mcp/agents
- Homepage: https://svglab.app/mcp-server
- Repository: https://github.com/ottoman9/svglab-mcp
- Scoring rules: v2
- Tools: 90
- Average: 27.9 / 100 (Rain)
- Near-identical pairs: 18

This page shows how SVG Lab (app.svglab/svglab)'s tool descriptions scored, the issues found and the names of its tools and parameters. The descriptions are the server's own: read them where the copy came from.

Forecall asked the URL this server lists in the official MCP Registry for its tools/list once, on the date above, without calling any tool. The server may have changed since.

## Across the server

- Major: 90 tools. Above 40, models choose less accurately.
- Minor: 18 pairs with nearly the same description in all; the top 12 are shown.

## Tools

- `describe_document`: 13 / 100
  - Major: The description only restates the name (5 words).
  - Major: The description is too short (5 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: artboard, name_contains, ids, limit, offset.
  - Minor: String arguments with no constraint or example: name_contains.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `group`: 13 / 100
  - Major: The description only restates the name (2 words).
  - Major: The description is too short (2 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_ids, artboard, name.
  - Minor: String arguments with no constraint or example: name.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `list_shapes`: 13 / 100
  - Major: The description only restates the name (8 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: artboard, group, name_contains, limit, offset, all.
  - Minor: String arguments with no constraint or example: group, name_contains.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument all is unclear.
  - Minor: Says nothing about what it returns.
- `place_symbol`: 13 / 100
  - Major: The description only restates the name (6 words).
  - Major: The description is too short (6 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: symbol_id, name, x, y.
  - Minor: String arguments with no constraint or example: symbol_id, name.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `check_contrast`: 16 / 100
  - Major: The description only restates the name (6 words).
  - Major: The description is too short (6 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: foreground, background, target, font_size, font_weight.
  - Minor: String arguments with no constraint or example: foreground, background.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `clip_shapes`: 16 / 100
  - Major: The description only restates the name (7 words).
  - Major: The description is too short (7 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: target_ids, clip_id, as_mask.
  - Minor: String arguments with no constraint or example: clip_id.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument as_mask is unclear.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: target_ids, clip_id. Name the tool or the place that returns it, or models look it up first.
- `create_icon`: 16 / 100
  - Major: The description only restates the name (9 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: icon, x, y, size, color, stroke_width, artboard, name.
  - Minor: String arguments with no constraint or example: icon, color, name.
  - Minor: Says nothing about what it returns.
- `detach_symbol`: 16 / 100
  - Major: The description only restates the name (7 words).
  - Major: The description is too short (7 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_id.
  - Minor: String arguments with no constraint or example: shape_id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_id. Name the tool or the place that returns it, or models look it up first.
- `inspect_path`: 16 / 100
  - Major: The description only restates the name (9 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_id, audit, display_width, corners, corners[].subpath, corners[].index, preview, subpath_index, anchor_indices, crop, crop.x, crop.y, crop.width, crop.height, max_size, background.
  - Minor: String arguments with no constraint or example: shape_id, background.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument audit is unclear.
  - Minor: The meaning of the boolean argument preview is unclear.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_id. Name the tool or the place that returns it, or models look it up first.
- `make_symbol`: 16 / 100
  - Major: The description only restates the name (6 words).
  - Major: The description is too short (6 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_ids, name.
  - Minor: String arguments with no constraint or example: name.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_ids. Name the tool or the place that returns it, or models look it up first.
- `name_group`: 16 / 100
  - Major: The description only restates the name (3 words).
  - Major: The description is too short (3 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: group, name.
  - Minor: String arguments with no constraint or example: group, name.
  - Minor: Says nothing about what it returns.
- `open_project`: 16 / 100
  - Major: The description only restates the name (4 words).
  - Major: The description is too short (4 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: project_id.
  - Minor: String arguments with no constraint or example: project_id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: project_id. Name the tool or the place that returns it, or models look it up first.
- `set_filter`: 16 / 100
  - Major: The description only restates the name (9 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_ids, blur, shadow, shadow.dx, shadow.dy, shadow.blur, shadow.color, shadows, shadows[].dx, shadows[].dy, shadows[].blur, shadows[].color, shadows[].opacity, opacity, region, region.x, region.y, region.width, region.height, artboard.
  - Minor: String arguments with no constraint or example: shadow.color, shadows[].color.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_ids. Name the tool or the place that returns it, or models look it up first.
- `set_pattern`: 16 / 100
  - Major: The description only restates the name (6 words).
  - Major: The description is too short (6 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_ids, pattern, color.
  - Minor: String arguments with no constraint or example: pattern, color.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_ids. Name the tool or the place that returns it, or models look it up first.
- `clip_to_artboard`: 18 / 100
  - Major: The description only restates the name (8 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: artboard, shape_ids, include_clipped.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The meaning of the boolean argument include_clipped is unclear.
  - Minor: Says nothing about what it returns.
- `measure_text`: 18 / 100
  - Major: The description only restates the name (9 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: opacity, content, font_size, font_family, font_weight, font_style, text_anchor, vertical_anchor, letter_spacing, line_height, max_width.
  - Minor: String arguments with no constraint or example: content, font_family, font_weight.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `place_image`: 18 / 100
  - Major: The description only restates the name (6 words).
  - Major: The description is too short (6 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: data_url, url, photo, photo.query, photo.orientation, photo.source, photo.index, x, y, width, height, fit, corner_radius, scrim, artboard, name.
  - Minor: String arguments with no constraint or example: data_url, url, photo.query, name.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `set_text`: 18 / 100
  - Major: The description only restates the name (5 words).
  - Major: The description is too short (5 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_ids, content, font_size, font_family, font_weight, font_style, letter_spacing, line_height, text_anchor.
  - Minor: String arguments with no constraint or example: content, font_family, font_weight.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_ids. Name the tool or the place that returns it, or models look it up first.
- `text_on_path`: 18 / 100
  - Major: The description only restates the name (7 words).
  - Major: The description is too short (7 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: text_id, path_id, offset, side, flipped.
  - Minor: String arguments with no constraint or example: text_id, path_id.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument flipped is unclear.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: text_id, path_id. Name the tool or the place that returns it, or models look it up first.
- `search_photos`: 19 / 100
  - Major: The description only restates the name (9 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: query, orientation, source, limit, preview.
  - Minor: String arguments with no constraint or example: query.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument preview is unclear.
  - Minor: Says nothing about what it returns.
- `align`: 21 / 100
  - Major: The description only restates the name (8 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_ids, mode.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_ids. Name the tool or the place that returns it, or models look it up first.
- `delete_shapes`: 21 / 100
  - Major: The description only restates the name (2 words).
  - Major: The description is too short (2 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_ids.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_ids. Name the tool or the place that returns it, or models look it up first.
- `flip`: 21 / 100
  - Major: The description only restates the name (5 words).
  - Major: The description is too short (5 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_ids, axis.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_ids. Name the tool or the place that returns it, or models look it up first.
- `set_active_artboard`: 21 / 100
  - Major: The description only restates the name (6 words).
  - Major: The description is too short (6 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: artboard.
  - Minor: Says nothing about what it returns.
- `snap_to_grid`: 21 / 100
  - Major: The description only restates the name (5 words).
  - Major: The description is too short (5 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_ids, as_unit, grid, size, artboard.
  - Minor: The meaning of the boolean argument as_unit is unclear.
  - Minor: The meaning of the boolean argument size is unclear.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_ids. Name the tool or the place that returns it, or models look it up first.
- `apply_layout_fixes`: 22 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: target, artboard, group, shape_ids, min_font_size, ignore_pairs, containment, containment[].child_id, containment[].parent_id, containment[].padding, containment[].horizontal, containment[].vertical.
  - Minor: String arguments with no constraint or example: group, containment[].child_id, containment[].parent_id.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `check_contacts`: 22 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: pairs, pairs[].a, pairs[].b, pairs[].expect, attachments, attachments[].shape_id, attachments[].end, attachments[].into, tolerance, artboard, display_width.
  - Minor: String arguments with no constraint or example: pairs[].a, pairs[].b, attachments[].shape_id, attachments[].into.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `inspect_layout`: 22 / 100
  - Major: The description is too short (7 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: target, artboard, group, shape_ids, min_font_size, ignore_pairs, containment, containment[].child_id, containment[].parent_id, containment[].padding, containment[].horizontal, containment[].vertical.
  - Minor: String arguments with no constraint or example: group, containment[].child_id, containment[].parent_id.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `reorder`: 22 / 100
  - Major: The description is too short (3 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_ids, mode, reference_id.
  - Minor: String arguments with no constraint or example: reference_id.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_ids. Name the tool or the place that returns it, or models look it up first.
- `smooth_path`: 22 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_id, mode, protect, protect[].subpath, protect[].index, corners, corners[].subpath, corners[].index, display_width, split_extrema, tolerance, corner_angle, tension, subpath_index, ink.
  - Minor: String arguments with no constraint or example: shape_id.
  - Minor: The meaning of the boolean argument split_extrema is unclear.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_id. Name the tool or the place that returns it, or models look it up first.
- `upload_asset`: 22 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: url, data_url, asset_id, as, x, y, width, height, fit, corner_radius, scrim, artboard, name, purpose, shape_ids, tile_size.
  - Minor: String arguments with no constraint or example: url, data_url, asset_id, name.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `fit_to_children`: 23 / 100
  - Major: The description is too short (7 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: container_id, child_ids, padding.
  - Minor: String arguments with no constraint or example: container_id.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: container_id, child_ids. Name the tool or the place that returns it, or models look it up first.
- `resolve_overflow`: 23 / 100
  - Major: The description is too short (6 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_ids, artboard, container_id, padding, shrink.
  - Minor: String arguments with no constraint or example: container_id.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument shrink is unclear.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_ids. Name the tool or the place that returns it, or models look it up first.
- `set_gradient`: 23 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_ids, type, stops, stops[].offset, stops[].color, stops[].opacity, angle, focal_x, focal_y, target, units, spread, coordinates, coordinates.x1, coordinates.y1, coordinates.x2, coordinates.y2, coordinates.cx, coordinates.cy, coordinates.r, coordinates.fx, coordinates.fy, coordinates.fr, def_id, artboard.
  - Minor: String arguments with no constraint or example: stops[].color, def_id.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_ids. Name the tool or the place that returns it, or models look it up first.
- `set_style`: 23 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_ids, fill, stroke, stroke_width, stroke_linecap, stroke_linejoin, stroke_taper, stroke_taper_amount, opacity.
  - Minor: String arguments with no constraint or example: fill, stroke.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_ids. Name the tool or the place that returns it, or models look it up first.
- `read_screen`: 24 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: artboard, node, max_nodes.
  - Minor: String arguments with no constraint or example: node.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `boolean_op`: 25 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: op, shape_ids.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_ids. Name the tool or the place that returns it, or models look it up first.
- `distribute`: 25 / 100
  - Major: The description is too short (6 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_ids, axis.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_ids. Name the tool or the place that returns it, or models look it up first.
- `measure_optical_center`: 25 / 100
  - Major: The description is too short (7 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_ids, container_id, axis.
  - Minor: String arguments with no constraint or example: container_id.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_ids, container_id. Name the tool or the place that returns it, or models look it up first.
- `scatter`: 25 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: region, count, item, item.type, seed, size_jitter, rotation_jitter, min_distance, avoid_ids, artboard, name.
  - Minor: String arguments with no constraint or example: name.
  - Minor: Says nothing about what it returns.
- `ungroup`: 25 / 100
  - Major: The description is too short (5 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_ids.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_ids. Name the tool or the place that returns it, or models look it up first.
- `bind_slot`: 26 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_ids, layout_id, path, mode, clip, detach.
  - Minor: String arguments with no constraint or example: layout_id, path.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument clip is unclear.
  - Minor: The meaning of the boolean argument detach is unclear.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_ids. Name the tool or the place that returns it, or models look it up first.
- `export_code`: 26 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: format, artboards, file.
  - Minor: String arguments with no constraint or example: file.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `fit_artboard`: 26 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: padding.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `edit_path`: 27 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_id, artboard, subpath_index, move_points, move_points[].index, move_points[].x, move_points[].y, set_handles, insert_point, insert_point.index, insert_point.x, insert_point.y, delete_point, delete_point.index, set_points, set_tangent, set_tangent[].index, set_tangent[].tangent, set_tangent[].tension, set_tension, set_tension[].segment_start, set_tension[].tension, closed, smooth, tension.
  - Minor: String arguments with no constraint or example: shape_id.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The meaning of the boolean argument closed is unclear.
  - Minor: The meaning of the boolean argument smooth is unclear.
  - Minor: Says nothing about what it returns.
- `make_responsive`: 27 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: artboard, devices, sizes, sizes[].width, sizes[].height, sizes[].name.
  - Minor: String arguments with no constraint or example: sizes[].name.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `offset_path`: 27 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_id, distance.
  - Minor: String arguments with no constraint or example: shape_id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_id. Name the tool or the place that returns it, or models look it up first.
- `align_to_artboard`: 28 / 100
  - Major: The description is too short (6 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_ids, horizontal, vertical.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_ids. Name the tool or the place that returns it, or models look it up first.
- `duplicate`: 28 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_ids, offset.
  - Minor: The meaning of the boolean argument offset is unclear.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_ids. Name the tool or the place that returns it, or models look it up first.
- `look`: 28 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: artboard, artboards, flow, before_after, region.x, region.y, region.width, region.height, scale, critique, brief.
  - Minor: String arguments with no constraint or example: brief, reference_id.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The meaning of the boolean argument flow is unclear.
  - Minor: The meaning of the boolean argument before_after is unclear.
  - Minor: The meaning of the boolean argument critique is unclear.
  - Minor: Says nothing about what it returns.
- `normalize_radii`: 28 / 100
  - Major: The description is too short (5 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_ids, radius.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_ids. Name the tool or the place that returns it, or models look it up first.
- `normalize_spacing`: 28 / 100
  - Major: The description is too short (6 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_ids, axis, gap.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_ids. Name the tool or the place that returns it, or models look it up first.
- `plan_illustrations`: 28 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: illustrations[].name, illustrations[].shows, illustrations[].screens.
  - Minor: String arguments with no constraint or example: illustrations[].name, illustrations[].shows.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `repeat`: 28 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_ids, mode, count, axis, gap, columns, row_gap, artboard, radius, center_x, center_y, rotate.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument rotate is unclear.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_ids. Name the tool or the place that returns it, or models look it up first.
- `resize`: 28 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_ids, width, height, anchor.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_ids. Name the tool or the place that returns it, or models look it up first.
- `set_locked`: 28 / 100
  - Major: The description is too short (4 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_ids, locked.
  - Minor: The meaning of the boolean argument locked is unclear.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_ids. Name the tool or the place that returns it, or models look it up first.
- `transform`: 28 / 100
  - Major: The description is too short (5 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_ids, dx, dy, scale, rotate.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_ids. Name the tool or the place that returns it, or models look it up first.
- `design_tokens`: 29 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: preset, reset, set, user_named_fonts, imagery.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The meaning of the boolean argument reset is unclear.
  - Minor: Says nothing about what it returns.
- `get_assets`: 29 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: artboard, assets, format, scales.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `mirror`: 29 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: join, snap, shape_ids, axis, at, gap, artboard, merge.
  - Minor: The meaning of the boolean argument merge is unclear.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_ids. Name the tool or the place that returns it, or models look it up first.
- `optical_center`: 29 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_ids, container_id, axis.
  - Minor: String arguments with no constraint or example: container_id.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_ids, container_id. Name the tool or the place that returns it, or models look it up first.
- `pencil`: 29 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: name, style, style.fill, style.stroke, style.stroke_width, style.stroke_linecap, style.stroke_linejoin, style.stroke_taper, style.stroke_taper_amount, style.opacity, opacity, style_ref, artboard, points, points[].x, points[].y, points[].hin, points[].hout, points[].tangent, points[].tangent_in, points[].tangent_out, points[].tension, points[].tension_in, points[].tension_out, points[].corner, closed, wobble, wobble_units, ink.
  - Minor: String arguments with no constraint or example: name, style.fill, style.stroke, style_ref.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The meaning of the boolean argument points[].corner is unclear.
  - Minor: The meaning of the boolean argument closed is unclear.
  - Minor: Says nothing about what it returns.
- `update_layout`: 29 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: layout_id, verbose, patches[].path, patches[].set, patches[].props, patches[].children, patches[].remove, root, x, y, width, height.
  - Minor: String arguments with no constraint or example: layout_id, patches[].path.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The meaning of the boolean argument verbose is unclear.
  - Minor: Says nothing about what it returns.
- `set_artboard`: 30 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: artboard, width, height, x, y, name, background, show_background.
  - Minor: String arguments with no constraint or example: name, background.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The meaning of the boolean argument show_background is unclear.
  - Minor: Says nothing about what it returns.
- `create_path`: 31 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: name, style, style.fill, style.stroke, style.stroke_width, style.stroke_linecap, style.stroke_linejoin, style.stroke_taper, style.stroke_taper_amount, style.opacity, opacity, style_ref, artboard, points, points[].x, points[].y, points[].tangent, points[].tangent_in, points[].tangent_out, points[].tension, points[].tension_in, points[].tension_out, points[].corner, closed, mirror.axis, mirror.at, mirror.snap, fill_handles, corner_angle, smooth, tension, subpaths.
  - Minor: String arguments with no constraint or example: name, style.fill, style.stroke, style_ref.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The meaning of the boolean argument points[].corner is unclear.
  - Minor: The meaning of the boolean argument closed is unclear.
  - Minor: The meaning of the boolean argument fill_handles is unclear.
  - Minor: The meaning of the boolean argument smooth is unclear.
  - Minor: Says nothing about what it returns.
- `define_styles`: 32 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: styles.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `fit_to_box`: 32 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_ids, x, y, width, height, mode, artboard.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_ids. Name the tool or the place that returns it, or models look it up first.
- `export_artboard`: 33 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: artboard, outline_text, background.
  - Minor: String arguments with no constraint or example: background, export_id.
  - Minor: The meaning of the boolean argument outline_text is unclear.
  - Minor: Says nothing about what it returns.
- `add_artboard`: 34 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: width, height, x, y, name, background, show_background.
  - Minor: String arguments with no constraint or example: name, background.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The meaning of the boolean argument show_background is unclear.
  - Minor: Says nothing about what it returns.
- `add_texture`: 36 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: shape_id, kind, angle, spacing, jitter, seed, color, width, opacity, coverage, ink, name.
  - Minor: String arguments with no constraint or example: shape_id, color, name.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: shape_id. Name the tool or the place that returns it, or models look it up first.
- `create_shapes`: 37 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: shapes, artboard.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `create_layout`: 38 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: verbose, artboard, x, y, width, height.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The meaning of the boolean argument verbose is unclear.
- `current_project`: 38 / 100
  - Major: The description only restates the name (7 words).
  - Major: The description is too short (7 words).
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `list_artboards`: 38 / 100
  - Major: The description only restates the name (3 words).
  - Major: The description is too short (3 words).
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `list_layouts`: 38 / 100
  - Major: The description only restates the name (5 words).
  - Major: The description is too short (5 words).
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `list_projects`: 38 / 100
  - Major: The description only restates the name (5 words).
  - Major: The description is too short (5 words).
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `list_symbols`: 38 / 100
  - Major: The description only restates the name (3 words).
  - Major: The description is too short (3 words).
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `pause_editor`: 38 / 100
  - Major: The description only restates the name (6 words).
  - Major: The description is too short (6 words).
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `compare_drawing`: 39 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: region.x, region.y, region.width, region.height, regions[].x, regions[].y, regions[].width, regions[].height, regions[].name, candidates[].name, candidates[].svg, ignore[].x, ignore[].y, ignore[].width, ignore[].height, measure.grid, measure.samples, measure.rows, measure.columns.
  - Minor: String arguments with no constraint or example: regions[].name, candidates[].name, candidates[].svg.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: reference_id. Name the tool or the place that returns it, or models look it up first.
- `new_project`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: name, imagery, planning.answers, planning.watch, planning.assumed.
  - Minor: String arguments with no constraint or example: name, planning.answers.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The meaning of the boolean argument planning.assumed is unclear.
  - Minor: Says nothing about what it returns.
- `export_document`: 43 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `list_design_styles`: 45 / 100
  - Major: The description is too short (3 words).
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `docs`: 46 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: tools, query.
  - Minor: String arguments with no constraint or example: query, skill.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `illustration_jobs`: 46 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `add_hidden_ui`: 48 / 100
  - Minor: Arguments without a description: trigger.shape_ids, trigger.label, name.
  - Minor: String arguments with no constraint or example: trigger.label, name.
  - Minor: Says nothing about what it returns.
- `find_references`: 49 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `generate_illustration`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `set_reference_image`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `account_status`: 52 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `draw_svg`: 60 / 100
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: reference_id. Name the tool or the place that returns it, or models look it up first.

Is your server listed here and you would rather it were not? Email support@forecall.dev, and we will take it off within 7 days.

[All scored servers](https://forecall.dev/en/servers)
