Skip to content
Connect an agent
Icons

Map icons

Choose icons for many names at once.

POST/v1/icons/map

TL;DR

QuestionAnswer
What does it do?Choose icons for many names at once.
Which tool does the same?map_icons
What does it take?A JSON body of type MapIconsInput.
What does it return?Status 200 with a body of type MapIconsResponse.
What can go wrong?400 the body failed schema validation; 401 the api key is missing or not valid; 403 the account is on the free plan, which does not include the rest drawing and checking routes (plan.rest_not_included); 413 the body is larger than the size cap; 429 too many requests. Every failure uses the one error envelope.

What it does

Takes up to 40 service or product names and an optional cloud provider, and answers for each name with one icon to write as icon=, or, when the name could mean more than one icon, the candidates to choose from. It never guesses: a name that matches nothing is listed as a gap with a neutral fallback. A name with no match is a normal 200 result, never an error. Prefer this route over calling the icon search route once per name; use the search route when you are exploring one idea.

Request body

The body has the type MapIconsInput.

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.

Responses

StatusMeaningBody
200One icon decision per name, and the names that found no icon.MapIconsResponse
400The body failed schema validation.ErrorResponse
401The API key is missing or not valid.ErrorResponse
403The account is on the Free plan, which does not include the REST drawing and checking routes (plan.rest_not_included).ErrorResponse
413The body is larger than the size cap.ErrorResponse
429Too many requests.ErrorResponse

Response body

A 200 answer has the type MapIconsResponse.

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.

See also

DocWhy
API referenceEvery endpoint, and the error envelope
SchemasEvery request and response type
map_iconsThe same operation as an MCP tool
Tool referenceThe operations as callable tools