io.github.Nutlope/inspo
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Real production websites for coding agents: palettes, fonts, fold autopsies and reference JSX.
| Author | io.github.Nutlope |
|---|---|
| Access | mixed |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 170 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"inspo": {
"url": "https://inspomcp.dev/api/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (15)
search_screensread-onlySearch the archive of real website screenshots. Returns screens with palette, fonts, components and image URLs.
Parameters:
mode— string — light or darkvibe— string — Mood / vibe - 'calm', 'loud', 'luxe', 'technical', 'soft', etc.color— string — Color word - 'warm', 'cool', 'monochrome', 'neon', 'earthy'limit— integerquery— string — Natural-language description of what you're looking for. e.g. 'minimalist editorial agency portfolio'style— string — Filter to one visual style (e.g. 'minimalism', 'editorial')detail— string — 'standard' (default): northstar, palette, fonts, axes, macro and tags per row, plus the fold-by-fold autopsy on the top 3. 'full': the autopsy on every row (~300 tokens each; only if you will read them all). 'concise': northstar, palette, fonts. Text profile defaults to concise.device— string — 'mobile' restricts to sites with a 375px capture pair and inlines the mobile thumbnail. Default: desktop.industry— string — Filter to one industry (e.g. 'saas', 'fintech', 'portfolio')pageType— string — Filter to a page kind: 'landing' (default homepages), 'pricing', 'features', 'auth', 'about', 'blog', 'changelog', 'docs', 'other'accentHue— string — Accent temperature: 'warm' (10-60°), 'cool' (200-300°), 'neutral' (unsaturated), 'chromatic-other' (greens, magentas, everything else).maxTokens— integer — Approximate token ceiling for this response. Trims lower-ranked results and thumbnails; the top result and all URLs survive.paperBand— string — Surface lightness, measured from the capture: 'dark' (<30% L), 'mid' (30-85%), 'light' (>85%). More reliable than `mode`, which is tagged and disagrees with the measurement on ~15% of rows.displayClass— string — Construction of the display face: 'grotesk-sans', 'geometric-sans', 'roman-serif', 'mono', 'display-condensed-bold', etc.macrostructure— string — Filter to a macrostructure (e.g. 'bento-grid')
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_screenread-onlyFetch the full record for one screen by slug - every viewport variant, palette, fonts, tech stack, designer credit.
Parameters:
slug(required) — string — Screen slug, e.g. 'atelier-mira'
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_design_systemread-onlyThe full DESIGN.md for one screen - real fonts, frequency-ranked palette, CSS variables, detected tech, colour roles, type ramp. Thin captured tokens are supplemented by a live fetch of the source; `live=false` skips that.
Parameters:
slug(required) — string — Screen slug, e.g. 'linear-app'. Use search_screens or find_similar first to discover slugs.live— boolean — If true (default), supplement thin captured tokens by fetching the source URL via study(). Set false to skip the network round-trip.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
find_similarread-onlyA screen's nearest design neighbours - ranked by design-similarity embeddings where available, else by macrostructure / industry / style overlap. One result per site.
Parameters:
slug(required) — stringlimit— integerdetail— string — 'standard' (default): northstar, palette, fonts, axes, macro and tags per row, plus the fold-by-fold autopsy on the top 3. 'full': the autopsy on every row (~300 tokens each; only if you will read them all). 'concise': northstar, palette, fonts. Text profile defaults to concise.sameSite— boolean — Include other pages of the same site (default false: neighbours are other sites).maxTokens— integer — Approximate token ceiling for this response. Trims lower-ranked results and thumbnails; the top result and all URLs survive.
Hints: read-only yes · destructive no · idempotent yes · open-world no
compareread-onlyCompare 2-4 captured sites across palette, typefaces, macrostructure, mode, style tags, type/spacing/radius scales and container width. Returns per-site breakdowns plus what they share - triangulates a house style from a few references.
Parameters:
slugs(required) — array — 2-4 screen slugs to compare, e.g. ['linear-app','stripe-com','vercel-com']. Discover slugs with search_screens / find_similar.
Hints: read-only yes · destructive no · idempotent yes · open-world no
find_by_colorread-onlyReal sites whose extracted palette sits near a hex colour (OKLAB distance, so 'close' means the same colour family, not just the same hue). Use when a brief names a brand colour.
Parameters:
hex(required) — string — Target colour as a hex string ('#c7402f', 'c7402f', '#fff'). Case-insensitive. 3- or 6-digit.limit— integerdetail— string — 'standard' (default): northstar, palette, fonts, axes, macro and tags per row, plus the fold-by-fold autopsy on the top 3. 'full': the autopsy on every row (~300 tokens each; only if you will read them all). 'concise': northstar, palette, fonts. Text profile defaults to concise.maxTokens— integer — Approximate token ceiling for this response. Trims lower-ranked results and thumbnails; the top result and all URLs survive.tolerance— number — Max OKLAB distance to count as a match. Defaults to 0.15 ('same family'). 0.05 ≈ 'near-identical', 0.30 ≈ 'in the same hue zip code'.
Hints: read-only yes · destructive no · idempotent yes · open-world no
find_examples_for_macrostructureread-onlyReal sites exemplifying one of the 19 named macrostructures. Call it at the macrostructure-pick step. Accepts slugs ('bento-grid') or display names ('Bento Grid').
Parameters:
name(required) — string — Macrostructure name. e.g. 'bento-grid', 'Bento Grid', 'specimen', 'Marquee Hero'.limit— integerdetail— string — 'standard' (default): northstar, palette, fonts, axes, macro and tags per row, plus the fold-by-fold autopsy on the top 3. 'full': the autopsy on every row (~300 tokens each; only if you will read them all). 'concise': northstar, palette, fonts. Text profile defaults to concise.device— string — 'mobile' restricts to sites with a 375px capture pair and inlines the mobile thumbnail. Default: desktop.maxTokens— integer — Approximate token ceiling for this response. Trims lower-ranked results and thumbnails; the top result and all URLs survive.
Hints: read-only yes · destructive no · idempotent yes · open-world no
list_collectionsread-onlyList every editor-curated issue. Use this for thematic browsing - e.g. all 'Editorial Layouts' or 'Dark Product Pages'.
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_filtersread-onlyEvery value the filters accept: styles, industries, macrostructures, modes, vibes, colors, page types, component types. Zero input. Call it when unsure - an out-of-vocabulary value errors.
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_site_pagesread-onlyA site's captured pages as an ordered flow (landing → pricing → features → ...) with titles, northstars and thumbnails - how a real product sequences its pages. No arguments returns the directory of flow-capable sites. Accepts a site or screen slug.
Parameters:
limit— integer — Directory mode only: max sites to list.siteSlug— string — Site slug (e.g. 'linear-app') or any screen slug from that site. Omit to list flow-capable sites instead.maxTokens— integer — Approximate token ceiling for this response. Trims lower-ranked results and thumbnails; the top result and all URLs survive.
Hints: read-only yes · destructive no · idempotent yes · open-world no
find_componentsread-onlyReal sites featuring a specific UI component (hero, pricing, features, cta, nav, footer, testimonial, logo-cloud, faq, stat), with a per-element crop where one exists. For copy-pasteable code use get_reference_jsx.
Parameters:
type(required) — string — Which component type to findmode— stringvibe— string — Mood - 'calm', 'loud', 'luxe', etc.color— string — Color word - 'warm', 'cool', 'monochrome', etc.limit— integerstyle— string — Filter the parent site's styledevice— string — 'mobile' restricts to sites with a 375px capture pair and inlines the mobile thumbnail. Default: desktop.industry— stringpageType— string — Only components from this page kind (e.g. 'pricing')maxTokens— integer — Approximate token ceiling for this response. Trims lower-ranked results and thumbnails; the top result and all URLs survive.macrostructure— string
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_collectionread-onlyFetch one issue by slug, including the editor's blurb and ordered screen list.
Parameters:
slug(required) — string — Collection slug, e.g. 'editorial-layouts'detail— string — 'standard' (default): northstar, palette, fonts, axes, macro and tags per row, plus the fold-by-fold autopsy on the top 3. 'full': the autopsy on every row (~300 tokens each; only if you will read them all). 'concise': northstar, palette, fonts. Text profile defaults to concise.maxTokens— integer — Approximate token ceiling for this response. Trims lower-ranked results and thumbnails; the top result and all URLs survive.
Hints: read-only yes · destructive no · idempotent yes · open-world no
find_reference_componentsread-onlyThe canonical reference components as an index: id, label, macrostructure and a note for each hero / pricing / cta / nav / footer archetype. Pick one, then get_reference_jsx(type, id) for its source.
Parameters:
type— string — Component category (hero, pricing, cta, …). Omit to scan all types.macro— string — Substring match on the component's macro field - e.g. 'Marquee' matches 'Marquee Hero'.
Hints: read-only yes · destructive no · idempotent yes · open-world no
recommendread-onlyOrchestrator - start here for a brief. One call returns a macrostructure pick, 5 real exemplars, matching reference components (source via get_reference_jsx), a palette suggestion, and an `evidence` packet measuring the genre's paper band / display class / accent hue. Pass a macrostructure to skip the pick step. No LLM call.
Parameters:
brief(required) — string — The user's design brief in plain English. E.g. 'calm meditation app', 'dark dev-tool that helps teams ship faster'.mode— string — Optional: 'light' or 'dark'.vibe— string — Optional vibe filter.color— string — Optional colour word.detail— string — 'standard' (default): northstar, palette, fonts, axes, macro and tags per row, plus the fold-by-fold autopsy on the top 3. 'full': the autopsy on every row (~300 tokens each; only if you will read them all). 'concise': northstar, palette, fonts. Text profile defaults to concise.device— string — 'mobile' restricts to sites with a 375px capture pair and inlines the mobile thumbnail. Default: desktop.pageType— string — Optional: 'landing', 'pricing', 'features', etc.maxTokens— integer — Approximate token ceiling for this response. Trims lower-ranked results and thumbnails; the top result and all URLs survive.macrostructure— string — Optional: a macrostructure already picked. Skips the pick step.
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_reference_jsxread-onlyThe full canonical JSX source for one reference component, including the header stamp naming its macrostructure / theme / states. Copy-pasteable; tweak tokens to the target brand.
Parameters:
type(required) — string — Component categoryid(required) — string — Reference id within that type (e.g. 'marquee', 'three-card').
Hints: read-only yes · destructive no · idempotent yes · open-world no
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.