Renderball

Designed, animated, editable presentations your AI writes on Renderball. No account needed to try.

我該用這個嗎

品質與安全性

A
說明品質
89%
結構描述完整度
85%
命名品質
93%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

發現項目(1)

  • LOWTool 'share_deck' description lacks action verb在 share_deck 中

根據工具定義與協定合規性的自動化分析。

上下文成本

~2,576Token(工具定義)
~3.2 KB典型回應大小
顯著的注意力影響(128k 上下文的 2.01%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "renderball": {
      "url": "https://renderball.com/api/mcp"
    }
  }
}

遠端端點

https://renderball.com/api/mcpstreamable-http

它能做什麼

工具清單

工具(8)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢list_decks

The user's Renderball documents, newest first, with editor links. Needs an account (a key).

輸入結構描述

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡create_deck(brief, brand, brand_url, pages, outline)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "brief": {
      "type": "string",
      "minLength": 20,
      "maxLength": 6000,
      "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."
    },
    "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.",
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 60,
          "description": "The brand's name as it should appear."
        },
        "website": {
          "description": "Their website, e.g. yourcompany.com — used for the wordmark's source, not read.",
          "type": "string",
          "maxLength": 200
        },
        "accent": {
          "description": "The lead brand colour. ONLY if you know it (from their site's stylesheet or the user's material); never guess.",
          "type": "string",
          "pattern": "^#[0-9a-fA-F]{6}$"
        },
        "background": {
          "description": "The page background colour, only if known.",
          "type": "string",
          "pattern": "^#[0-9a-fA-F]{6}$"
        },
        "text": {
          "description": "The main text colour, only if known.",
          "type": "string",
          "pattern": "^#[0-9a-fA-F]{6}$"
        },
        "fonts": {
          "type": "object",
          "properties": {
            "headline": {
              "description": "Headline font family name, only if known.",
              "type": "string",
              "maxLength": 60
            },
            "body": {
              "description": "Body font family name, only if known.",
              "type": "string",
              "maxLength": 60
            }
          }
        },
        "logo_url": {
          "description": "A public https image of the logo (SVG or PNG), only if you have a real one.",
          "type": "string",
          "maxLength": 500,
          "format": "uri"
        },
        "voice": {
          "description": "How the brand speaks, in a sentence or two.",
          "type": "string",
          "maxLength": 300
        }
      },
      "required": [
        "name"
      ]
    },
    "brand_url": {
      "description": "Key holders only: a website Renderball reads for colours, fonts and logo when no brand is declared.",
      "type": "string",
      "maxLength": 300
    },
    "pages": {
      "description": "How many pages you intend to write (default 5). Ignored when `outline` is given.",
      "type": "integer",
      "minimum": 1,
      "maximum": 16
    },
    "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.",
      "type": "object",
      "properties": {
        "tone": {
          "description": "The register, e.g. 'confident, technical, CTO-to-CTO'.",
          "type": "string",
          "maxLength": 300
        },
        "pages": {
          "minItems": 1,
          "maxItems": 16,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "label": {
                "type": "string",
                "minLength": 1,
                "maxLength": 80,
                "description": "Short page title, 2-6 words (e.g. 'The Tracker Tax')."
              },
              "description": {
                "type": "string",
                "minLength": 1,
                "maxLength": 600,
                "description": "What this page must accomplish in the argument, one or two sentences. Not shown on the page."
              },
              "visual_concept": {
                "type": "string",
                "minLength": 1,
                "maxLength": 1200,
                "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."
              },
              "content": {
                "type": "object",
                "properties": {
                  "eyebrow": {
                    "description": "Tiny label above the headline, e.g. 'THE PROBLEM'.",
                    "type": "string",
                    "maxLength": 60
                  },
                  "headline": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 120,
                    "description": "The one strong display line."
                  },
                  "lede": {
                    "description": "Supporting sentence or two.",
                    "type": "string",
                    "maxLength": 400
                  },
                  "bullets": {
                    "description": "Up to 6 short points; no walls.",
                    "maxItems": 6,
                    "type": "array",
                    "items": {
                      "type": "string",
                      "maxLength": 160
                    }
                  },
                  "caption": {
                    "description": "Small mono caption, e.g. a source line.",
                    "type": "string",
                    "maxLength": 200
                  },
                  "cta": {
                    "type": "object",
                    "properties": {
                      "primary": {
                        "type": "string",
                        "maxLength": 60
                      },
                      "secondary": {
                        "type": "string",
                        "maxLength": 80
                      }
                    },
                    "required": [
                      "primary"
                    ]
                  },
                  "meta": {
                    "description": "Stat tiles as label/value pairs — ONLY figures the user gave you.",
                    "maxItems": 6,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "label": {
                          "type": "string",
                          "maxLength": 60
                        },
                        "value": {
                          "type": "string",
                          "maxLength": 60
                        }
                      },
                      "required": [
                        "label",
                        "value"
                      ]
                    }
                  }
                },
                "required": [
                  "headline"
                ],
                "description": "The approved copy. Every numeral here must come from the user's material — the deck's truth check enforces it."
              }
            },
            "required": [
              "label",
              "description",
              "visual_concept",
              "content"
            ]
          }
        }
      },
      "required": [
        "pages"
      ]
    }
  },
  "required": [
    "brief"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡write_outline(deck_id, guest_token, tone, pages)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "deck_id": {
      "type": "string",
      "minLength": 10,
      "maxLength": 40
    },
    "guest_token": {
      "description": "Only for a deck created WITHOUT an account: the guest_token create_deck returned.",
      "type": "string",
      "maxLength": 80
    },
    "tone": {
      "description": "The register, e.g. 'confident, technical, CTO-to-CTO'.",
      "type": "string",
      "maxLength": 300
    },
    "pages": {
      "minItems": 1,
      "maxItems": 16,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80,
            "description": "Short page title, 2-6 words (e.g. 'The Tracker Tax')."
          },
          "description": {
            "type": "string",
            "minLength": 1,
            "maxLength": 600,
            "description": "What this page must accomplish in the argument, one or two sentences. Not shown on the page."
          },
          "visual_concept": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1200,
            "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."
          },
          "content": {
            "type": "object",
            "properties": {
              "eyebrow": {
                "description": "Tiny label above the headline, e.g. 'THE PROBLEM'.",
                "type": "string",
                "maxLength": 60
              },
              "headline": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120,
                "description": "The one strong display line."
              },
              "lede": {
                "description": "Supporting sentence or two.",
                "type": "string",
                "maxLength": 400
              },
              "bullets": {
                "description": "Up to 6 short points; no walls.",
                "maxItems": 6,
                "type": "array",
                "items": {
                  "type": "string",
                  "maxLength": 160
                }
              },
              "caption": {
                "description": "Small mono caption, e.g. a source line.",
                "type": "string",
                "maxLength": 200
              },
              "cta": {
                "type": "object",
                "properties": {
                  "primary": {
                    "type": "string",
                    "maxLength": 60
                  },
                  "secondary": {
                    "type": "string",
                    "maxLength": 80
                  }
                },
                "required": [
                  "primary"
                ]
              },
              "meta": {
                "description": "Stat tiles as label/value pairs — ONLY figures the user gave you.",
                "maxItems": 6,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "label": {
                      "type": "string",
                      "maxLength": 60
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 60
                    }
                  },
                  "required": [
                    "label",
                    "value"
                  ]
                }
              }
            },
            "required": [
              "headline"
            ],
            "description": "The approved copy. Every numeral here must come from the user's material — the deck's truth check enforces it."
          }
        },
        "required": [
          "label",
          "description",
          "visual_concept",
          "content"
        ]
      }
    }
  },
  "required": [
    "deck_id",
    "pages"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_brief(deck_id, guest_token)

The writing brief for a deck whose outline is already saved.

輸入結構描述

{
  "type": "object",
  "properties": {
    "deck_id": {
      "type": "string",
      "minLength": 10,
      "maxLength": 40
    },
    "guest_token": {
      "description": "Only for a deck created WITHOUT an account: the guest_token create_deck returned.",
      "type": "string",
      "maxLength": 80
    }
  },
  "required": [
    "deck_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢see_deck(deck_id, guest_token)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "deck_id": {
      "type": "string",
      "minLength": 10,
      "maxLength": 40
    },
    "guest_token": {
      "description": "Only for a deck created WITHOUT an account: the guest_token create_deck returned.",
      "type": "string",
      "maxLength": 80
    }
  },
  "required": [
    "deck_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡submit_deck(deck_id, guest_token, source, label, wait_seconds)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "deck_id": {
      "type": "string",
      "minLength": 10,
      "maxLength": 40
    },
    "guest_token": {
      "description": "Only for a deck created WITHOUT an account: the guest_token create_deck returned.",
      "type": "string",
      "maxLength": 80
    },
    "source": {
      "type": "string",
      "minLength": 1500,
      "maxLength": 600000,
      "description": "The complete deck file, exactly as the writing brief specifies. Raw file or a ```tsx fenced block."
    },
    "label": {
      "description": "Who wrote it, e.g. 'claude-code'. Shown in the deck's trace.",
      "type": "string",
      "maxLength": 40
    },
    "wait_seconds": {
      "description": "How long to wait for the import before returning (default 25). Use deck_status to keep checking.",
      "type": "integer",
      "minimum": 0,
      "maximum": 60
    }
  },
  "required": [
    "deck_id",
    "source"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢deck_status(deck_id, guest_token)

Whether a submitted deck is still importing, ready (with the editor link), or failed (with the reason).

輸入結構描述

{
  "type": "object",
  "properties": {
    "deck_id": {
      "type": "string",
      "minLength": 10,
      "maxLength": 40
    },
    "guest_token": {
      "description": "Only for a deck created WITHOUT an account: the guest_token create_deck returned.",
      "type": "string",
      "maxLength": 80
    }
  },
  "required": [
    "deck_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
⚪share_deck(deck_id, guest_token)

Turn on the public link for a deck and return it.

輸入結構描述

{
  "type": "object",
  "properties": {
    "deck_id": {
      "type": "string",
      "minLength": 10,
      "maxLength": 40
    },
    "guest_token": {
      "description": "Only for a deck created WITHOUT an account: the guest_token create_deck returned.",
      "type": "string",
      "maxLength": 80
    }
  },
  "required": [
    "deck_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本8 個工具
已驗證未記錄版本8 個工具