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 verbshare_deck 内

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~2,576トークン数(ツール定義)
~3.2 KB一般的なレスポンスサイズ
注意への影響は大きい(128k コンテキストの 2.01%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `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 件