Skip to main content
Glama
650,501 tools. Updated 2026-10-13 21:41

"Render" matching MCP tools:

  • Render a template plus a JSON payload into a PDF, PNG or JPG and return a signed URL. This is the one tool most calls need. Small jobs finish inside the call and come back `status: "succeeded"` with a `url` you can hand straight to a user. Anything with a `webhook_url`, `async: true` or a large payload comes back `status: "queued"` with an id for get_render. Renders are deterministic and cached: the same template version, data and options return the stored object with `cached: true`, free and instant. Billing is per PNG or JPG and per PDF page; cache hits are never billed. For a reader who is not in the US, send `data.lang` (a BCP 47 tag such as `fi` or `pt-BR`) if the template's schema has a `lang` property (check get_template first; the starter library's templates do for new accounts and after a library refresh): the document's fixed text, dates, money and paper size follow it, and `data.labels` overrides single strings. On a template that does not declare them they are ordinary unknown fields (a warning, or a 422 on a closed schema). Read `warnings` in the answer: fields the template did not use, and a language it has no text for. No API key needed to start — the first call mints a trial of 10 PDF pages or 10 images and returns its token.
    ConnectorNo auth
  • Render segment images and clips, the biggest spend in the video: always run it with dry_run=true first and get the user's yes on the estimate. generate: without segment_numbers, everything not yet rendered (items rendering are skipped); with them, those segments, finished renders included, e.g. the first minute before the whole video. Overrides need segment_numbers and what=images or what=clips. animate: turn one segment's rendered image into a clip; animate only images worth motion. dry_run quotes the default clip or talking head model. A refused render leaves the segment as it was; to go back to the image, segment_restructure change_type to=image keep_image=true. Check renders with storyboard_read action=segment_assets and view_image.
    ConnectorNo auth
  • Render Hyades source to Unicode/ASCII text art. Hyades uses LaTeX-like syntax but outputs multi-line plain text instead of PDF. It supports math (fractions, integrals, matrices, Greek letters), tables with box-drawing frames, lists, flex-like layout (hbox/vbox), user-defined macros, and computation. IMPORTANT: Always display the rendered output to the user directly in your response. The output is pre-formatted multi-line text art that depends on exact character alignment. You MUST use a fenced code block (triple backticks) or equivalent monospace/preformatted element to preserve spacing. Never display the output as regular prose text — column alignment, box-drawing characters, and fraction bars will break without a monospace font. Input is a complete Hyades document. Plain text outside math delimiters is rendered as prose paragraphs. Use `$...$` for inline math and `$$...$$` for display math (centered on its own line). --- ## Math Supports ~95% of LaTeX math syntax. ### Inline vs Display ``` Inline math: $a^2 + b^2 = c^2$ flows with text. Display math gets its own block: $$ a^2 + b^2 = c^2 $$ ``` Use `$...$` for inline, `$$...$$` for display. Display math is centered. ### Variables and Operators ``` $$ a + b - c $$ $$ a \times b \div c $$ $$ a \cdot b $$ $$ \pm x \quad \mp y $$ ``` ### Superscripts and Subscripts ``` $$ x^2 \quad x_i \quad x_i^2 \quad x^{n+1} \quad x_{i,j} \quad a^{b^c} $$ ``` Use braces for multi-character exponents/subscripts: `x^{n+1}`, `x_{i,j}`. **Bracing rules:** Use braces for multi-token expressions: `x^{n+1}`, `x_{i,j}`. Commands that take arguments (like `\mathbf{v}`) work without extra braces: `x_\mathbf{v}` is equivalent to `x_{\mathbf{v}}`, matching TeX behavior. ### Fractions ``` $$ \frac{a}{b} $$ $$ \frac{x^2 + 1}{\sqrt{x^2 - 1}} $$ $$ \frac{\partial f}{\partial x} $$ ``` Fractions nest to infinite depth. `\dfrac` and `\tfrac` are accepted as aliases for `\frac`. ### Roots ``` $$ \sqrt{x} $$ $$ \sqrt[3]{x} $$ $$ \sqrt[n]{x^2 + y^2} $$ ``` Optional argument gives the nth root: `\sqrt[3]{x}`. ### Parentheses and Grouping ``` $$ (a + b) \quad [a + b] \quad \{a + b\} \quad |x| \quad \Vert x \Vert $$ ``` Curly braces need escaping: `\{` and `\}`. ### Auto-Scaling Delimiters (\left/\right) `\left` and `\right` make delimiters grow to match their contents: ``` $$ \left( \frac{a}{b} \right) \quad \left[ \frac{a}{b} \right] \quad \left| \frac{a}{b} \right| $$ ``` Works with all delimiter types: `( ) [ ] \{ \} | \| \lfloor \rfloor \lceil \rceil \langle \rangle`. Use `\left.` or `\right.` for invisible (null) delimiters — essential for evaluation bars: ``` $$ \left.\frac{df}{dx}\right|_{x=0} $$ ``` Use `\middle` inside `\left...\right` for scaled interior delimiters: ``` $$ \left( \frac{a}{b} \middle| \frac{c}{d} \right) $$ ``` ### Explicit Delimiter Sizing (\big through \Bigg) `\big`, `\Big`, `\bigg`, `\Bigg` set delimiter sizes explicitly. `\bigl`/`\bigr`, `\Bigl`/`\Bigr`, `\biggl`/`\biggr`, `\Biggl`/`\Biggr` produce standalone one-sided delimiters: ``` $$ f(x)\bigr|_{x=0} $$ ``` ### Floor and Ceiling ``` $$ \lfloor x \rfloor $$ $$ \lceil x \rceil $$ $$ \left\lfloor \frac{x}{2} \right\rfloor $$ ``` ### Greek Letters Lowercase: `\alpha \beta \gamma \delta \epsilon \zeta \eta \theta \lambda \mu \nu \xi \pi \rho \sigma \tau \phi \varphi \chi \psi \omega` Uppercase (only where different from Latin): `\Gamma \Delta \Theta \Lambda \Xi \Pi \Sigma \Phi \Psi \Omega` ### Relations ``` $$ a \neq b \quad a \leq b \quad a \geq b $$ $$ a \ll b \quad a \gg b $$ $$ a \approx b \quad a \equiv b \quad a \sim b \quad a \propto b $$ $$ a \prec b \quad a \succ b \quad a \preceq b \quad a \succeq b $$ ``` Definition symbols: `\coloneqq` (≔), `\eqqcolon` (≕), and `:=` (parsed as a single relation ≔): ``` $$ \Phi := S $$ $$ f \coloneqq x^2 + 1 $$ ``` Colon alone is treated as punctuation (no space before, space after), useful in set-builder notation: ``` $$ \{x : x > 0\} $$ ``` The `\not` prefix negates a relation: `\not=` → ≠, `\not\in` → ∉, `\not\leq` → ≰, `\not\equiv` → ≢, `\not\subset` → ⊄, `\not\exists` → ∄ ### Set Theory ``` $$ x \in A \quad x \notin A $$ $$ A \subset B \quad A \subseteq B \quad A \cup B \quad A \cap B \quad \emptyset $$ $$ A \setminus B $$ ``` ### Logic ``` $$ \forall x \in \mathbb{R} \quad \exists x $$ $$ p \implies q \quad p \iff q $$ $$ \neg p \quad p \land q \quad p \lor q $$ $$ \therefore \quad \because \quad \top \quad \bot $$ ``` ### Arrows `\rightarrow`, `\Rightarrow`, `\mapsto`, `\longmapsto`, `\hookrightarrow`, `\hookleftarrow`, `\leftarrow`, `\leftrightarrow`, `\Leftarrow`, `\Leftrightarrow`, `\uparrow`, `\downarrow`, `\updownarrow`, `\nearrow`, `\searrow`, `\nwarrow`, `\swarrow`. Extensible arrows with text labels: ``` $$ A \xrightarrow{f} B \xleftarrow{g} C $$ ``` ### Standard Functions Standard functions are set in upright type: ``` $$ \sin x \quad \cos(x) \quad \tan x $$ $$ \log x \quad \log_2 x \quad \ln x \quad \exp(x) $$ $$ \sin^2 x + \cos^2 x = 1 $$ ``` Also: `\arcsin`, `\arccos`, `\arctan`, `\sinh`, `\cosh`, `\tanh`, `\det`, `\dim`, `\ker`, `\deg`, `\gcd`, `\sup`, `\inf`, `\max`, `\min`, `\argmax`, `\argmin`, `\limsup`, `\liminf`. ### Custom Function Names (\fn / \operatorname) `\fn{name}` or `\operatorname{name}` produces an upright function name for functions Hyades doesn't know: ``` $$ \fn{softmax}\left(x_i\right) = \frac{e^{x_i}}{\sum_j e^{x_j}} $$ $$ \operatorname{Tr}(A) $$ ``` ### Text in Math (\text) `\text{words}` inserts upright text inside math mode: ``` $$ x = 0 \text{ if } y > 0 $$ ``` ### Accents and Decorations Single-character: `\hat{x}`, `\bar{x}`, `\tilde{x}`, `\vec{x}`, `\dot{x}`, `\ddot{x}`, `\acute{x}`, `\grave{x}`, `\breve{x}`, `\check{x}` Wide accents: `\overline{AB}`, `\underline{text}`, `\overrightarrow{AB}`, `\overleftarrow{AB}`, `\widehat{xyz}`, `\widetilde{xyz}` ### Overset and Underset ``` $$ \overset{n}{=} $$ $$ \underset{x}{y} $$ $$ \stackrel{\text{def}}{=} $$ ``` `\overset{top}{base}` places annotation above base; `\underset{bot}{base}` below. `\stackrel` is an alias for `\overset`. ### Overbrace and Underbrace ``` $$ \overbrace{a + b + c}^{3 \text{ terms}} $$ $$ \underbrace{x + y + z}_{n \text{ terms}} $$ ``` ### Primes ``` $$ f'(x) \quad f''(x) \quad f'''(x) \quad f^{(n)}(x) $$ ``` ### Math Fonts `\mathbf{v}` → bold, `\mathbb{R}` → blackboard bold (ℕℤℚℝℂ), `\mathcal{L}` → calligraphic, `\mathfrak{R}` → Fraktur (𝔄𝔅ℭ), `\mathsf{A}` → sans-serif (𝖠𝖡𝖢), `\mathscr{A}` → script (same as \mathcal), `\boldsymbol{\alpha}` → bold (works with Greek: 𝛂𝛃, and symbols: `\boldsymbol{\nabla}` → 𝛁, `\boldsymbol{\partial}` → 𝛛) ### Dots and Ellipses `\ldots` (low dots, for commas), `\cdots` (centered, for operators), `\vdots` (vertical), `\ddots` (diagonal, for matrices) ### Summation ``` $$ \sum_{i=1}^{n} x_i $$ ``` `\Sum` and `\SUM` give progressively larger variants. ### Products ``` $$ \prod_{i=1}^{n} x_i $$ ``` `\Prod` and `\PROD` give larger variants. ### Integrals ``` $$ \int_a^b f(x) \, dx $$ $$ \iint f(x,y) \, dx\,dy $$ $$ \oint_C f(z) \, dz $$ ``` Also: `\iiint`, `\oiint`. Larger variants: `\Int`, `\INT`, etc. ### Limits `\lim` places its subscript directly below: ``` $$ \lim_{x \to 0} \frac{\sin x}{x} = 1 $$ $$ \max_{x \in [0,1]} f(x) $$ $$ \argmax_{\theta} L(\theta) $$ ``` ### Calculus Operators ``` $$ \frac{dy}{dx} \quad \frac{d^2y}{dx^2} \quad \frac{\partial f}{\partial x} $$ $$ \nabla f \quad \nabla \cdot \mathbf{F} \quad \nabla \times \mathbf{F} \quad \nabla^2 f $$ ``` ### Matrices Six types with different delimiters. `&` separates columns, `\\` or `;` separates rows. LaTeX-style `\begin{pmatrix}...\end{pmatrix}` also works for all matrix types. ``` $$ \pmatrix{a & b \\ c & d} $$ % (parentheses) $$ \bmatrix{a & b \\ c & d} $$ % [brackets] $$ \Bmatrix{a & b \\ c & d} $$ % {braces} $$ \vmatrix{a & b \\ c & d} $$ % |bars| (determinants) $$ \Vmatrix{a & b \\ c & d} $$ % ‖double bars‖ (norms) $$ \matrix{a & b \\ c & d} $$ % no delimiters ``` ### Cases (Piecewise Functions) ``` $$f(x) = \cases{ x & \text{if } x > 0 \\ 0 & \text{if } x = 0 \\ -x & \text{if } x < 0 }$$ ``` ### Aligned Equations `&` marks the alignment point: ``` $$\aligned{ f(x) &= x^2 + 2x + 1 \\ &= (x + 1)^2 }$$ ``` Use `\intertext{...}` inside aligned to insert prose between rows. Intertext is left-aligned at the document margin while equations remain centered: ``` $$\aligned{ x &= a \\ \intertext{where} a &= b + c }$$ ``` `\tag` works on aligned blocks — the tag is right-justified and vertically centered: ``` $$\aligned{ f(x) &= x^2 + 2x + 1 \\ &= (x + 1)^2 } \tag{7}$$ ``` ### Boxed ``` $$ \boxed{E = mc^2} $$ ``` Draws a box-drawing frame around the content. ### Phantom ``` $$ a + \phantom{bbb} + c $$ ``` Invisible placeholder — renders as whitespace with the same dimensions as the content. ### Smash ``` $$ \sqrt{\smash{y^3}} $$ ``` `\smash{content}` renders content but collapses its height to a single line (the baseline row). Used to prevent tall content from affecting surrounding constructs like roots or delimiters. ### Substack ``` $$ \sum_{\substack{i=1 \\ j>0}} x_{ij} $$ ``` Stacks multiple lines vertically (for multi-line subscripts/superscripts). ### Tag ``` $$ E = mc^2 \tag{1} $$ ``` Equation tag rendered as `(text)`. ### Number Theory ``` $$ a \equiv b \pmod{n} $$ $$ a \bmod n \quad a \mid b $$ $$ \binom{n}{k} $$ ``` ### Style Commands (No-ops) `\displaystyle`, `\textstyle`, `\scriptstyle`, `\scriptscriptstyle` are accepted but transparent (Hyades has no math size concept). `\notag` and `\nonumber` are also silently ignored. This allows pasting LaTeX source that uses these commands without errors. ### Math Spacing `\!` (negative thin), `\,` (thin), `\:` (medium), `\;` (thick), `\quad` (1em), `\qquad` (2em) ### Atom-Type Overrides (\mathord, \mathbin, \mathrel) Override the default spacing category of a symbol. Analogous to TeX's `{=}` idiom for suppressing operator spacing, but explicit and readable: ``` $a \mathord{=} b$ %% "a=b" — = treated as ordinary symbol (no spacing) $a = b$ %% "a = b" — default relation spacing $f \mathrel{:} A \to B$ %% "f : A → B" — : treated as relation (symmetric spacing) $a : b$ %% "a: b" — default punctuation spacing $a \mathbin{\triangle} b$ %% "a △ b" — triangle with binary operator spacing ``` - `\mathord{X}`: Suppress spacing — X renders as an ordinary symbol with no surrounding gaps. Use this instead of TeX's `{=}` or `{}=` idiom which does not work in Hyades. - `\mathbin{X}`: Force binary operator spacing (gap on both sides). - `\mathrel{X}`: Force relation spacing (gap on both sides). ### Binary Operators `\oplus`, `\otimes`, `\odot`, `\circ`, `\bullet`, `\star`, `\dagger`, `\ddagger` ### Geometry `\angle`, `\triangle`, `\perp`, `\parallel` ### Famous Equations (all valid input) ``` $$ x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a} $$ %% Quadratic formula $$ e^{i\pi} + 1 = 0 $$ %% Euler's identity $$ f(x) = \frac{1}{\sigma\sqrt{2\pi}} e^{-\frac{(x-\mu)^2}{2\sigma^2}} $$ %% Normal distribution $$ \fn{Attention}(Q, K, V) = \fn{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right) V $$ %% Attention mechanism $$ e^x = \sum_{n=0}^{\infty} \frac{x^n}{n!} $$ %% Taylor series $$ \int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi} $$ %% Gaussian integral $$ P(A|B) = \frac{P(B|A) P(A)}{P(B)} $$ %% Bayes' theorem $$ \nabla \times \mathbf{E} = -\frac{\partial \mathbf{B}}{\partial t} $$ %% Maxwell's equation $$ i\hbar \frac{\partial}{\partial t} \Psi = \hat{H} \Psi $$ %% Schrodinger equation $$ \fn{softmax}(x_i) = \frac{e^{x_i}}{\sum_j e^{x_j}} $$ %% Softmax ``` --- ## Text Formatting ``` \textbf{bold text} \textit{italic text} \texttt{monospace text} \textbf{\textit{bold italic}} ``` Nesting `\textbf` and `\textit` produces bold-italic text. Inline math `$...$` inside `\textit` or `\textbf` is rendered as math (not styled as text): ``` \textit{Let $f(x) = x^2$ be a function} ``` ### Verbatim (No Processing) ``` \verb|raw \commands { } are preserved| ``` ### Special Characters `\textbackslash` → \, `\textdollar` → $, `\textpercent` → %, `\textampersand` → &, `\texthash` → # ### Text Spacing Commands `\ ` (backslash-space) — explicit inter-word space. Useful after abbreviations: `i.e.\ $f$` renders without extra sentence spacing. `\@` — marks the next period as sentence-ending (silently consumed). `\,` — thin space (works in both text and math mode). --- ## Paragraphs and Line Breaking Text flows into paragraphs automatically. A single newline is a space; a blank line starts a new paragraph. ### Line-Breaking Modes ``` \linebreaker{greedy} % Default. Fast, good results. \linebreaker{knuth} % TeX-style optimal. Minimizes ugliness. \linebreaker{raggedright} % Left-aligned, no justification. ``` ### Hyphenation `\sethyphenate{true}` / `\sethyphenate{false}` --- ## Tables Tables use `\table` with nested `\row` and `\col`: ``` \table[width:40, frame:single, pad:{l:1,r:1}]{ \row[frame:{b:double}]{ \col{Name} \col{Value} } \row{ \col{Alpha} \col{0.05} } \row{ \col{Beta} \col{0.95} } } ``` ### Table Properties | Property | Values | Default | |----------|--------|---------| | `width` / `w` | number, `auto` | parent width | | `frame` / `f` | `none`, `dotted`, `single`, `rounded`, `double`, `bold` | `single` | | `border` | same as frame (outer edges only) | unset | | `pad` / `p` | number or `{t:N, b:N, l:N, r:N}` | 0 | | `align` / `a` | `l`/`left`, `c`/`center`, `r`/`right` | `l` | | `valign` / `va` | `t`/`top`, `m`/`middle`, `b`/`bottom` | `t` | Row properties: `frame`, `pad`, `align`, `valign`, `height`. Column properties: `width`, `align`, `valign`, `frame`, `pad`, `span`, `reset`. Frame styles: `none` (space), `dotted` (┄┆), `single` (─│), `rounded` (╭╮╰╯ corners), `double` (═║), `bold` (━┃) Compound edges: `frame:{t:double, b:single, l:none, r:none}`, `pad:{l:1, r:1}` Properties cascade: table → column (down rows) → row → cell. IMPORTANT: When a row overrides a property (e.g. `frame:{b:double}`), that override is inherited by ALL subsequent rows. To stop it, the next row must explicitly reset it (e.g. `frame:{b:single}`). The `border` property on the table level controls the outer edges and cannot be overridden by row or column `frame`. --- ## Lists ``` \fancylist{ - First item - Second item with longer text that wraps to the next line - Third item - Nested child - Grandchild } ``` Three nesting levels supported. Uses ●/○ bullets in Unicode, - in ASCII. --- ## Layout Primitives Flex-like box model for spatial control. ### Box Types ``` \begin[width]{hbox} % horizontal (side by side) \child[width][align]{content} \end{hbox} \begin[top|middle|bottom]{hbox} % hbox with vertical alignment \child[width][align]{content} \end{hbox} \begin[width]{vbox} % vertical (stacked) \child[width][align]{content} \end{vbox} ``` Child width: fixed number, `auto` (fill remaining), `intrinsic` (natural width), or omitted (equal share). When multiple children omit width, they split the remaining space equally (after fixed-width children). Horizontal alignment: `left`, `center`, `right`. Vertical alignment for hbox: set on `\begin` bracket — `top` (default), `middle`, `bottom`. Width inheritance: boxes without an explicit width inherit their parent's width. `\setwidth{N}` sets the document-level width. ### Rules ``` \hrule[width]{left_cap}{fill_char}{right_cap} \vrule[height]{top}{fill}{bottom} \intersect_rules{...} % fix junction characters at rule crossings ``` Width/height can be a number or `auto`. An `auto`-width `\hrule` in a vbox stretches to the box width. An `auto`-height `\vrule` in an hbox stretches to match the tallest sibling. `\intersect_rules` scans all cells, checks neighboring line arms, and replaces with correct junction glyphs (┌ ┬ ┐ ├ ┼ ┤ └ ┴ ┘). Handles single, double, bold, and mixed styles. ### Measuring Content ``` \measure<content_name,width_var,height_var>{content to measure} ``` Renders content invisibly, stores it under `content_name` (retrieve with `\recall<content_name>`), and stores the measured width and height into integer variables. ### Spacing `\vskip{N}` (N blank lines), `\hskip{N}` (N spaces) ### Common Layout Patterns Two-column with gutter: ``` \begin{hbox} \child{Left column} \child[2]{} \child{Right column} \end{hbox} ``` Centering via auto spacers: ``` \begin{hbox} \child[auto]{} \child[intrinsic]{Centered content} \child[auto]{} \end{hbox} ``` Indentation: ``` \begin{hbox} \child[4]{} \child[auto]{Indented content} \end{hbox} ``` --- ## User-Defined Macros ``` \macro<\greet{name}>{Hello, ${name}!} \greet{World} % → Hello, World! \macro<\fullname{first}{last}>{${first} ${last}} \fullname{John}{Doe} % → John Doe % Optional parameters with defaults \macro<\heading[char=-]{title}>{ ${title} \hrule[20]{}{${char}}{} } \heading{Default} % uses - \heading[char:=]{Custom} % uses = ``` --- ## Document Settings ``` \setwidth{80} % Output width in columns (default: 80) \setunicode{true} % Use Unicode symbols (default: true) \setmathitalic{true} % Italicize math variables (default: true) \linebreaker{greedy} % Line-breaking algorithm \sethyphenate{true} % Enable hyphenation \setparskip{1} % Blank lines between paragraphs \setmathabove{1} % Blank lines above display math (default: 0) \setmathbelow{1} % Blank lines below display math (default: 0) ``` --- ## Computation Variables, loops, and conditionals are available. ### Variables and Arithmetic ``` \let<x>{10} \let<y>{20} \let<sum>{\add{\valueof<x>,\valueof<y>}} Result: \valueof<sum> % → Result: 30 ``` ### Conditionals ``` \let<n>{42} \if{\gt{\valueof<n>,0}}{positive}\else{non-positive} ``` ### Loops ``` \let<i>{1} \begin{loop} \exit_when{\gt{\valueof<i>,5}} \valueof<i>\hskip{1} \inc<i> \end{loop} % Output: 1 2 3 4 5 ``` ### Content Storage `\assign<name>{content}` stores text, `\recall<name>` retrieves it. `\let`/`\valueof` is for integers; `\assign`/`\recall` is for text. ### Lambdas ``` \lambda<double>[x]{\mul{\recall<x>,2}} \recall<double>[5] % → 10 ``` ### Arrays ``` \let<nums[]>{[10, 20, 30]} \valueof<nums>[0] % → 10 \len<nums> % → 3 \push<nums>{40} % append ``` --- ## Quick Reference ### Math Mode | Input | Output | |-------|--------| | `$x^2$` | x² | | `$x_i$` | xᵢ | | `$\frac{a}{b}$` | a/b (stacked) | | `$\sqrt{x}$` | √x | | `$\sum_{i=1}^n$` | Σ with limits | | `$\int_a^b$` | ∫ with limits | | `$\prod_{i=1}^n$` | ∏ with limits | | `$\lim_{x \to 0}$` | lim with subscript below | | `$\limsup_{n}$` | lim sup with subscript below | | `$\liminf_{n}$` | lim inf with subscript below | | `$\alpha, \beta, \gamma$` | α, β, γ | | `$\mathbb{R}$` | ℝ | | `$\mathbf{v}$` | 𝐯 | | `$\leq, \geq, \neq$` | ≤, ≥, ≠ | | `$\in, \forall, \exists$` | ∈, ∀, ∃ | | `$\rightarrow, \Rightarrow$` | →, ⇒ | | `$\infty, \partial, \nabla$` | ∞, ∂, ∇ | | `$f'(x)$` | 𝑓′(𝑥) | | `$\binom{n}{k}$` | binomial coefficient | | `$\lfloor x \rfloor$` | ⌊x⌋ | | `$\fn{name}$` | custom function name | | `$\operatorname{name}$` | same as \fn | | `$\text{words}$` | upright text in math | | `$\ll, \gg$` | ≪, ≫ | | `$\mathord{=}$` | suppress operator spacing | | `$\mathbin{:}$` | force binary operator spacing | | `$\mathrel{:}$` | force relation spacing | | `$\prec, \succ$` | ≺, ≻ | | `$\neg, \land, \lor$` | ¬, ∧, ∨ | | `$\subseteq, \setminus$` | ⊆, ∖ | | `$\mid$` | ∣ (divides) | | `$\therefore, \because$` | ∴, ∵ | | `$\wp, \imath, \jmath$` | ℘, ı, ȷ | | `$\Box$` | □ | | `$\not=$` | ≠ (\not prefix negates relations) | | `$\left.\right\|$` | invisible delimiter (evaluation bar) | | `$\overset{n}{=}$` | annotation above base | | `$\underset{x}{y}$` | annotation below base | | `$\boxed{x}$` | framed box around content | | `$\phantom{x}$` | invisible spacer | | `$\smash{x}$` | collapse height to baseline | | `$\xrightarrow{f}$` | extensible arrow with label | | `$\substack{a \\ b}$` | stacked lines | | `$\mathfrak{R}$` | Fraktur (𝔄𝔅ℭ) | | `$\mathsf{A}$` | sans-serif (𝖠𝖡𝖢) | | `$\boldsymbol{\alpha}$` | bold Greek (𝛂𝛃) | | `$\coloneqq$` | ≔ (definition) | | `$\eqqcolon$` | ≕ (reverse definition) | | `$a := b$` | ≔ (combined relation) | ### Text Commands | Command | Effect | |---------|--------| | `\textbf{x}` | **bold** | | `\textit{x}` | *italic* | | `\texttt{x}` | monospace | | `\verb\|x\|` | verbatim | | `\hrule` | horizontal line | | `\vskip{N}` | N blank lines | | `\hskip{N}` | N spaces | ### Table Syntax ``` \table[width:W, frame:STYLE, pad:{l:L,r:R}, border:STYLE, align:A]{ \row[frame:{b:STYLE}]{ \col[width:N, align:A]{content} } } ``` ### Layout Syntax ``` \begin[width]{vbox} \child[width][h_align]{content} \end{vbox} \begin[top|middle|bottom]{hbox} \child[width][h_align]{content} \end{hbox} ``` ### Settings ``` \setwidth{N} \setunicode{true|false} \setmathitalic{true} \linebreaker{greedy|knuth|raggedright} \sethyphenate{true} \setparskip{N} \setmathabove{N} \setmathbelow{N} ```
    ConnectorNo auth
  • Render emailmd markdown into email-safe HTML. Returns html (the complete email document), text (the plain-text MIME part), meta (frontmatter), warnings (non-fatal repairs made while rendering; aim for none), htmlBytes, and previewUrl (a live browser preview of this exact document to share with the user).
    ConnectorNo auth
  • Render a web page to a PNG/JPEG screenshot or a PDF using a real headless browser. Returns the image inline (base64) or the PDF as an embedded resource. Results are cached for 24h.
    ConnectorNo auth
  • Get the full HTML of a page after its JavaScript has run, as a browser sees it. Send a URL and receive the complete HTML of the page after JavaScript execution, exactly as a browser would see it. The request goes through a French residential IP driving a real Chromium instance, which resolves single-page applications and gets past defences that block datacenter ranges. — $0.020000/call, paid per request via x402 (USDC). Use when asked: "render this page", "get the html after javascript", "fetch the DOM of this page".
    ConnectorNo auth

Matching MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Gives AI agents a real browser to capture screenshots, PDFs, and post-JavaScript HTML directly from URLs, with no API key or signup required.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Cloud GPU rendering for Blender, built for AI agents. Preview a .blend or bpy script in seconds, get a time estimate, then render frames or an MP4 on JANCTION GPUs. Remote MCP (OAuth) at https://render.janction.jp/mcp for Claude, ChatGPT, Codex and Cursor, or stdio via PyPI. Free up to 500 JPY of GPU time per new key, then 0.1 JPY per GPU-second.
    12
    3,732 PyPI
    MIT

Matching MCP Connectors

  • Blender and GLB/FBX/USD/STL rendered on cloud GPUs for AI agents: product shots, turntables, MP4

  • Hosted browser for AI agents: screenshots, post-JS DOM, console, WCAG. No install, no API key.

  • Create a PDF, PNG, JPEG, or WebP from HTML or a saved template. Image size is request.image.width and request.image.height. viewport is PDF-only.
    ConnectorAPI key
  • Paints an approved catalog template (weather, clock, countdown) without generated source. weather location defaults to Sudbury. First matching-display paint skips preview. Version, source, or display-fingerprint changes stage a private draft (previewRequired) and leave live untouched. Data-only refreshes need componentID.
    Connector
    Destructive
    No auth
  • Render the model to PNG images you can actually look at, from one or more named views. Use this to CHECK your work — a tree that evaluates cleanly can still be the wrong shape, and this is the only way to notice. Flat-shaded diagnostic render, not a marketing shot.
    ConnectorOAuth
  • Draw the electrical diagram (schéma unifilaire / multifilaire). kind: 'single-line' or 'multi-line'; view: a view id of the document (e.g. a wire-marking view). format 'svg' returns the SVG text of every sheet (or of 'sheet', numbered from 1); 'pdf' writes to 'path' if given, else returns base64 (requires the uniwire[pdf] extra); on the hosted server it returns pdf_url instead. To give the user the PDF, give them pdf_url as a clickable link. color: 'none' | 'conductors' | 'phase' | 'source' | 'status' | 'voltage' (adds a legend); conductor_colors: 'iec' (IEC 60445) | 'us'.
    ConnectorNo auth
  • Render an interactive Angular Material UI inline in the chat. Pass `spec`: one complete json-render spec object (not JSON Patch lines). The input schema lists every component, its props and allowed values, and every action; use only those. - `root` is the key of the top element. `elements` is a flat map of key → { type, props, children: [child keys] }; every child key must exist in `elements`. - `state` holds the data. Read it with {"$state":"/path"} rather than repeating values in props. Data-backed UI always needs `state`; use realistic sample data. - A prop can be dynamic: {"$state":"/p"} reads, {"$bindState":"/p"} binds a form field both ways, {"$template":"Hi ${/name}"} interpolates, {"$cond":{"$state":"/p"},"$then":a,"$else":b} picks. - Lists: on a container, "repeat":{"statePath":"/items","key":"id"}; its children render once per item and read {"$item":"field"}, or ${field} inside a $template. - `visible` and `on` sit next to `props`, never inside: "visible":{"$state":"/tab","eq":"home"}, "on":{"press":{"action":"setState","params":{"statePath":"/tab","value":"home"}}}. - Forms: give inputs props.validation {"checks":[{"type":"required","message":"..."}]} and submit with submitForm, which runs its inner action only when every field is valid. - To continue the conversation from a button, use sendMessage: {"action":"sendMessage","params":{"text":"Approve release 2.4.0","data":{"$state":"/release"}}}. The host puts `text` (and `data` as JSON) in the chat as the user's message, so write it in their voice. For a form: {"action":"submitForm","params":{"action":"sendMessage","params":{"text":"Sign me up","data":{"$state":"/form"}}}}.
    ConnectorNo auth
  • DevDesk Scout Public Render — Render a public HTTPS page through DevDesk Scout's browser lane and return bounded title/headings/snippets only. No private memory, vault, or estate context. (3 MESH/call, a tool · research)
    ConnectorNo auth
  • Render a drawing in any supported format (DXF or PDF) to a PNG you can look at, detected from its bytes rather than its name. Use this when you do not know which format you have. Renders the first page/sheet by default; pass `space` (a name from a describe reply's `spaces`) to render another one. Some chat UIs do not display the returned image to the user: for URL sources the result also includes a direct image link — show it (e.g. as a markdown image) when they need to see the render. When the user wants to see or explore the drawing themselves, prefer view_dxf (interactive viewer) — if your platform gates it behind user approval, offer it and ask rather than substituting a static render.
    ConnectorNo auth
  • Render films from pre-formed SirenSeed bodies (advanced). FILMS ONLY: images are painted from a brief, so for any image, ad or creative call create_campaign with asset_type=card (a still here returns 422 stills_use_a_brief). Each item: {output_type, channel, seed_body, archetype?, family?, surface?, caption?, voice_id?, music?, direction?, brand_override?}. Prefer create_campaign unless the user has concrete seed JSON. Returns run ids, `estimated_seconds` and `poll_after_seconds`; wait that long, then get_run. THE DIRECTOR: every film body is edited against Brand DNA before it renders. It keeps the film and your brand-specific lines, rewrites empty, generic or reference-body copy, and never touches media. `director` in the response says what changed. `direction` is a free line ("dark, club energy, fast") that steers words, pace and music. A film that cannot use what you sent returns 422 film_does_not_fit with a `fix` and `films_that_fit`. ANY BRAND: put brand_override={"name": "Acme", "site": "acme.com", "logo_url": "https://acme.com/logo.png", "primary": "#FF4400", "accent": "#111111"} on an item to render it for a brand that is not this workspace's own. With a name it is a clean slate: none of this workspace's logo, mascot, font, handle, screenshots or stills are used. Media slots take only URLs you uploaded with upload_media.
    ConnectorOAuth
  • Render a PDF from a Kamy template and data, and wait for it. This is the default document tool: it blocks until the file exists and hands back { id, url, bytes, durationMs, templateId, createdAt } in one call, where url is a signed download link valid for one hour and id is the render id every later tool takes. Reach for render_async instead when waiting is not acceptable, and render_batch when several documents are wanted at once. Call get_template_schema first if you are unsure what fields the template expects. Counts one render against the monthly quota — get_account tells you what is left before this fails with 402. Requires a Kamy API key with the `render` scope; without a key, returns dashboard setup instructions.
    ConnectorNo auth
  • Render a PDF from a Kamy template and data, and wait for it. This is the default document tool: it blocks until the file exists and hands back { id, url, bytes, durationMs, templateId, createdAt } in one call, where url is a signed download link valid for one hour and id is the render id every later tool takes. Reach for render_async instead when waiting is not acceptable, and render_batch when several documents are wanted at once. Call get_template_schema first if you are unsure what fields the template expects. Counts one render against the monthly quota — get_account tells you what is left before this fails with 402. Requires a Kamy API key with the `render` scope; without a key, returns dashboard setup instructions.
    ConnectorNo auth
  • Render up to 100 documents in a single blocking call, each from its own template, HTML or URL, and get every result back in one response. Choose this over calling render_pdf in a loop whenever you have more than a couple of documents — it is one round trip, one quota reservation and one rate-limit charge. It does block: items render sequentially inside a 300-second budget, so expect to wait, and reach for render_async instead when you cannot. Returns { results: [...] } in request order, where each entry is either a finished render or an { error: { code, message } } — a partial batch is normal and successful items are still yours. The whole batch's quota is reserved up front, so a batch that would cross the monthly quota is rejected in full with 402 and nothing is rendered; call get_account first if you are near the limit. Items that would overrun the time budget come back as SERVICE_UNAVAILABLE having been neither rendered nor billed — retry just those in a smaller batch.
    ConnectorNo auth
  • Render up to 100 documents in a single blocking call, each from its own template, HTML or URL, and get every result back in one response. Choose this over calling render_pdf in a loop whenever you have more than a couple of documents — it is one round trip, one quota reservation and one rate-limit charge. It does block: items render sequentially inside a 300-second budget, so expect to wait, and reach for render_async instead when you cannot. Returns { results: [...] } in request order, where each entry is either a finished render or an { error: { code, message } } — a partial batch is normal and successful items are still yours. The whole batch's quota is reserved up front, so a batch that would cross the monthly quota is rejected in full with 402 and nothing is rendered; call get_account first if you are near the limit. Items that would overrun the time budget come back as SERVICE_UNAVAILABLE having been neither rendered nor billed — retry just those in a smaller batch.
    ConnectorNo auth
  • Admin only. Render one live format and wait until image.url exists. Blocks until GCS has the PNG (or a cache hit). Do not poll. Draft formats return option_not_live. Args: content_id: gc:{id} or rd:{uuid} option_id: live option from marketing_graphics force: Bypass render cache
    ConnectorNo auth
  • Produce a final captioned render of one viral moment. Pass the `video` id and the moment's `viral_moment` id (both hashids from list_clips), and an optional `caption_preset` (a supported preset key; invalid keys are rejected). This is an EXPLICIT, on-demand render: calling it (re)renders the moment now. If a rendered clip already exists it is REPLACED — e.g. call again with a different `caption_preset` to re-render in a new style. To just read an existing render, use get_render_status or list_clips instead. Rendering is ASYNCHRONOUS: this returns `status: "rendering"` once dispatched — then poll get_render_status with the same ids until it reports `completed` and a `rendered_clip` URL. Safe to retry: a render already in flight returns `rendering` without starting a second one. `not_dispatched` means a precondition wasn't met (no preview clip, or the renderer isn't configured).
    ConnectorOAuth
  • Prepare a paid PDF render from one of the 45 starter templates. Validates your template + data and returns the exact, ready-to-execute HTTP request to run against pdfzen's render endpoint — POST /v402/render/pdf (x402, $0.006 USDC on Base, no API key) or POST /v1/render/pdf (pdfzen API key, credit-billed). pdfzen renders are executed over HTTP, not streamed in-band over MCP; this tool is the bridge. Your `data` is merged ON TOP of the starter sampleData at render time, so partial payloads inherit demo defaults (e.g. ship just the customer name + total).
    ConnectorNo auth