Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,536Letters: 14Defects: 1,322counted 4 min ago
teppi

Server definition

Hash
sha256:dcad0f878b6e19c1a40480c70b619009669b9ee94ef44659125a025633805e5d
What it is
What a remote MCP server returned when asked what it offers: 7 tools

The blob, as servednamed by its sha256

{ "instructions": null, "tools": [ { "description": "Turn a deck into a downloadable .pptx file. Requests like \"make it a PowerPoint\", \"PPT로 뽑아줘\", or \"export this deck\" mean this tool. Takes the layout ids and the text for each slot, and returns a signed download link. Coordinates come from our measurements, so the file matches what the gallery shows — but the boxes are fixed, so text longer than slots[].max_chars will be clipped.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "slides": { "description": "Up to 25 slides, in order.", "items": { "properties": { "layout": { "type": "string" }, "slots": { "additionalProperties": { "type": "string" }, "description": "Slot id to text. Ids and their max_chars come from get_layout.", "propertyNames": { "type": "string" }, "type": "object" } }, "required": [ "layout" ], "type": "object" }, "maxItems": 25, "minItems": 1, "type": "array" }, "theme": { "description": "Theme id. Only measured themes work; omit to use the default.", "type": "string" } }, "required": [ "slides" ], "type": "object" }, "name": "export_pptx", "outputSchema": null }, { "description": "Return one layout as a ready-to-use, self-contained document: HTML, theme CSS, and its slot definitions. Call this once the user knows which layout they want, or with ids returned by suggest_deck.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "id": { "type": "string" }, "lang": { "default": "ko", "description": "Language for slot hints and usage notes. Pass the language the user is writing in.", "enum": [ "ko", "en" ], "type": "string" }, "theme_id": { "type": "string" } }, "required": [ "id" ], "type": "object" }, "name": "get_layout", "outputSchema": null }, { "description": "Call this when joining several fetched layouts into one deck file. Requests like \"merge these into one file\", \"bundle it as a deck\", or \"make it one HTML\" mean this tool. Returns the base CSS, assembly rules, spacing tokens, and a viewport snippet for standalone viewing.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {}, "type": "object" }, "name": "get_starter_kit", "outputSchema": null }, { "description": "Return one theme in full: its complete CSS and design tokens.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "id": { "type": "string" } }, "required": [ "id" ], "type": "object" }, "name": "get_theme", "outputSchema": null }, { "description": "Search or filter the layout catalog to find a specific layout. Returns metadata only, no HTML. Also the tool for \"what is new\", \"any new layouts?\", \"what got added since last month\" - pass `since` and it returns only what landed after that date. If the user asked for a whole deck rather than one slide, call suggest_deck first instead of this.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "category": { "type": "string" }, "limit": { "default": 30, "exclusiveMinimum": 0, "maximum": 150, "type": "integer" }, "query": { "type": "string" }, "since": { "description": "ISO date (YYYY-MM-DD). Only layouts added after it. Use for \"what is new\" questions; if the user gave no date, a month back is a sensible default.", "type": "string" } }, "type": "object" }, "name": "list_layouts", "outputSchema": null }, { "description": "Search or filter the theme catalog. Returns metadata and key colors only, not the full CSS.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "mood": { "type": "string" }, "scheme": { "enum": [ "light", "dark" ], "type": "string" } }, "type": "object" }, "name": "list_themes", "outputSchema": null }, { "description": "Compose a deck and return a preview link the user can open in the browser right away. The user sees what the finished deck looks like without a single file being generated. Use this for requests like \"make me a pitch deck\", \"I need a sales deck\", \"10 slides for an investor update\", \"put together a product overview\", or \"show me a deck outline\" - anything where the user has a topic but has not picked layouts yet. ALSO use it when the user already has layouts in hand - \"이 레이아웃들 모아서 프리뷰 만들어줘\", \"combine these layouts into a preview\", \"추천 프리뷰 만들어줘\", \"show these together as a deck\" - pass them as layout_ids and it returns ONE deck preview link for the whole set. Never answer that kind of request with a list of individual layout links: one deck preview is the deliverable. Returns one theme + a slide order + the preview link, plus a `clarify` question to put to the user so the composition and theme are their call, not a guess. Always pass the preview link through to the user verbatim, ask clarify.question with its options, and wait for the answer - then call this tool again with deck_id / theme_id as clarify.answer_with says. Do not start generating files while a clarify question is unanswered. Once it is settled, fetch each layout id with get_layout, then call get_starter_kit to join them into one deck.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "deck_id": { "description": "The composition the user picked from a previous call's clarify.options. Skips topic matching.", "type": "string" }, "layout_ids": { "description": "Layout ids the user or you already picked, in slide order. Skips topic matching and slide_count: the preview link is built from exactly these layouts.", "items": { "type": "string" }, "type": "array" }, "purpose": { "description": "The user's topic or goal, in their own words. e.g. \"startup pitch deck\", \"quarterly business review\"", "type": "string" }, "slide_count": { "default": 10, "description": "How many slides. If the user did not say, use the default of 10 rather than asking.", "exclusiveMinimum": 0, "maximum": 30, "type": "integer" }, "theme_id": { "description": "The theme the user picked from a previous call's clarify.options. Pass deck_id along with it.", "type": "string" }, "tone": { "description": "Desired mood. e.g. \"minimal\", \"bold\", \"warm\". Omit if the user did not mention one.", "type": "string" } }, "required": [ "purpose" ], "type": "object" }, "name": "suggest_deck", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:dcad0f878b6e19c1a40480c70b619009669b9ee94ef44659125a025633805e5d | sha256sum