Skip to content
Connect an agent
Workflows

map_icons

Finds an icon for each of up to 40 service or product names in one call, such as the services of an architecture. It is a workflow of the MCP server and the HTTP API, with the title "Map icons".

TL;DR

QuestionAnswer
What is it?A workflow: one call does the work of several tools and returns one combined answer.
What does it do?Finds an icon for each of up to 40 service or product names in one call, such as the services of an architecture.
What does it replace?up to 40 search_icons calls.
How do I call it over HTTP?POST /v1/icons/map
Does it change anything?No. It is read-only and idempotent, and it talks to nothing outside itself. It saves no file and returns its answer as data.
Which bounds apply?maxIconNames, maxIconNameLength, maxIconAlternatives, maxIconCandidates. See the bounds below.
Where do I read its schema as data?An MCP client gets the name, description, and JSON Schema of every tool from tools/list.

What it does

Workflow. Finds an icon for each of up to 40 service or product names in one call, such as the services of an architecture. For every name it returns the best provider:name icon with a confidence (exact, strong, or ambiguous) and up to 3 alternatives. It never guesses: a name that could mean several icons (a kind of service several clouds offer, or a match by idea only) comes back with resolved false and candidates to choose from, and a name that matches nothing is listed in gaps with a neutral fallback icon. Set provider to the cloud the architecture runs on, so "queue" finds that cloud's product first. Reads the bundled icons and, when hosted, the organisation icons (org:name). Replaces up to 40 search_icons calls.

Steps

OperationRunsWhat it does
searchIconsalwaysSearch the bundled icons for a name or an idea.

One call performs at most 80 operations.

Example call

The arguments of the call, as JSON:

json
{  "names": [    "S3",    "Postgres",    "Lambda",    "load balancer",    "queue"  ],  "provider": "aws"}

Prompts that lead to it

  • Which icons should I use for S3, Lambda, Postgres and a queue on AWS?
  • Pick icons for every service in this architecture.

Arguments

FieldTypeRequiredDescription
namesstring[]yesServices, products, or ideas to find icons for, written as the user wrote them ("S3", "Postgres", "load balancer"). Up to 40 names of up to 80 characters.
provider"aws" | "gcp" | "azure" | "alibaba" | "oci" | "ibm" | "cloudflare" | "digitalocean" | "vercel"noThe cloud the architecture runs on. A name is looked up there first, so "queue" finds aws:sqs for aws. Omit it when the names are not tied to one provider.

Result

FieldTypeRequiredDescription
provider"aws" | "gcp" | "azure" | "alibaba" | "oci" | "ibm" | "cloudflare" | "digitalocean" | "vercel" | nullyesThe provider hint that was used, or null.
resultsobject[]yesOne entry per name that matched something, in the order sent.
results[].namestringyesThe name exactly as it was sent.
results[].resolvedbooleanyesTrue when icon holds the one icon to use. False when the name could mean more than one: choose from candidates, or ask the user.
results[].iconstring | nullyesThe icon to write as icon=, such as aws:lambda; null when resolved is false.
results[].confidence"exact" | "strong" | "ambiguous"yesexact: the name is the icon or product name. strong: the name clearly points at this icon and no other provider competes. ambiguous: several icons fit, or the match is by idea only.
results[].alternativesstring[]yesUp to 3 other icons that also fit a resolved name, best first. Empty when none.
results[].candidatesstring[]yesWhen resolved is false, the icons that fit, best first (up to 4). Empty when resolved.
gapsobject[]yesNames that matched nothing, in the order sent.
gaps[].namestringyesThe name that matched no icon.
gaps[].fallbackstringyesA neutral icon to use instead, or leave icon= out so the node type draws its own.
gaps[].reasonstringyesWhy there is no match, and what to try.
resolvedCountintegeryesHow many names have one icon to use.
ambiguousCountintegeryesHow many names need a choice from candidates.
gapCountintegeryesHow many names matched nothing.

Behavior hints

HintValue
readOnlyHinttrue
destructiveHintfalse
idempotentHinttrue
openWorldHintfalse

Bounds

A bound that is reached is reported in the result; nothing is cut silently.

BoundValueWhat it limits
maxIconNames40Names in one call.
maxIconNameLength80Characters in one name.
maxIconAlternatives3Other icons listed beside a chosen icon.
maxIconCandidates4Icons listed for a name that could mean several.

See also

DocWhy
Tool referenceEvery tool, with the workflows first
POST /v1/icons/mapThe same operation over HTTP
Language referenceWhat the diagram source may contain
Writing diagrams with an agentThe loop in practice