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 yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:dcad0f878b6e19c1a40480c70b619009669b9ee94ef44659125a025633805e5d | sha256sum