A search surface for vision-language agents Runs on the Fillin engine

Glyph.

Search results rendered as photo glyphs — dense images your model reads instead of text.

It retrieves only what was published after your training cutoff, so nothing it returns is something the model already knew. Then it draws those results into a page your vision model reads back at high density.

a real photo glyph rendered live by Glyph: two search-result pieces drawn in the learned glyphfont bitmap, each keeping its source, date, title and url
live sample render at /v1/glyph/sample.png
(this page expects to be served from the Glyph host;
open it there to see the specimen)
Fig. 1 — rendered live, server-side, by GET /v1/glyph/sample.png free · no auth · no query · JSON manifest

This image is the product output. Your model reads result text like this — a single artifact in the learned glyphfont bitmap, every piece still carrying its source, date and url.

§ 01

How a search becomes a glyph

Three moves. The retrieval is Fillin; the surface is Glyph.

01 — SEARCH

You query the gap

Fillin holds a time-series vector index of the internet — 254,000+ documents — and returns only the pieces published after your model's cutoff. No redundancy with what you already know.

02 PIECES

Top pieces, with provenance

Each result piece keeps its source, date, title and url intact — the citation index travels with the image, so you can attribute or follow up.

03 GLYPH

Rendered to a photo glyph

The pieces are drawn onto a dense page using a 20 KB learned bitmap typeface. Your vision model reads the image directly. One artifact instead of N text chunks.

§ 02

The honest token ledger

No invented savings. Here is exactly where a glyph wins, where it ties, and against what.

per query · same result text · measured against the named baseline
Compared against Token effect
Claude · pixel billing Anthropic bills ~width×height ÷ 750. A glyph packs ~3.8 chars per vision-token vs ~4 per text-token. ≈ parity
Flat-tile readers · Gemini / Qwen-class Billed ~258 tokens per 768px tile. A dense page amortizes the tile — ~1.06× on a small result set, up to 2.33× when the page is packed. 1.06 – 2.33×
A normal-font screenshot Image vs image: the learned bitmap fits far more legible text in the same frame. The measured glyphfont result. ≈ 15×
Any image-already pipeline If you were going to send an image anyway, the result text rides along for the price of pixels you'd already pay. free ride

Read this before you quote a number

On Claude's pixel-based billing, a glyph page is roughly the same cost as sending that text as text. We will not tell you it is "10× cheaper on Claude." It is not.

The real wins are specific and defensible: flat-tile readers (Gemini / Qwen-class), where a dense page runs 1.06–2.33× fewer tokens than the same text — but only ~6% (1.06×) on a small, realistic result set, reaching 2.33× only when the page is densely packed; the ~15× density against a normal screenshot (image-vs-image only — never against raw text tokens); and the always-true win of one artifact instead of N chunks in any pipeline already moving images.

Every figure on this page comes straight from the renderer's own token manifest — the same JSON you get back at /v1/glyph/sample.

§ 03

The typeface is cross-model legible

The glyphfont bitmap was trained against one reader and read correctly by others, zero-shot. Multiple-choice comprehension at 15× density.

4.7/ 5
Claude Sonnet 4.6
3-run average · a reader the bitmap was never trained against
5/ 5
Qwen2.5-VL-7B
trained against the 3B sibling · transfers up cleanly

The bitmap was trained against Qwen2.5-VL-3B and was never tuned to either reader above. That it transfers zero-shot is the whole thesis: a glyph is a real, model-agnostic surface, not an adversarial trick that only one model can decode.

§ 04

For agents

Start free, then pay one flat rate. The render is always free; you pay the query rate only when you search the corpus.

Start free: POST /v1/signup mints a key with 20 free queries — no card, no wallet. After that, pricing is one number: $0.01 USDC per query, settled with x402 (agents pay per call) or a bearer key you top up with a card at /signup. The glyph render itself costs nothing — sample endpoints are open, so you can confirm your reader decodes a glyph before you ever pay.

POST /v1/glyph $0.01 / query · x402 or bearer
Search, get back glyph page(s) plus a citation index. Pass tier (6x / 10x / 15x) to trade legibility against density. Add ?format=png&page=N for raw image bytes of one page.
POST /query { "glyph": true }
Your normal text results, plus a glyph payload alongside them. Keep the text, add the image — no migration required.
GET /v1/glyph/sample.png FREE
The live specimen at the top of this page. Renders an actual sample server-side, no auth. Its sibling /v1/glyph/sample returns the JSON with the honest token manifest.
MCP glyph_search image content block + citations
Returns the photo glyph as an actual image content block your model reads directly, followed by the citation index {n, source, url, title, published_at, page}. No image plumbing on your side.
MCP endpoint · streamable HTTP
{
  "mcpServers": {
    "glyph": {
      "url": "https://glyphapi.dev/mcp/"
    }
  }
}
# tool: glyph_search(query, cutoff, k=6, tier="10x")
# returns: photo glyph image block(s) + citation index

Glyphs are for comprehension, not quotation.

Vision models paraphrase what they read. A glyph is the right surface for fact-extraction, comprehension, and getting the gist of many fresh documents at once. It is the wrong surface for verbatim quotes, exact code, or anything character-perfect. That is why every piece carries its url — when you need the exact words, follow the link to the source. We would rather tell you the edge than have you discover it in production.