For teams with a Storybook and a coding agent

Your agent wrote a new button.
You already had four.

Scry indexes the Storybook you already ship. Claude Code, Codex and the Figma agent search it by text or by screenshot and import the component that exists. Then Scry checks your Figma files against the same build and shows you what drifted.

claude code · kettle-appmcp · scry connected
> Add a drinks list to the Menu screen: thumbnail, name, description, price.
Checking the design system before writing UI.
scry · search_components“menu row with thumbnail, name and price”
import { MenuItem } from "@/components/MenuItem"
Reused, not rewritten0 new components
3 results · project kettlebuild a41f2c9
MenuItem / Default
src/components/MenuItem.tsx
0.91
MenuItem / Long description
src/components/MenuItem.tsx
0.84
Card / Default
src/components/Card.tsx
0.62
sourcePath
src/components/MenuItem.tsx
storyPath
src/components/MenuItem.stories.tsx
freshness
matches current build
Scry / 01The problem

The fifth button.

Your coding agent knows React. It does not know your Button, your PricingCard, or the four states your modal already supports. So it writes new ones. Close enough to pass review, wrong enough to matter.

Someone spends an afternoon replacing generated UI with the component that already existed. The more code an agent writes, the less consistent the design system gets. Nothing in the repo answers the question the agent should have asked: do we already have this?

components/Button · rendered5 instances
  • fill#1c1c1c · yours is #3d2b1f
  • radius6px · yours is 0
  • padding12 / 20 · yours is 10 / 18
  • labelAdd To Order · yours is Add to order
Scry / 02How it works

Three steps.

Nothing in your repo changes except a config file and a workflow. Scry receives the built Storybook, the same static bundle you already host, and nothing else.

The first useful result is a search your agent runs on a real task and a component a developer ships.

1

Deploy your Storybook

Ask your coding assistant to do it, or run the CLI. The setup skill checks your Storybook, wires the deploy and the MCP connection, and verifies the result.

$ npx skills add epinnock/scry-node --skill scry-setup
then ask: "Set up Scry for this project and connect my assistant to its components."

Prefer the CLI? npx @scrymore/scry-deployer init creates the config and the GitHub workflow.

2

Every story gets a screenshot and a description

A few minutes of processing, then every component is searchable by text or by image. Stories that did not change are reused, so a rebuild only touches what moved.

3

Connect your agent

A remote MCP server. Nothing to install. Sign-in happens in the browser on first use, and the server sees only the projects your account can already read.

$ claude mcp add --transport http scry https://mcp.scrymore.com/mcp

Every result carries what the agent needs to import the real thing instead of approximating it:

sourcePathstoryPathvariantscreenshotbuild shafreshness

Tools: search_components, search_by_image, get_component_screenshot, generate_image, whoami. Any MCP client that speaks Streamable HTTP can connect.

Scry / 03Drift detection · Design Sync

Figma says one thing. The build says another. Scry shows you where.

Link a Figma layer to its story once. Design Sync renders the Figma side and the Storybook side from the same deployed build and runs a diff: side by side, overlay, or blink. Every difference becomes a candidate with a label and a suggested severity. A person decides what gets promoted to an issue.

Screens/Menu · Default Menu
Figma · Screens/Menushowing figma
MenuOrder ahead, skip the line
Flat WhiteDouble ristretto, silky milk
$4.50
Cold BrewSteeped 18 hours, over ice
$4.75
Matcha LatteCeremonial grade, oat milk
$5.25
View order · 2 items
Storybook · build a41f2c9screenshot
MenuOrder ahead, skip the line
Flat WhiteDouble ristretto, silky milk
$4.50
Cold BrewSteeped 18 hours, over ice
$4.75
Matcha LatteCeremonial grade, oat milk
$5.25
View order · 2 items
Evidence for 1 · Color/Backgroundmagnified 2.6× · hover a candidate to switch
figma
storybook
diff
figma
storybook
diff
figma
storybook
diff

Severity is one of blocker, major, minor, nit, chosen by a person when a candidate is promoted. The annotator only suggests. Labels say what kind of drift it is; severity says how much it matters.

Basic defaultThe standard check. Finds most defects, about a minute.
Plus opt inAdds an Opus check on busy screens, one to two minutes.

Refine and recheck a diff as often as you need.

Scry / 04Scry Link for Figma

Link Figma to any Storybook.

Compare ↓

Paste a Storybook URL, select a layer, pick its story, click Link. A View Story button on every linked layer opens the live story. Suggest links scans a page or the whole file and ranks matches you accept in bulk.

  • Works with any Storybook your computer can reach: hosted, on your network, or local.
  • Linking uploads nothing and needs no account.
  • Links live in the file's shared plugin data, so everyone editing the file sees them.

With a Scrymore account

  • Visual matching: layers are matched against story screenshots, not just names.
  • Screenshot sync, side-by-side and overlay diffs, and View diff in Scrymore on a synced pair.
  • Private Storybooks previewed inside the plugin.
Scry - Storybook Linker
Scry / 05Straight answers

It indexes your last deploy, not your working tree.

Change a component locally and Scry keeps describing the published version until you redeploy. Every result carries a freshness flag that says whether it matches the project's current build, so the agent knows when it is looking at something stale.

Scry receives your built Storybook, not your repository.

The same static bundle you already host. Not your git history, not anything outside that build. Search query text is never stored: it is turned into an embedding and discarded. Each project keeps its 10 most recent builds.

Detail: privacy policy

No SOC 2 yet. Data lives in the United States.

Pre-certification, and plain about it. There is no EU data residency option today. A pilot on one non-critical repository is the sensible way in, and a project's data is deleted whenever you ask.

Detail: where your data is processed

Claude Code, Codex and the Figma agent are verified. Others are documented.

Those three have been run end to end. Any MCP client that speaks Streamable HTTP can connect, and stdio clients such as Claude Desktop and Cursor reach it through mcp-remote. That path is documented, not yet run through a full pilot here, so try it on one task before you rely on it.

Detail: MCP server guide

Stop rebuilding the button.

Deploy one Storybook, connect one agent, and bring a component you are tired of seeing rebuilt. If Scry finds it, you will know in the first search.

Got questions? Let's link.