Icons

Instructions for an agent that needs a colored SVG logo for a service. Follow them in order and stop at the first match.

Sources, in order

  1. theSVG, https://thesvg.org/

    Largest brand collection. Use the default variant, which is in brand color.

  2. SVGL, https://svgl.app/

    Good coverage of software and developer tools. Has light and dark variants.

  3. Lobe Icons, https://lobehub.com/icons

    Best for AI models and AI companies. Use the -color file.

1. theSVG

There is no search endpoint. Download the manifest once and match the service name against title, slug and aliases, ignoring case.

curl -s https://thesvg.org/api/registry.json \
  | jq '.icons[] | select((.title + " " + .slug + " " + (.aliases | join(" "))) | test("hubspot"; "i")) | {slug, title, variants}'

Build the URL from the slug: https://thesvg.org/icons/{slug}/default.svg. Example: https://thesvg.org/icons/hubspot/default.svg.

2. SVGL

Search the API by name. It returns a JSON list, or an object with an error key when nothing matches.

curl -s "https://api.svgl.app?search=github"

route is either a URL string or an object with light and dark URLs. Prefer light, which is the logo for a light background.

3. Lobe Icons

The SVG files are published in the @lobehub/icons-static-svg npm package. List the files and look for {name}-color.svg. Fall back to {name}.svg, which is monochrome, only if no color file exists.

curl -sL "https://unpkg.com/@lobehub/icons-static-svg@latest/?meta" \
  | jq -r '.files[].path' | grep -i claude

URL pattern: https://unpkg.com/@lobehub/icons-static-svg@latest/icons/claude-color.svg.

Record the result

Add each icon to icons in the data file, keyed by the service name. Set source to the SVG URL or a local file path, and collection to the site where you found it. If a service has no logo in any source, mark it generic.

"icons": {
  "HubSpot": {"source": "https://thesvg.org/icons/hubspot/default.svg", "collection": "https://thesvg.org/"},
  "GitHub": {"source": "https://svgl.app/library/github_light.svg", "collection": "https://svgl.app/"},
  "Claude": {"source": "https://unpkg.com/@lobehub/icons-static-svg@latest/icons/claude-color.svg", "collection": "https://lobehub.com/icons"},
  "Internal CRM": {"source": "generic"}
}
  1. Check the file

    Fetch the URL and confirm it returns HTTP 200 with an <svg root before recording it.

  2. Match the brand

    Make sure the logo belongs to the exact service, not a parent company or a similarly named product.

  3. Prefer color

    Pick a monochrome file only when no source has a colored one.