Smithery Logo
MCPsSkillsDocsPricing
Login
Smithery Logo

Accelerating the Agent Economy

Resources

DocumentationPrivacy PolicySystem Status

Company

PricingAboutBlog

Connect

© 2026 Smithery. All rights reserved.

    openclaw

    typst-latex-compiler

    openclaw/typst-latex-compiler
    Coding
    397
    1 installs

    About

    SKILL.md

    Install

    Install via Skills CLI

    or add to your agent
    • Claude Code
      Claude Code
    • Codex
      Codex
    • OpenClaw
      OpenClaw
    • Cursor
      Cursor
    • Amp
      Amp
    • GitHub Copilot
      GitHub Copilot
    • Gemini CLI
      Gemini CLI
    • Kilo Code
      Kilo Code
    • Junie
      Junie
    • Replit
      Replit
    • Windsurf
      Windsurf
    • Cline
      Cline
    • Continue
      Continue
    • OpenCode
      OpenCode
    • OpenHands
      OpenHands
    • Roo Code
      Roo Code
    • Augment
      Augment
    • Goose
      Goose
    • Trae
      Trae
    • Zencoder
      Zencoder
    • Antigravity
      Antigravity
    ├─
    ├─
    └─

    About

    Compile Typst and LaTeX documents to PDF via API. Send source code, get back a PDF.

    SKILL.md

    Typst & LaTeX Compiler

    Compile Typst (.typ) and LaTeX (.tex) documents to PDF using the TypeTex compilation API.

    API Endpoint

    Base URL: https://studio-intrinsic--typetex-compile-app.modal.run

    Endpoints

    Compile Typst

    POST /public/compile/typst
    Content-Type: application/json
    

    Request Body:

    {
      "content": "#set page(paper: \"a4\")\n\n= Hello World\n\nThis is a Typst document.",
      "main_filename": "main.typ",
      "auxiliary_files": {}
    }
    

    Response (Success):

    {
      "success": true,
      "pdf_base64": "JVBERi0xLjQK..."
    }
    

    Response (Failure):

    {
      "success": false,
      "error": "error: file not found: missing.typ"
    }
    

    Compile LaTeX

    POST /public/compile/latex
    Content-Type: application/json
    

    Request Body:

    {
      "content": "\\documentclass{article}\n\\begin{document}\nHello World\n\\end{document}",
      "main_filename": "main.tex",
      "auxiliary_files": {}
    }
    

    Response (Success):

    {
      "success": true,
      "pdf_base64": "JVBERi0xLjQK..."
    }
    

    Response (Failure):

    {
      "success": false,
      "error": "! LaTeX Error: Missing \\begin{document}.",
      "log_output": "This is pdfTeX..."
    }
    

    Health Check

    GET /public/compile/health
    

    Returns {"status": "ok", "service": "public-compile"} if the service is running.

    Usage Examples

    Simple Typst Document

    import requests
    import base64
    
    response = requests.post(
        "https://studio-intrinsic--typetex-compile-app.modal.run/public/compile/typst",
        json={
            "content": """
    #set page(paper: "a4", margin: 2cm)
    #set text(font: "New Computer Modern", size: 11pt)
    
    = My Document
    
    This is a paragraph with *bold* and _italic_ text.
    
    == Section 1
    
    - Item 1
    - Item 2
    - Item 3
    """,
            "main_filename": "main.typ"
        }
    )
    
    result = response.json()
    if result["success"]:
        pdf_bytes = base64.b64decode(result["pdf_base64"])
        with open("output.pdf", "wb") as f:
            f.write(pdf_bytes)
        print("PDF saved to output.pdf")
    else:
        print(f"Compilation failed: {result['error']}")
    

    Simple LaTeX Document

    import requests
    import base64
    
    response = requests.post(
        "https://studio-intrinsic--typetex-compile-app.modal.run/public/compile/latex",
        json={
            "content": r"""
    \documentclass[11pt]{article}
    \usepackage[margin=1in]{geometry}
    \usepackage{amsmath}
    
    \title{My Document}
    \author{Author Name}
    
    \begin{document}
    \maketitle
    
    \section{Introduction}
    
    This is a LaTeX document with math: $E = mc^2$
    
    \end{document}
    """,
            "main_filename": "main.tex"
        }
    )
    
    result = response.json()
    if result["success"]:
        pdf_bytes = base64.b64decode(result["pdf_base64"])
        with open("output.pdf", "wb") as f:
            f.write(pdf_bytes)
    else:
        print(f"Compilation failed: {result['error']}")
        if result.get("log_output"):
            print(f"Log: {result['log_output']}")
    

    Multi-File Project (Typst)

    import requests
    import base64
    
    response = requests.post(
        "https://studio-intrinsic--typetex-compile-app.modal.run/public/compile/typst",
        json={
            "content": """
    #import "template.typ": *
    
    #show: project.with(title: "My Report")
    
    = Introduction
    
    #include "chapter1.typ"
    """,
            "main_filename": "main.typ",
            "auxiliary_files": {
                "template.typ": """
    #let project(title: none, body) = {
      set page(paper: "a4")
      set text(font: "New Computer Modern")
    
      align(center)[
        #text(size: 24pt, weight: "bold")[#title]
      ]
    
      body
    }
    """,
                "chapter1.typ": """
    == Chapter 1
    
    This is the first chapter.
    """
            }
        }
    )
    
    result = response.json()
    if result["success"]:
        pdf_bytes = base64.b64decode(result["pdf_base64"])
        with open("report.pdf", "wb") as f:
            f.write(pdf_bytes)
    

    Including Images

    For binary files like images, base64-encode them:

    import requests
    import base64
    
    # Read and encode an image
    with open("figure.png", "rb") as f:
        image_base64 = base64.b64encode(f.read()).decode("utf-8")
    
    response = requests.post(
        "https://studio-intrinsic--typetex-compile-app.modal.run/public/compile/typst",
        json={
            "content": """
    #set page(paper: "a4")
    
    = Document with Image
    
    #figure(
      image("figure.png", width: 80%),
      caption: [A sample figure]
    )
    """,
            "main_filename": "main.typ",
            "auxiliary_files": {
                "figure.png": image_base64
            }
        }
    )
    

    Using curl

    # Typst compilation
    curl -X POST https://studio-intrinsic--typetex-compile-app.modal.run/public/compile/typst \
      -H "Content-Type: application/json" \
      -d '{
        "content": "#set page(paper: \"a4\")\n\n= Hello World\n\nThis is Typst.",
        "main_filename": "main.typ"
      }' | jq -r '.pdf_base64' | base64 -d > output.pdf
    
    # LaTeX compilation
    curl -X POST https://studio-intrinsic--typetex-compile-app.modal.run/public/compile/latex \
      -H "Content-Type: application/json" \
      -d '{
        "content": "\\documentclass{article}\n\\begin{document}\nHello World\n\\end{document}",
        "main_filename": "main.tex"
      }' | jq -r '.pdf_base64' | base64 -d > output.pdf
    

    Supported Features

    Typst

    • Full Typst language support
    • Multi-file projects with imports
    • Images (PNG, JPG, SVG)
    • Custom fonts (New Computer Modern, etc.)
    • Math equations
    • Tables and figures
    • Bibliography (using Hayagriva format)

    LaTeX

    • Full TeX Live distribution via Tectonic
    • Multi-file projects (\input, \include)
    • BibTeX/BibLaTeX bibliography
    • Custom style files (.sty, .cls)
    • All standard packages (amsmath, graphicx, etc.)
    • TikZ/PGFPlots graphics
    • Images (PNG, JPG, PDF, EPS)

    Error Handling

    When compilation fails, the response includes:

    • success: false
    • error: Human-readable error message
    • log_output (LaTeX only): Full compilation log for debugging

    Common errors:

    • Syntax errors: Check your source code for typos
    • Missing files: Ensure all imported/included files are in auxiliary_files
    • Package not found: Most common packages are available; contact support for additions
    • Timeout: Complex documents may timeout after 60 seconds

    Rate Limits

    • No authentication required
    • Please be respectful of shared resources
    • For high-volume usage, contact support

    Tips for Agents

    1. Always check success before accessing pdf_base64
    2. Parse errors to provide helpful feedback to users
    3. Use minimal documents when testing - complex documents take longer
    4. Cache results if compiling the same content multiple times
    5. Include all dependencies in auxiliary_files for multi-file projects

    Related Resources

    • Typst Documentation
    • LaTeX Wikibook
    • TypeTex - Full document editor with AI assistance
    Repository
    openclaw/skills