Skip to main content
Glama

Icons8

List illustration styles

list_illustrations_styles
Read-only

List all available illustration styles.

Style is what keeps a set of illustrations looking like one family. Pick one style and pass its pretty_id to search_illustrations for every illustration in a project, the way you would keep to a single icon platform.

Args: ctx: MCP context for API access limit: Styles per page (default: 50) page: Page number, 1-based (default: 1) free_only: Only styles whose illustrations a free Icons8 account can use and redistribute. A style without this flag needs a paid account - the ordinary case for a subscriber, not a style this user is barred from animated: True for animated styles only, False for static only. THIS IS A PROPERTY OF THE STYLE, NOT A COUNT. It says the style has video and animation formats at all - it does not say how many of its illustrations actually move, and usually very few do: measured on stage, 3d-business carries the flag with 19 animated illustrations out of 1497, flexy 15 out of 561, and node carries it with none at all yet. So use it to browse styles, and use search_illustrations(animated=True) to find illustrations that move - that one filters on media_types, which is the per-illustration answer

Returns: {"total", "styles"} where each style has pretty_id, title, illustrations_count, free_distribution and animated - or {"error"}

Input Schema

NameRequiredDescriptionDefault
pageNo
limitNo
animatedNo
free_onlyNo

Output Schema

NameRequiredDescriptionDefault
errorNoSet only on failure.
totalNoNumber of styles that match, before paging.
stylesNoStyles of the requested page. Absent when error is set.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$defs": {
      +    "IllustrationStyle": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "animated": {
      +          "anyOf": [
      +            {
      +              "type": "boolean"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null,
      +          "description": "True when the style has animated formats at all, whatever the count of illustrations that move.",
      +          "title": "Animated"
      +        },
      +        "free_distribution": {
      +          "anyOf": [
      +            {
      +              "type": "boolean"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null,
      +          "title": "Free Distribution"
      +        },
      +        "illustrations_count": {
      +          "anyOf": [
      +            {
      +              "type": "integer"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null,
      +          "title": "Illustrations Count"
      +        },
      +        "pretty_id": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null,
      +          "description": "Style id. Pass it as style to search_illustrations.",
      +          "title": "Pretty Id"
      +        },
      +        "title": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null,
      +          "title": "Title"
      +        }
      +      },
      +      "title": "IllustrationStyle",
      +      "type": "object"
      +    }
      +  },
      +  "additionalProperties": true,
      +  "properties": {
      +    "error": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "Set only on failure.",
      +      "title": "Error"
      +    },
      +    "styles": {
      +      "anyOf": [
      +        {
      +          "items": {
      +            "$ref": "#/$defs/IllustrationStyle"
      +          },
      +          "type": "array"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "Styles of the requested page. Absent when error is set.",
      +      "title": "Styles"
      +    },
      +    "total": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "Number of styles that match, before paging.",
      +      "title": "Total"
      +    }
      +  },
      +  "title": "IllustrationStylesResult",
      +  "type": "object"
      +}
  2. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already cover the read-only/non-open-world safety profile, but the description adds behavioral context the annotations cannot: free_only's licensing semantics (paid account needed, and explicitly that a lack of the flag is not a bar for a subscriber) and the counterintuitive nature of the animated flag with measured examples (3d-business 19/1497, node 0 yet flagged). This is the kind of non-obvious behavior that prevents misuse.

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?

Front-loaded with purpose before mechanics, and the Args/Returns structure is scannable. It is longer than needed in places – the animated explanation restates 'property of the style, not a count' twice and adds a folksy icon-platform analogy – but the verbosity is mostly load-bearing given 0% schema coverage.

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?

An output schema exists, yet the description still sketches the return shape ({total, styles} with pretty_id, title, illustrations_count, free_distribution, animated) so the agent knows exactly which field feeds the next call. For a paged, filtered list tool with four undocumented params, nothing needed 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.

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full burden and does: limit (styles per page, default 50), page (1-based, default 1), free_only (distribution licensing meaning), and animated (a property of the style, not a count, with the distinction mapped to media_types). All four undocumented parameters are given meaning beyond their names and types.

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+resource ('List all available illustration styles') and immediately explains the resource's role in the workflow (family consistency, pretty_id passed to search_illustrations). An agent can distinguish it from list_illustrations_categories and list_platforms without opening any schema.

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

Usage Guidelines5/5

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

Names the downstream consumer explicitly ('pass its pretty_id to search_illustrations for every illustration in a project') and provides an explicit when/when-not routing rule: use this tool to browse styles, but use search_illustrations(animated=True) to find illustrations that actually move. That is a concrete alternative selection rule, not an implication.

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