Atlas / MCP servers / keyline-dev / keyline

keylineBLOCK

mcp/keyline-dev/keyline

Design engine for AI agents: images and video at every size, no Chrome, 2× fewer tokens. One native binary, driven over MCP.

Verdict
BLOCK
Grade
D
Trust score
69 /100
Exposed tools
—
Transport
stdio
License
NOASSERTION
Stars
4
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](https://github.com/keyline-dev/keyline/releases/latest) [](https://github.com/keyline-dev/keyline/actions/workflows/ci.yml) [](LICENSE.md) [](https://registry.modelcontextprotocol.io/v0/servers?search=io.github.keyline-dev/keyline)

[keyline.dev](https://keyline.dev): examples, the benchmark, and setup for every client.

Design engine for AI agents: Canva for your agent. keyline is a free MCP server for Claude Code, Claude Desktop, Cursor, Codex, Gemini CLI and any MCP client. Your agent describes a social post, ad or banner once, as a small JSON scene; keyline renders it as images and video at every size, with real text in your fonts and colors, the same every run.

No browser, and fewer tokens. No headless Chrome, Puppeteer or Playwright: one native Rust binary on Skia. Every edit replies with what's wrong at each size, so the agent fixes the design from measurements instead of screenshots: 2× fewer tokens than an agent driving headless Chrome, and 6× fewer than Playwright MCP (benchmark).

One prompt, five sizes: the layout adapts from a 4:5 post to a 728×90 leaderboard, and keyline's checks catch what doesn't fit before anything renders.

Read from source at commit 2048ee4f8d45OBSERVED · 2026-10-11
Advertisement
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.

claude-code (oci)
claude mcp add keyline-mcp:0.8.0 -- docker run -i --rm ghcr.io/keyline-dev/keyline-mcp:0.8.0:None
03

Trust audit

BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (3 observation(s))
Network
declared (12 observation(s))
Shell
none-observed
Dependencies
pinned
Secrets in source
none-found

Findings (14)

HIGHNetwork egress · net.metadata_ip · CWE-200, CWE-319
src/fetch.rs:177
"169.254.169.254",
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
HIGHNetwork egress · net.metadata_ip · CWE-200, CWE-319
src/fetch.rs:186
"64:ff9b::169.254.169.254",
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
src/fetch.rs:208
"http://127.0.0.1/x.png",
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
src/render/split.rs:249
assert_eq!(pieces("👨👩👧👦🇫🇷", Split::Chars), vec![0..11, 11..15]);
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/text/registry.rs:15
const BUNDLED: &[u8] = include_bytes!("../../fonts/InterVariable.ttf");
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
tests/e2e.rs:191
json!({"sceneId": id, "url": "http://127.0.0.1/x.png"}),
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
README.md:279
- **The LLM tests** run Claude Code headless, so they use a Claude subscription and need no API key. They check that no defects remain and report tool calls, tokens and API-equivalent cost. With `KEYL
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
icons/LICENSE-lucide.txt:21
airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWInventory / provenance · mcp.no_tools_extracted · CWE-1104
server.json
Why it matters. the tool list is enumerated at runtime by tools/list, not declared in source
Fix. the page says so rather than showing an empty table
INFOInventory / provenance · inv.oversize · CWE-1104
docs/media/showcase-motion.png
docs/media/showcase-motion.png
Why it matters. 6130340 bytes not read
INFOInventory / provenance · inv.oversize · CWE-1104
icons/fa-solid.tsv
icons/fa-solid.tsv
Why it matters. 1100597 bytes not read
INFOInventory / provenance · inv.oversize · CWE-1104
tests/golden/macos/showcase-square.png
tests/golden/macos/showcase-square.png
Why it matters. 1120797 bytes not read
INFOInventory / provenance · inv.oversize · CWE-1104
tests/golden/macos/showcase-story.png
tests/golden/macos/showcase-story.png
Why it matters. 1987876 bytes not read
INFOInventory / provenance · inv.oversize · CWE-1104
tests/golden/windows/showcase-square.png
tests/golden/windows/showcase-square.png
Why it matters. 1118674 bytes not read

Gates applied: no_behavioural_pass.

Audited 2026-10-11 · audit v0.4.1 · source sha 2048ee4f8d45full audit observations/trust-audit/mcp-server/keyline-dev__keyline.json · Report an issue / request a re-scan
04

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-112048ee4f8d45BLOCKD69first audit
05

Questions

What is the keyline MCP server?

Design engine for AI agents: images and video at every size, no Chrome, 2× fewer tokens. One native binary, driven over MCP.

Is keyline safe to connect to an agent?

No — not without reading the findings first. The audit graded it D (69/100) and found 2 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does keyline need?

No credential environment variables were found in its source, so it appears to need none.

How does keyline run?

It speaks stdio, so it runs as a local process your client starts.

How current is this page?

The grade is for one exact copy of the source (2048ee4f8d45), read on 2026-10-11. The repository is watched and re-audited when it changes.

Advertisement