Skip to main content
PHOTOTOLOGY

A picture is worth a thousand words.We write them down.

Phototology is an API, SDK, and MCP server that turns any photograph into structured, typed data. Composable lenses. Validated against schemas. Cached by perceptual hash. Written back into the file itself.

Start building today. 5,000 credits free ($50 in value). No purchase necessary.Picture in. Context as code out.

The three acts.

Analyze. Structure. Remember.

A photograph passes through three acts. Read by a growing catalog of lenses. Sealed against typed schemas. Indexed by perceptual hash and written back into the file's own metadata.

Act I

Analyze

A growing catalog of lenses extracts structured intelligence from the photograph. Compose them like middleware. Order matters; evidence flows.

photo.jpglens.dating
lens.location
lens.atmosphere
lens.…
Act II

Structure

Every finding validated against typed schemas. Sealed and signed. The model can hallucinate prose. It cannot hallucinate a value the schema refuses.

raw model output
zod · typed schema
signed result
evidence chain
Act III

Remember

Indexed by perceptual hash. Cached forever. Embedded in the photograph's EXIF, IPTC, and XMP. The intelligence travels with the file, not your database.

pHashregistry lookup
cache hit?$0
write-backEXIF · IPTC · XMP

Catalog · growing selection of lenses.

Compose the photograph's testimony.

Each lens is a typed contract. A question the harness knows how to ask. A schema for the answer it expects back. Click any lens to see a real sample output.


Try it now.

Pick a photograph. See what comes back.

A real call against the harness — photograph in, typed JSON out. Pick the lenses you care about, run it, watch the structured result stream. Every value below is what the SDK actually returns.

01 · Choose a photo
02 · Pick your lenses
4 lenses · 1 photo
output · stream● idle
// pick a photo, stack lenses, run. // output streams here, validated against typed schemas.

MCP. SDK. API. Web.
Always within range.

Same harness. Four surfaces. Typed both ways.
Pick the one closest to where you already work. Underneath, calls route to Gemini, Claude, or OpenAI — model deprecations stop being your problem.

POST /v1/analyze
import { PhototologyClient } from '@phototology/sdk';

const pt = new PhototologyClient({
  apiKey: process.env.PHOTOTOLOGY_API_KEY,
});

const result = await pt.analyze({
  imageUrl,
  modules: ['describe', 'dating', 'location'],
});

result.output.estimatedDate.decade  // "1960s"
result.output.location.region        // "United States"
result.usage.estimatedCostUsd     // 0  · cache hit
MCP

Drop into Claude, Cursor, or any MCP agent.

SDK

Typed TypeScript client. First call in three lines.

REST

Hit it from Python, Rust, a shell, a Worker.

Web

Drop a photo. Pick lenses. Download CSV.

5,000 credits freeno card to start


Everything AI isn't.

Built for agents.

The model is the raw capability. Phototology is the contract. Six guarantees your agent loop can rely on.

  • stabilityDeterministicSame photo, same answer. Even when the underlying models change beneath you. Pipelines stay stable.
  • safetyIdempotentRetry as many times as you need. No side effects, no surprises. Safe for autonomous agents on bad networks.
  • economicsCachedEvery finding is keyed by perceptual hash. Repeated calls cost zero tokens and resolve in milliseconds. Same photo, free forever.
  • timeAccretiveThe system only adds, never subtracts. Add a new lens six months later; the old answers remain stable and valid.
  • transparencyTraceableEvery finding carries its evidence. Which lens produced it. What in the photograph supported it. Confidence becomes auditable.
  • trustAttestableEvery result is cryptographically signed. Any downstream system can verify the analysis hasn't been tampered with. The file becomes its own witness.

Your domain next.

Phossil runs a family time-machine.Dr. Vin brings trust to car sales.Candela keeps the forgotten remembered.What will you build?

Phototology is general because the lenses are atomic. The same primitives became a time-machine, a trust engine, and a way to remember the dead. The catalog ships. The composition is yours.

Severe roof damage with hole exposing decking and rafters assessed by Phototology condition module for insurance claimpartner · Phototology · coreroof claim · structural breach
photo in · structured out
Catastrophic breach.
Structure exposed.

Catastrophic structural breach exposing rafters and decking, with displaced shingles and secondary water intrusion risk.

severity
Severe
damage_type
Structural breach (impact)
breach_size
Approx. 4×3 ft
components
Shingles, decking, rafters
recommendation
Emergency tarp, full replacement
conditiondescribeentitieslocation

The engine, in one panel.

Photo to spreadsheet.

Drop photos. Define what you want. Download a spreadsheet.

Real estate
Property photos → listing-ready facts.
stack: property
describelocationcompositioncolor-palette
iso 200 · 1/250 · f/4.0 · cached
iso 400 · 1/125 · f/2.8 · cached
iso 100 · 1/500 · f/8.0 · fresh
headlineroomaestheticmood
Charming Kitchen with Modern Finishes and Natural Lightkitchen75bright neutral
Sunlit Primary Bedroom with Vaulted Ceilingbedroom82warm cinematic
South-Facing Living Room with Wide Plank Floorsliving room78bright neutral

The permanent record.

Indexed by perceptual hash.
Written back into the file.

Every photograph the harness has ever read is recorded. Keyed by a fingerprint that survives crops, recompressions, and re-uploads. If the same image surfaces again, anywhere, we already know its testimony.

Sisters at the AcropolisPT-1996-ATH
Couple with MGB roadsterPT-1962-MGB
Mercedes-Maybach in ViennaPT-2024-VIE
Roof claim, structural breachPT-2024-CLM
Lexus LS 430 sedanPT-2002-LS4
Modern kitchen listing photoPT-LST-K01
· collision-resistant pHash· cache hit ≠ re-bill· survives crop / re-compress
EXIF · IPTC · XMP · write-back// embedded into the JPEG itself
EXIF.DateTimeOriginal  "1962:08:14 16:22:00"
EXIF.GPSLatitude       "45.5152° N (est.)"
IPTC.City              "Portland, OR"
IPTC.Caption           "A family on the steps,
                        the afternoon light just turning gold."
XMP.dc:subject         ["Schwinn","family","porch"]
XMP.pt:registry_id     "PT-1962-08A"
XMP.pt:phash           "7c3a91…e2"
XMP.pt:evidence_uri    "reg://PT-1962-08A/ev"
XMP.pt:signed          true

The photograph becomes its own database. Send it anywhere. The testimony travels with it.

Your turn.

You brought us a photograph.
Here is its testimony.

A curated catalog of lenses read it. Typed schemas held it. A perceptual hash remembered it. The file walked away with its own context written into it.

5,000 credits freeno card to start

Structured intelligence, written into the file.

1 Picture. 1,000 Words. | Phototology