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

Server definition

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

The blob, as servednamed by its sha256

{ "instructions": "Renderball turns a deck you write into a designed, animated, editable presentation the user can finish in the Renderball editor and share. Flow: (1) create_deck with the user's brief, the brand as you know it (name, and only the colours, fonts and logo you actually have — never guess a colour) AND your outline, one entry per page — the reply carries the deck_id and the WRITING BRIEF. (2) Write the complete deck file exactly as that brief specifies (a single TypeScript React file; every numeral must come from the user's material). (3) submit_deck with the file — it waits for the import; if it still reports 'importing', call deck_status until 'ready'. The ready reply carries the RENDERED PAGES as images: look at every page for overlapping or clipped text, odd spacing or an element off its page, fix the file and submit_deck again (see_deck shows the pages any time). (4) Give the user the link you get back: editor_url for an account, or deck_url for a guest deck — one link that shows the deck and has an Edit button that signs them in. Two calls for a whole deck; write_outline only exists to change the outline of an existing deck, get_brief to re-read its brief. No key? You can still make a deck. create_deck without an account returns a guest_token — pass it on every later call for that deck. Guest decks are limited per day and expire unless the user signs in (free, from the deck's Edit button or inside the editor), which makes the deck theirs. Never invent facts, figures or quotes: the deck's truth check flags anything not in the brief. Ask the user for missing numbers instead of guessing.", "tools": [ { "description": "Start a new presentation from a brief, the brand as YOU know it (name, and only the colours, fonts and logo you actually have — never guess a colour) and your outline. With the outline the reply carries the WRITING BRIEF, so the whole deck is two calls: this, then submit_deck. Without an account it also returns a guest_token to pass on later calls and deck_url, the one link to give the user.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "brand": { "description": "The brand as YOU know it: name, and only the colours, fonts and logo you actually have. Never guess a colour; leave it out.", "properties": { "accent": { "description": "The lead brand colour. ONLY if you know it (from their site's stylesheet or the user's material); never guess.", "pattern": "^#[0-9a-fA-F]{6}$", "type": "string" }, "background": { "description": "The page background colour, only if known.", "pattern": "^#[0-9a-fA-F]{6}$", "type": "string" }, "fonts": { "properties": { "body": { "description": "Body font family name, only if known.", "maxLength": 60, "type": "string" }, "headline": { "description": "Headline font family name, only if known.", "maxLength": 60, "type": "string" } }, "type": "object" }, "logo_url": { "description": "A public https image of the logo (SVG or PNG), only if you have a real one.", "format": "uri", "maxLength": 500, "type": "string" }, "name": { "description": "The brand's name as it should appear.", "maxLength": 60, "minLength": 1, "type": "string" }, "text": { "description": "The main text colour, only if known.", "pattern": "^#[0-9a-fA-F]{6}$", "type": "string" }, "voice": { "description": "How the brand speaks, in a sentence or two.", "maxLength": 300, "type": "string" }, "website": { "description": "Their website, e.g. yourcompany.com — used for the wordmark's source, not read.", "maxLength": 200, "type": "string" } }, "required": [ "name" ], "type": "object" }, "brand_url": { "description": "Key holders only: a website Renderball reads for colours, fonts and logo when no brand is declared.", "maxLength": 300, "type": "string" }, "brief": { "description": "What the deck is for, who it is for, what it should argue and ask. Real facts only; the truth check refuses invented figures.", "maxLength": 6000, "minLength": 20, "type": "string" }, "outline": { "description": "Your page-by-page outline (one entry per page: label, description, visual_concept, content with a headline). Send it here and the reply carries the WRITING BRIEF — one call instead of create_deck + write_outline.", "properties": { "pages": { "items": { "properties": { "content": { "description": "The approved copy. Every numeral here must come from the user's material — the deck's truth check enforces it.", "properties": { "bullets": { "description": "Up to 6 short points; no walls.", "items": { "maxLength": 160, "type": "string" }, "maxItems": 6, "type": "array" }, "caption": { "description": "Small mono caption, e.g. a source line.", "maxLength": 200, "type": "string" }, "cta": { "properties": { "primary": { "maxLength": 60, "type": "string" }, "secondary": { "maxLength": 80, "type": "string" } }, "required": [ "primary" ], "type": "object" }, "eyebrow": { "description": "Tiny label above the headline, e.g. 'THE PROBLEM'.", "maxLength": 60, "type": "string" }, "headline": { "description": "The one strong display line.", "maxLength": 120, "minLength": 1, "type": "string" }, "lede": { "description": "Supporting sentence or two.", "maxLength": 400, "type": "string" }, "meta": { "description": "Stat tiles as label/value pairs — ONLY figures the user gave you.", "items": { "properties": { "label": { "maxLength": 60, "type": "string" }, "value": { "maxLength": 60, "type": "string" } }, "required": [ "label", "value" ], "type": "object" }, "maxItems": 6, "type": "array" } }, "required": [ "headline" ], "type": "object" }, "description": { "description": "What this page must accomplish in the argument, one or two sentences. Not shown on the page.", "maxLength": 600, "minLength": 1, "type": "string" }, "label": { "description": "Short page title, 2-6 words (e.g. 'The Tracker Tax').", "maxLength": 80, "minLength": 1, "type": "string" }, "visual_concept": { "description": "The composition and the one graphic device that expresses the page's argument: layout, the diagram/chart/mock, where the headline sits, colours by role. Concrete enough to draw from.", "maxLength": 1200, "minLength": 1, "type": "string" } }, "required": [ "label", "description", "visual_concept", "content" ], "type": "object" }, "maxItems": 16, "minItems": 1, "type": "array" }, "tone": { "description": "The register, e.g. 'confident, technical, CTO-to-CTO'.", "maxLength": 300, "type": "string" } }, "required": [ "pages" ], "type": "object" }, "pages": { "description": "How many pages you intend to write (default 5). Ignored when `outline` is given.", "maximum": 16, "minimum": 1, "type": "integer" } }, "required": [ "brief" ], "type": "object" }, "name": "create_deck", "outputSchema": null }, { "description": "Whether a submitted deck is still importing, ready (with the editor link), or failed (with the reason).", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "deck_id": { "maxLength": 40, "minLength": 10, "type": "string" }, "guest_token": { "description": "Only for a deck created WITHOUT an account: the guest_token create_deck returned.", "maxLength": 80, "type": "string" } }, "required": [ "deck_id" ], "type": "object" }, "name": "deck_status", "outputSchema": null }, { "description": "The writing brief for a deck whose outline is already saved.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "deck_id": { "maxLength": 40, "minLength": 10, "type": "string" }, "guest_token": { "description": "Only for a deck created WITHOUT an account: the guest_token create_deck returned.", "maxLength": 80, "type": "string" } }, "required": [ "deck_id" ], "type": "object" }, "name": "get_brief", "outputSchema": null }, { "description": "The user's Renderball documents, newest first, with editor links. Needs an account (a key).", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {}, "type": "object" }, "name": "list_decks", "outputSchema": null }, { "description": "The deck's rendered pages as images, page 1 first — look at them for overlapping or clipped text, odd spacing or an element off its page, then fix the file and submit_deck again. Available once the deck has been submitted.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "deck_id": { "maxLength": 40, "minLength": 10, "type": "string" }, "guest_token": { "description": "Only for a deck created WITHOUT an account: the guest_token create_deck returned.", "maxLength": 80, "type": "string" } }, "required": [ "deck_id" ], "type": "object" }, "name": "see_deck", "outputSchema": null }, { "description": "Turn on the public link for a deck and return it.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "deck_id": { "maxLength": 40, "minLength": 10, "type": "string" }, "guest_token": { "description": "Only for a deck created WITHOUT an account: the guest_token create_deck returned.", "maxLength": 80, "type": "string" } }, "required": [ "deck_id" ], "type": "object" }, "name": "share_deck", "outputSchema": null }, { "description": "Send the complete deck file you wrote. Renderball checks it against the brief, repairs small slips, renders every page and opens it in the editor. Returns 'ready' with the editor_url, or 'importing' — then poll deck_status.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "deck_id": { "maxLength": 40, "minLength": 10, "type": "string" }, "guest_token": { "description": "Only for a deck created WITHOUT an account: the guest_token create_deck returned.", "maxLength": 80, "type": "string" }, "label": { "description": "Who wrote it, e.g. 'claude-code'. Shown in the deck's trace.", "maxLength": 40, "type": "string" }, "source": { "description": "The complete deck file, exactly as the writing brief specifies. Raw file or a ```tsx fenced block.", "maxLength": 600000, "minLength": 1500, "type": "string" }, "wait_seconds": { "description": "How long to wait for the import before returning (default 25). Use deck_status to keep checking.", "maximum": 60, "minimum": 0, "type": "integer" } }, "required": [ "deck_id", "source" ], "type": "object" }, "name": "submit_deck", "outputSchema": null }, { "description": "Save the page-by-page outline you wrote for a deck. Returns the WRITING BRIEF: the exact instructions for writing the deck file (format, brand facts, truth rules). Follow it, then call submit_deck.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "deck_id": { "maxLength": 40, "minLength": 10, "type": "string" }, "guest_token": { "description": "Only for a deck created WITHOUT an account: the guest_token create_deck returned.", "maxLength": 80, "type": "string" }, "pages": { "items": { "properties": { "content": { "description": "The approved copy. Every numeral here must come from the user's material — the deck's truth check enforces it.", "properties": { "bullets": { "description": "Up to 6 short points; no walls.", "items": { "maxLength": 160, "type": "string" }, "maxItems": 6, "type": "array" }, "caption": { "description": "Small mono caption, e.g. a source line.", "maxLength": 200, "type": "string" }, "cta": { "properties": { "primary": { "maxLength": 60, "type": "string" }, "secondary": { "maxLength": 80, "type": "string" } }, "required": [ "primary" ], "type": "object" }, "eyebrow": { "description": "Tiny label above the headline, e.g. 'THE PROBLEM'.", "maxLength": 60, "type": "string" }, "headline": { "description": "The one strong display line.", "maxLength": 120, "minLength": 1, "type": "string" }, "lede": { "description": "Supporting sentence or two.", "maxLength": 400, "type": "string" }, "meta": { "description": "Stat tiles as label/value pairs — ONLY figures the user gave you.", "items": { "properties": { "label": { "maxLength": 60, "type": "string" }, "value": { "maxLength": 60, "type": "string" } }, "required": [ "label", "value" ], "type": "object" }, "maxItems": 6, "type": "array" } }, "required": [ "headline" ], "type": "object" }, "description": { "description": "What this page must accomplish in the argument, one or two sentences. Not shown on the page.", "maxLength": 600, "minLength": 1, "type": "string" }, "label": { "description": "Short page title, 2-6 words (e.g. 'The Tracker Tax').", "maxLength": 80, "minLength": 1, "type": "string" }, "visual_concept": { "description": "The composition and the one graphic device that expresses the page's argument: layout, the diagram/chart/mock, where the headline sits, colours by role. Concrete enough to draw from.", "maxLength": 1200, "minLength": 1, "type": "string" } }, "required": [ "label", "description", "visual_concept", "content" ], "type": "object" }, "maxItems": 16, "minItems": 1, "type": "array" }, "tone": { "description": "The register, e.g. 'confident, technical, CTO-to-CTO'.", "maxLength": 300, "type": "string" } }, "required": [ "deck_id", "pages" ], "type": "object" }, "name": "write_outline", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:eee816af59c8c5202b57c5a0748fd508d9592896e474c2413edef624f671a305 | sha256sum