Server definition
- Hash
- sha256:8c880f593a87fa084aaac15393022af3fb1d5412db46a3ce09d9be8404856d28
- What it is
- What a remote MCP server returned when asked what it offers: 15 tools
The blob, as servednamed by its sha256
{
"instructions": "Inspo is an archive of real production websites - screenshots, palettes, fonts and page structures - for visual reference before you write UI. CALL IT WHEN: designing a new page, screen or section; redesigning an existing one; the user asks what something should look like, or asks for references; the brief names an aesthetic direction (editorial, brutalist, dark SaaS, agency portfolio). DO NOT CALL IT WHEN: the project already has a design system, tokens or a component library - follow those instead; the change follows a pattern already established in the codebase; the work is copy, logic, tests or infrastructure; the user has already specified the design. If the project's own conventions and Inspo disagree, the project wins. Start with `recommend` for a brief, `search_screens` to browse; `get_filters` lists every accepted filter value. These are real shipped sites and plenty of them break rules a strict linter would flag: take their composition, not their compliance. The composition rules for whatever you build travel back with the results. BUDGET: one `recommend`, one or two `search_screens`, then `get_screen` on the three to five references you keep is a complete study; results are re-read on every later turn, so a fourth search costs more than it finds. List rows carry the fold autopsy on the top three only; ask for detail:\"full\" only if you will read all of them. `find_reference_components` is an index; fetch one source with `get_reference_jsx`.",
"tools": [
{
"description": "Compare 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.",
"inputSchema": {
"properties": {
"slugs": {
"description": "2-4 screen slugs to compare, e.g. ['linear-app','stripe-com','vercel-com']. Discover slugs with search_screens / find_similar.",
"items": {
"type": "string"
},
"maxItems": 4,
"minItems": 2,
"type": "array"
}
},
"required": [
"slugs"
],
"type": "object"
},
"name": "compare",
"outputSchema": null
},
{
"description": "Real 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.",
"inputSchema": {
"properties": {
"detail": {
"description": "'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.",
"enum": [
"concise",
"standard",
"full"
],
"type": "string"
},
"hex": {
"description": "Target colour as a hex string ('#c7402f', 'c7402f', '#fff'). Case-insensitive. 3- or 6-digit.",
"type": "string"
},
"limit": {
"default": 12,
"maximum": 40,
"minimum": 1,
"type": "integer"
},
"maxTokens": {
"description": "Approximate token ceiling for this response. Trims lower-ranked results and thumbnails; the top result and all URLs survive.",
"maximum": 200000,
"minimum": 300,
"type": "integer"
},
"tolerance": {
"default": 0.15,
"description": "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'.",
"maximum": 0.5,
"minimum": 0.02,
"type": "number"
}
},
"required": [
"hex"
],
"type": "object"
},
"name": "find_by_color",
"outputSchema": null
},
{
"description": "Real 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.",
"inputSchema": {
"properties": {
"color": {
"description": "Color word - 'warm', 'cool', 'monochrome', etc.",
"enum": [
"warm",
"cool",
"monochrome",
"neon",
"earthy",
"pastel",
"saturated",
"muted",
"high-contrast"
],
"type": "string"
},
"device": {
"description": "'mobile' restricts to sites with a 375px capture pair and inlines the mobile thumbnail. Default: desktop.",
"enum": [
"desktop",
"mobile"
],
"type": "string"
},
"industry": {
"enum": [
"agency",
"ai",
"architecture",
"automotive",
"consumer-tech",
"creator",
"crypto",
"culture",
"developer-tools",
"ecommerce",
"education",
"fashion",
"fintech",
"food-beverage",
"furniture",
"gaming",
"health",
"media",
"music",
"non-profit",
"portfolio",
"saas",
"travel",
"type-foundry"
],
"type": "string"
},
"limit": {
"default": 12,
"maximum": 40,
"minimum": 1,
"type": "integer"
},
"macrostructure": {
"enum": [
"bento-grid",
"long-document",
"marquee-hero",
"stat-led",
"conversational-faq",
"manifesto",
"photographic",
"specimen",
"catalogue",
"letter",
"index-first",
"narrative-workflow",
"split-studio",
"feature-stack",
"type-specimen",
"portfolio-grid",
"map-diagram",
"ecosystem-index",
"component-playground"
],
"type": "string"
},
"maxTokens": {
"description": "Approximate token ceiling for this response. Trims lower-ranked results and thumbnails; the top result and all URLs survive.",
"maximum": 200000,
"minimum": 300,
"type": "integer"
},
"mode": {
"enum": [
"light",
"dark"
],
"type": "string"
},
"pageType": {
"description": "Only components from this page kind (e.g. 'pricing')",
"enum": [
"landing",
"pricing",
"features",
"auth",
"about",
"blog",
"changelog",
"docs",
"other"
],
"type": "string"
},
"style": {
"description": "Filter the parent site's style",
"enum": [
"minimalism",
"editorial",
"brutalism",
"glassmorphism",
"swiss",
"maximalism",
"playful",
"dark-mode",
"monochrome",
"vintage",
"futurist"
],
"type": "string"
},
"type": {
"description": "Which component type to find",
"enum": [
"hero",
"pricing",
"features",
"cta",
"nav",
"footer",
"testimonial",
"logo-cloud",
"faq",
"stat"
],
"type": "string"
},
"vibe": {
"description": "Mood - 'calm', 'loud', 'luxe', etc.",
"enum": [
"calm",
"loud",
"playful",
"serious",
"luxe",
"raw",
"soft",
"technical",
"warm",
"cold"
],
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
},
"name": "find_components",
"outputSchema": null
},
{
"description": "Real sites exemplifying one of the 19 named macrostructures. Call it at the macrostructure-pick step. Accepts slugs ('bento-grid') or display names ('Bento Grid').",
"inputSchema": {
"properties": {
"detail": {
"description": "'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.",
"enum": [
"concise",
"standard",
"full"
],
"type": "string"
},
"device": {
"description": "'mobile' restricts to sites with a 375px capture pair and inlines the mobile thumbnail. Default: desktop.",
"enum": [
"desktop",
"mobile"
],
"type": "string"
},
"limit": {
"default": 4,
"maximum": 20,
"minimum": 1,
"type": "integer"
},
"maxTokens": {
"description": "Approximate token ceiling for this response. Trims lower-ranked results and thumbnails; the top result and all URLs survive.",
"maximum": 200000,
"minimum": 300,
"type": "integer"
},
"name": {
"description": "Macrostructure name. e.g. 'bento-grid', 'Bento Grid', 'specimen', 'Marquee Hero'.",
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "find_examples_for_macrostructure",
"outputSchema": null
},
{
"description": "The 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.",
"inputSchema": {
"properties": {
"macro": {
"description": "Substring match on the component's macro field - e.g. 'Marquee' matches 'Marquee Hero'.",
"type": "string"
},
"type": {
"description": "Component category (hero, pricing, cta, …). Omit to scan all types.",
"enum": [
"hero",
"pricing",
"features",
"cta",
"nav",
"footer",
"testimonial",
"logo-cloud",
"faq",
"stat"
],
"type": "string"
}
},
"type": "object"
},
"name": "find_reference_components",
"outputSchema": null
},
{
"description": "A screen's nearest design neighbours - ranked by design-similarity embeddings where available, else by macrostructure / industry / style overlap. One result per site.",
"inputSchema": {
"properties": {
"detail": {
"description": "'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.",
"enum": [
"concise",
"standard",
"full"
],
"type": "string"
},
"limit": {
"default": 8,
"maximum": 20,
"minimum": 1,
"type": "integer"
},
"maxTokens": {
"description": "Approximate token ceiling for this response. Trims lower-ranked results and thumbnails; the top result and all URLs survive.",
"maximum": 200000,
"minimum": 300,
"type": "integer"
},
"sameSite": {
"default": false,
"description": "Include other pages of the same site (default false: neighbours are other sites).",
"type": "boolean"
},
"slug": {
"type": "string"
}
},
"required": [
"slug"
],
"type": "object"
},
"name": "find_similar",
"outputSchema": null
},
{
"description": "Fetch one issue by slug, including the editor's blurb and ordered screen list.",
"inputSchema": {
"properties": {
"detail": {
"description": "'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.",
"enum": [
"concise",
"standard",
"full"
],
"type": "string"
},
"maxTokens": {
"description": "Approximate token ceiling for this response. Trims lower-ranked results and thumbnails; the top result and all URLs survive.",
"maximum": 200000,
"minimum": 300,
"type": "integer"
},
"slug": {
"description": "Collection slug, e.g. 'editorial-layouts'",
"type": "string"
}
},
"required": [
"slug"
],
"type": "object"
},
"name": "get_collection",
"outputSchema": null
},
{
"description": "The 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.",
"inputSchema": {
"properties": {
"live": {
"default": true,
"description": "If true (default), supplement thin captured tokens by fetching the source URL via study(). Set false to skip the network round-trip.",
"type": "boolean"
},
"slug": {
"description": "Screen slug, e.g. 'linear-app'. Use search_screens or find_similar first to discover slugs.",
"type": "string"
}
},
"required": [
"slug"
],
"type": "object"
},
"name": "get_design_system",
"outputSchema": null
},
{
"description": "Every 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.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "get_filters",
"outputSchema": null
},
{
"description": "The 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.",
"inputSchema": {
"properties": {
"id": {
"description": "Reference id within that type (e.g. 'marquee', 'three-card').",
"type": "string"
},
"type": {
"description": "Component category",
"enum": [
"hero",
"pricing",
"features",
"cta",
"nav",
"footer",
"testimonial",
"logo-cloud",
"faq",
"stat"
],
"type": "string"
}
},
"required": [
"type",
"id"
],
"type": "object"
},
"name": "get_reference_jsx",
"outputSchema": null
},
{
"description": "Fetch the full record for one screen by slug - every viewport variant, palette, fonts, tech stack, designer credit.",
"inputSchema": {
"properties": {
"slug": {
"description": "Screen slug, e.g. 'atelier-mira'",
"type": "string"
}
},
"required": [
"slug"
],
"type": "object"
},
"name": "get_screen",
"outputSchema": null
},
{
"description": "A 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.",
"inputSchema": {
"properties": {
"limit": {
"default": 25,
"description": "Directory mode only: max sites to list.",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"maxTokens": {
"description": "Approximate token ceiling for this response. Trims lower-ranked results and thumbnails; the top result and all URLs survive.",
"maximum": 200000,
"minimum": 300,
"type": "integer"
},
"siteSlug": {
"description": "Site slug (e.g. 'linear-app') or any screen slug from that site. Omit to list flow-capable sites instead.",
"type": "string"
}
},
"type": "object"
},
"name": "get_site_pages",
"outputSchema": null
},
{
"description": "List every editor-curated issue. Use this for thematic browsing - e.g. all 'Editorial Layouts' or 'Dark Product Pages'.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "list_collections",
"outputSchema": null
},
{
"description": "Orchestrator - 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.",
"inputSchema": {
"properties": {
"brief": {
"description": "The user's design brief in plain English. E.g. 'calm meditation app', 'dark dev-tool that helps teams ship faster'.",
"minLength": 2,
"type": "string"
},
"color": {
"description": "Optional colour word.",
"enum": [
"warm",
"cool",
"monochrome",
"neon",
"earthy",
"pastel",
"saturated",
"muted",
"high-contrast"
],
"type": "string"
},
"detail": {
"description": "'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.",
"enum": [
"concise",
"standard",
"full"
],
"type": "string"
},
"device": {
"description": "'mobile' restricts to sites with a 375px capture pair and inlines the mobile thumbnail. Default: desktop.",
"enum": [
"desktop",
"mobile"
],
"type": "string"
},
"macrostructure": {
"description": "Optional: a macrostructure already picked. Skips the pick step.",
"enum": [
"bento-grid",
"long-document",
"marquee-hero",
"stat-led",
"conversational-faq",
"manifesto",
"photographic",
"specimen",
"catalogue",
"letter",
"index-first",
"narrative-workflow",
"split-studio",
"feature-stack",
"type-specimen",
"portfolio-grid",
"map-diagram",
"ecosystem-index",
"component-playground"
],
"type": "string"
},
"maxTokens": {
"description": "Approximate token ceiling for this response. Trims lower-ranked results and thumbnails; the top result and all URLs survive.",
"maximum": 200000,
"minimum": 300,
"type": "integer"
},
"mode": {
"description": "Optional: 'light' or 'dark'.",
"enum": [
"light",
"dark"
],
"type": "string"
},
"pageType": {
"description": "Optional: 'landing', 'pricing', 'features', etc.",
"enum": [
"landing",
"pricing",
"features",
"auth",
"about",
"blog",
"changelog",
"docs",
"other"
],
"type": "string"
},
"vibe": {
"description": "Optional vibe filter.",
"enum": [
"calm",
"loud",
"playful",
"serious",
"luxe",
"raw",
"soft",
"technical",
"warm",
"cold"
],
"type": "string"
}
},
"required": [
"brief"
],
"type": "object"
},
"name": "recommend",
"outputSchema": null
},
{
"description": "Search the archive of real website screenshots. Returns screens with palette, fonts, components and image URLs.",
"inputSchema": {
"properties": {
"accentHue": {
"description": "Accent temperature: 'warm' (10-60°), 'cool' (200-300°), 'neutral' (unsaturated), 'chromatic-other' (greens, magentas, everything else).",
"enum": [
"warm",
"cool",
"neutral",
"chromatic-other"
],
"type": "string"
},
"color": {
"description": "Color word - 'warm', 'cool', 'monochrome', 'neon', 'earthy'",
"enum": [
"warm",
"cool",
"monochrome",
"neon",
"earthy",
"pastel",
"saturated",
"muted",
"high-contrast"
],
"type": "string"
},
"detail": {
"description": "'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.",
"enum": [
"concise",
"standard",
"full"
],
"type": "string"
},
"device": {
"description": "'mobile' restricts to sites with a 375px capture pair and inlines the mobile thumbnail. Default: desktop.",
"enum": [
"desktop",
"mobile"
],
"type": "string"
},
"displayClass": {
"description": "Construction of the display face: 'grotesk-sans', 'geometric-sans', 'roman-serif', 'mono', 'display-condensed-bold', etc.",
"enum": [
"grotesk-sans",
"geometric-sans",
"roman-serif",
"italic-serif",
"slab-serif",
"mono",
"display-condensed-bold",
"display-heavy",
"system-native",
"handwritten"
],
"type": "string"
},
"industry": {
"description": "Filter to one industry (e.g. 'saas', 'fintech', 'portfolio')",
"enum": [
"agency",
"ai",
"architecture",
"automotive",
"consumer-tech",
"creator",
"crypto",
"culture",
"developer-tools",
"ecommerce",
"education",
"fashion",
"fintech",
"food-beverage",
"furniture",
"gaming",
"health",
"media",
"music",
"non-profit",
"portfolio",
"saas",
"travel",
"type-foundry"
],
"type": "string"
},
"limit": {
"default": 6,
"maximum": 20,
"minimum": 1,
"type": "integer"
},
"macrostructure": {
"description": "Filter to a macrostructure (e.g. 'bento-grid')",
"enum": [
"bento-grid",
"long-document",
"marquee-hero",
"stat-led",
"conversational-faq",
"manifesto",
"photographic",
"specimen",
"catalogue",
"letter",
"index-first",
"narrative-workflow",
"split-studio",
"feature-stack",
"type-specimen",
"portfolio-grid",
"map-diagram",
"ecosystem-index",
"component-playground"
],
"type": "string"
},
"maxTokens": {
"description": "Approximate token ceiling for this response. Trims lower-ranked results and thumbnails; the top result and all URLs survive.",
"maximum": 200000,
"minimum": 300,
"type": "integer"
},
"mode": {
"description": "light or dark",
"enum": [
"light",
"dark"
],
"type": "string"
},
"pageType": {
"description": "Filter to a page kind: 'landing' (default homepages), 'pricing', 'features', 'auth', 'about', 'blog', 'changelog', 'docs', 'other'",
"enum": [
"landing",
"pricing",
"features",
"auth",
"about",
"blog",
"changelog",
"docs",
"other"
],
"type": "string"
},
"paperBand": {
"description": "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.",
"enum": [
"dark",
"mid",
"light"
],
"type": "string"
},
"query": {
"default": "",
"description": "Natural-language description of what you're looking for. e.g. 'minimalist editorial agency portfolio'",
"type": "string"
},
"style": {
"description": "Filter to one visual style (e.g. 'minimalism', 'editorial')",
"enum": [
"minimalism",
"editorial",
"brutalism",
"glassmorphism",
"swiss",
"maximalism",
"playful",
"dark-mode",
"monochrome",
"vintage",
"futurist"
],
"type": "string"
},
"vibe": {
"description": "Mood / vibe - 'calm', 'loud', 'luxe', 'technical', 'soft', etc.",
"enum": [
"calm",
"loud",
"playful",
"serious",
"luxe",
"raw",
"soft",
"technical",
"warm",
"cold"
],
"type": "string"
}
},
"type": "object"
},
"name": "search_screens",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:8c880f593a87fa084aaac15393022af3fb1d5412db46a3ce09d9be8404856d28 | sha256sum