SciFig

API reference

MCP server

Use SciFig from Claude, ChatGPT, Claude Code, Codex and Cursor through the remote MCP server.

MCP server#

Server URL: https://mcp.scifig.ai/mcp (Streamable HTTP). Clients that support OAuth connect by signing in to SciFig and approving access; clients that send headers can use an API key as Authorization: Bearer sk_live_….

ToolWhat it does
generate_figureCreate a scientific illustration from a prompt
edit_figureEdit an image: instruction (optionally a masked region), white background, aspect ratio, recolor or text replacement
detect_textFind the text in an image before replacing it
upscale_figureUpscale to 2K, 4K or 8K
convert_figureConvert to SVG, PNG, PDF, TIFF or PPTX
generate_chartPlot a chart from CSV or TSV text or JSON rows (up to 1 MB)
edit_chartChange the latest version of a chart
generate_flowchartDraw a flowchart as SVG, optionally from up to 8 attachments
edit_flowchartChange the latest version of a flowchart
get_jobStatus, credits and download links of a job
list_figuresRecent jobs
get_credit_balanceCredit balance, plan and limits

Creation tools wait up to 25 seconds. If a job is still running, call get_job later; calling the creation tool again creates and charges a new job. Results list each download link and, for charts and flowcharts, the link that opens the result in the SciFig editor.

Connect your client#

Claude (claude.ai and Claude Desktop): Settings → Connectors → Add custom connector, enter the server URL, then sign in to SciFig and allow access.

ChatGPT: Settings → Apps → Advanced → Developer mode, create an app with the server URL and OAuth authentication.

Claude Code:

claude mcp add --transport http scifig https://mcp.scifig.ai/mcp

Codex (~/.codex/config.toml):

[mcp_servers.scifig]
url = "https://mcp.scifig.ai/mcp"

Cursor (~/.cursor/mcp.json), with an API key from Settings → Developer:

{
  "mcpServers": {
    "scifig": {
      "url": "https://mcp.scifig.ai/mcp",
      "headers": { "Authorization": "Bearer sk_live_…" }
    }
  }
}

Clients without OAuth can add the header Authorization: Bearer sk_live_… with an API key from Settings → Developer.

Tool parameters#

ToolParameterRequiredRules
generate_figurepromptyes3–20,000 characters
aspect_rationo1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9
qualitynostandard, advanced or premium
stylenoOne of flat, 2-5d, line-art, hand-drawn, scientific, line, 3d, editorial, sketch, watercolor, auto
palettenoA palette name of 1–64 characters, or 1–4 #RRGGBB colours
reference_imagesnoUp to 3 images: file_id, https URL or data URL; PNG, JPEG or WebP up to 20 MB (data URL about 3 MB, see below)
idempotency_keynoOptional; reuse only to retry the same request after a timeout or network error
edit_figureimageyesfile_id, https URL or data URL; PNG, JPEG or WebP up to 20 MB (data URL about 3 MB, see below)
operationnoinstruct (default), white_background, aspect_ratio, recolor or replace_text
instructionfor instruct1–2,000 characters
masknoOnly for instruct: a PNG up to 8 MB, white where the image may change
aspect_ratiofor aspect_ratio1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9
palettenoOnly for recolor: 1–8 #RRGGBB colours
text_detectionfor replace_textThe id returned by detect_text
replacementsfor replace_text1–256 items [{"index", "text"}]: index 0–255 from detect_text, each index at most once; text 1–500 characters
qualitynoIgnored by replace_text
idempotency_keynoOptional; reuse only to retry the same request after a timeout or network error
detect_textimageyesfile_id, https URL or data URL; PNG, JPEG or WebP up to 20 MB (data URL about 3 MB, see below)
idempotency_keynoOptional; reuse only to retry the same request after a timeout or network error
upscale_figureimageyesfile_id, https URL or data URL; PNG, JPEG or WebP up to 20 MB (data URL about 3 MB, see below)
scaleyes2k, 4k or 8k
idempotency_keynoOptional; reuse only to retry the same request after a timeout or network error
convert_figureimageyesfile_id, https URL or data URL; PNG, JPEG or WebP up to 20 MB (data URL about 3 MB, see below); or a flowchart’s SVG output by file_id
formatyessvg, png, pdf, tiff or pptx
vector_modenoOnly with format svg: editable_text or full_vector
dpinoNot for svg: 300, 600 or 1000
widthnoNot for svg; only for flowchart SVG sources: 256–4096 pixels
idempotency_keynoOptional; reuse only to retry the same request after a timeout or network error
generate_chartdatadata or rowsCSV or TSV text with a header row, up to 1 MB (1,000,000 characters)
rowsdata or rowsInstead of data: 1–100,000 objects, column name to value; sent as CSV, up to 1 MB
data_formatnocsv or tsv; detected from the first line when omitted
requestyesWhat to plot, 1–16,000 characters
chart_typesnoUp to 46 chart types, no duplicates (see charts)
journal_stylenodefault, nature, science, cell, plos or acs
figure_widthnosingle, onehalf or double
color_palettenoA palette name (see charts)
idempotency_keynoOptional; reuse only to retry the same request after a timeout or network error
edit_chartjob_idyesThe latest chart job
instructionyes1–16,000 characters
idempotency_keynoOptional; reuse only to retry the same request after a timeout or network error
generate_flowchartpromptyes1–8,000 characters
aspect_rationoauto, 16:9, 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 21:9
attachmentsnoUp to 8: file_id, https URL or data URL; PDF, DOC, DOCX, Markdown, text, SVG, PNG, JPEG or WebP, up to 32 MB each
idempotency_keynoOptional; reuse only to retry the same request after a timeout or network error
edit_flowchartjob_idyesThe latest flowchart job
instructionyes1–8,000 characters
idempotency_keynoOptional; reuse only to retry the same request after a timeout or network error
get_jobjob_idyesA job id
list_figureslimitno1–20
cursornonext_cursor of the previous page
get_credit_balance——No parameters

generate_chart takes text data only, up to 1 MB. For Excel workbooks (and their sheet_name) or larger files, use POST /charts/generations.

How the tools behave#

  • The server is https://mcp.scifig.ai/mcp (Streamable HTTP). It calls this API on your behalf, so prices, credits, limits and errors are the same.
  • Image and attachment arguments accept a file_id, an https URL or a data URL; URLs and data URLs are uploaded first with POST /files, so they count against the upload limits. SciFig’s own URLs are refused (pass the file_id), and redirects are followed only to other https addresses.
  • A request to the MCP server is limited to 4 MB. Base64 makes a file a third larger, so a data URL can carry about 3 MB; pass larger files as an https URL.
  • The server checks your credential only on initialize and tools/call. An expired or revoked token returns 401 so the client can refresh or sign in again; a banned account, or one being deleted, returns 403.
  • Finished image results are shown inline when they are at most 1 MB; every result includes download links, and chart and flowchart results add the link that opens them in the SciFig editor.
  • Every creation uses a new Idempotency-Key unless the assistant passes idempotency_key, so asking again creates and charges a new job. Use get_job to follow up.
  • An error result echoes idempotency_key and, when a job exists, job_id. After a timeout or a server error, retry with the same key or call get_job; a refusal such as 402 INSUFFICIENT_CREDITS stays stored under its key, so send it again with a new key.