Install
openclaw skills install @dazzle/dazzle-photo-intelligenceConnects OpenClaw to Dazzle, an AI agent that deeply understands the user through their photos. Through a companion iOS app, Dazzle accesses their photos and can understand who they are, where they live, their preferences, people in their lives, places they've been, and other personal choices. Auth is handled transparently by the bridge.
openclaw skills install @dazzle/dazzle-photo-intelligenceConnects OpenClaw to Dazzle, an AI agent that deeply understands the user through their photos. Through a companion iOS app, Dazzle accesses their photos and can understand who they are, where they live, their preferences, people in their lives, places they've been, and other personal choices. Consult Dazzle for any query where personalization would meaningfully improve the answer.
Consult Dazzle whenever knowing the user — their likes, places they've been, what piques their attention — would improve the answer. Concrete categories:
Always invoke Dazzle when the user mentions it by name ("ask Dazzle to…", "what does Dazzle know about…").
Do not invoke Dazzle for fully impersonal queries ("what's the capital of France", "explain quicksort") — there's no personalization to add.
This skill consults Dazzle on behalf of the signed-in user about their own data — photos and context that user has previously shared with Dazzle. It does not access anyone else's data.
Why OAuth2 sign-in: OAuth2 was chosen over static API keys specifically to avoid long-lived secrets on disk. Tokens are short-lived, individually revocable per session, scoped to the user's own account, and never handled or committed by the user.
Sign-in is browser-based on first use. After that, the bridge keeps the user signed in across sessions — like a logged-in browser tab — so subsequent queries are silent.
Scope is read-only on the user's own Dazzle account: photos and metadata, places visited, inferred preferences, self-referential context. Access is revocable at any time (see Uninstall below, or sign out of Dazzle directly).
The bridge runs locally as an MCP server registered with OpenClaw. Setup is a one-time local configuration step — no background services, no system-wide install — and is fully reversible (see Uninstall). Sign-in is a separate browser step that the bridge initiates on the first tool call.
Each openclaw mcp … command below requires the user's explicit approval the first
time it runs — OpenClaw will prompt them at the permission gate.
Check whether the bridge is already registered as an OpenClaw MCP server:
openclaw mcp show dazzle
If that errors (server not registered), register it once:
Generate a random password to keep the local sign-in state encrypted at rest:
openssl rand -base64 24
Substitute the generated value for <KEYRING_PASSWORD> and the absolute path of
this skill directory (the one containing this SKILL.md) for <SKILL_DIR>, then
run:
openclaw mcp set dazzle '{"command":"uvx","args":["--from","<SKILL_DIR>","--with","keyrings.alt","dazzle"],"env":{"DAZZLE_KEYRING_PASSWORD":"<KEYRING_PASSWORD>"}}'
Confirm with openclaw mcp show dazzle, then proceed with the user's original query.
Re-running setup with a new password invalidates the previous sign-in; the user will be prompted to sign in to Dazzle again.
The bridge surfaces only the tools that are callable right now: when the user is signed
in, real Dazzle tools appear in tools/list; when they aren't, only
dazzle_login_required appears. Call whichever tool fits the user's query — the bridge
will route it correctly.
If the bridge returns the dazzle_login_required tool (rare — only when stored tokens
are missing or revoked), surface the URL and short user code from its text verbatim
and ask the user to retry their query after approving in a browser. Don't generate this
prompt yourself; only react when the bridge returns it.
Matched photos come back as URLs in a <photos> JSON block, not inline bytes. Fetch
the URL to get the image bytes when you need to view, analyze, or include the image
in a response.
Photo lookups work best over short time windows — a day, a week, a single trip. Year-spanning queries ("every food photo", "all sunsets from 2024") take significantly longer; narrow the window when you can.
Queries can take up to 60 seconds end-to-end — set per-call timeouts accordingly.
To remove the bridge:
openclaw mcp remove dazzle
That's it locally — the bridge is no longer reachable from OpenClaw, and any cached
sign-in state becomes unusable. Removing the MCP server also clears
DAZZLE_KEYRING_PASSWORD from ~/.openclaw/openclaw.json, which renders the cached
OAuth tokens unrecoverable even if the keyring file remains on disk. To also revoke
the grant on Dazzle's side, the user can sign out of Dazzle from the browser or app.