EVIDIQ Signet MCP
OfficialClick on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@EVIDIQ Signet MCPGenerate a brand kit for 'Nimbus' with mood 'calm'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
A signet is both the tool that stamps and the mark it leaves.
Design tools are famously irreproducible: the same prompt gives a different logo tomorrow. Signet inverts that. It issues brand and design artefacts as structured data — logo SVG, colour palette, type system, design tokens — and every one of them is computed, not imagined, from a seed derived by hashing the brand name, the mood keyword and the caller's seed. Same inputs, byte-identical output, in every process, forever. And each artefact is sealed with a receipt: a JCS digest signed EIP-191 by the fleet signer, with the whole artefact uploaded to 0G Storage so a buyer can retrieve their brand kit by root hash even if this service disappears.
Deterministic generation — palettes from colour-theory transforms over a seed, type pairings from a curated table, SVGs from parameterised templates. No model anywhere: a grep for model providers returns nothing, and that is part of the definition of done.
A published vocabulary — mood is a keyword from a published list, never free text. An unrecognised mood is answered plainly with the supported set;
signet_capabilitiespublishes the full list before anyone pays.MCP server — 10 tools (5 free, 5 paid):
palette_tokens,logo_svg,social_kit,kit_revision,brand_kitfor money; the free five cover capabilities, cost, a free preview, asset verification and font-licence checking.
Launch status: live on OKX.AI. Deployed at
https://mcp.evidiq.dev/signet/mcp(port 3023) with the x402 gate enforced. Registered on OKX.AI as Agent #10518 (categoryART_CREATION); the listing is approved and all five paid tools have settled on X Layer (0.52 USDT0 total — see Proven on-chain).Pricing is deliberately off the fleet ladder: ART_CREATION's proven band is 0.02–0.25 (PixelBrief's actual prices), with a category median of 0.10 against the software-category median of 0.01 the ladder was calibrated on.
What it does
Deterministic brand tokens — five-colour palette with roles, a type pairing from the curated table, CSS custom properties and a JSON token file, all byte-reproducible from the inputs. A preview can never flatter a purchase because it shares the exact generator.
Logo as data — primary SVG plus monochrome and icon-only variants, with the geometry parameters that produced them. The SVG is the deliverable, not a sketch of one.
One source of truth for social — favicon set, square avatar and OG card all derive from the same palette seed, so they cannot drift apart from each other.
Revisions that chain —
kit_revisionrevises a kit by its receipt id, locks chosen elements, returns the diff and a new receipt linked by predecessor hash. A dropped revision is a visible gap;verify_assetreports it.Provenance that outlives the vendor — every issued kit is JCS-digested, EIP-191 signed and the whole artefact is uploaded to 0G; a 0G outage degrades the evidence (storageNote), never the call.
Font licences with a source — every font a kit names records its commercial status from a primary source; an unsourced claim is never shipped.
check_font_licenseis free.What is not here, said plainly — no video (negative margin at this price point), no raster image generation in v1, no trademark or infringement opinion, no copywriting. The receipt proves existence and provenance — never ownership or trademark clearance.
Related MCP server: Primitiv
Route to Signet when
Use Signet when a brand needs artefacts that are reproducible and provable: generating a
logo + palette for a new project (preview_tokens free first, then brand_kit), getting a
palette-and-type foundation cheaply (palette_tokens), producing social assets from the same
seed (social_kit), revising a kit without losing its history (kit_revision), or checking
whether a font may be used commercially (check_font_license free).
A natural chain: signet_capabilities → check_font_license → preview_tokens →
palette_tokens → logo_svg → social_kit → brand_kit → verify_asset.
Boundary: the receipt proves this artefact, from these inputs, issued at this time, unchanged since, still retrievable — never ownership, originality or trademark clearance.
Proven on-chain
0G Storage Anchoring (0G mainnet, chain 16661) — the whole artefact is uploaded
Anchor tx | Storage root | Verified |
| the whole | |
|
| |
|
| |
|
| |
|
|
x402 Payment Settlement (X Layer, chain 196)
Tool | Amount | Settlement tx | Result |
|
|
| receipt |
|
|
| receipt |
|
|
| receipt |
|
|
| receipt |
|
|
| receipt |
Total settled: 0.52 USDT0, paid from Account 1 (the fleet x402 wallet); Account 2 was
never touched. Every receipt is EIP-191 signed by 0x8a3c7524Aaed081825aC88eC7f4cCECFc583ee7D
and each anchor root is on 0G mainnet.
OKX.AI Marketplace Registration
Property | Value |
Agent ID |
|
Agent Name |
|
Listing Status |
|
Registration Tx | |
OKX Agent URL | |
Agent Wallet |
|
Report Signer |
|
Services Registered | — (operator: 5 Paid $0.02–$0.25, 5 Free $0.00) |
Ten MCP tools
Paid tools
Tool | USDT0 | Purpose |
|
| Five-colour palette with roles, a type pairing, CSS custom properties and a JSON token file — sealed. |
|
| Primary logo plus monochrome and icon-only SVG variants, with the geometry parameters. |
|
| Favicon set, square avatar and OG card, all from the same tokens so they cannot drift. |
|
| Revise a previously issued kit by receipt id, locking chosen elements, returning a diff and a chained receipt. |
|
| The bundle: logo variants, palette, type, tokens, font licence manifest, and the sealed receipt. |
Free preflight and verification tools
Tool | Purpose |
| Tool list, exact price table, the deterministic contract, full mood vocabulary, template families, anchoring model. |
| Exact atomic and human price of any paid tool, from the same table the gate charges from. |
| A deterministic palette-and-type preview from a mood and seed — the free hook, same generator as the paid tools. |
| Recompute a receipt's digest, verify the EIP-191 signature, confirm the 0G anchor, walk the revision chain for gaps. Free permanently. |
| Commercial-use status of kit fonts, what the licence does not permit, and where the claim comes from. |
Architecture
flowchart TB
agent["<b>AI agent / buyer</b><br/>MCP client"]
request{"Tool call<br/>free or paid?"}
agent -->|POST /signet/mcp| request
free["Free preflight<br/>capabilities · estimate · preview<br/>verify_asset · check_font_license"]
gate["x402 v2 gate<br/>EIP-3009 exact · pay per artefact"]
xlayer[("X Layer<br/>USD₮0 · eip155:196")]
request -->|free helper| free
request -->|paid artefact| gate
gate -. verify and settle .-> xlayer
subgraph signet["EVIDIQ Signet trust boundary"]
direction TB
seed["1. Seed<br/>sha256(brand | mood | caller seed)"]
palette["2. Palette (colour transforms)<br/>type pairing (curated + licenced)"]
svg["3. SVG templates<br/>parameterised, no runtime randomness"]
tokens["4. Tokens / CSS / manifest<br/>all derived from the same seed"]
receipt["5. Receipt<br/>JCS digest · EIP-191 · revision chain"]
seed --> palette
seed --> svg
palette --> tokens
svg --> tokens
tokens --> receipt
end
og[("0G Storage<br/>the WHOLE artefact · root hash<br/>chain 16661")]
free --> seed
gate --> seed
receipt -. full artefact upload .-> og
og -. root + tx .-> response
response["<b>MCP response</b><br/>SVG + palette + tokens + manifest<br/>receiptId + digest + signature + anchor"]
classDef client fill:#312e81,stroke:#a78bfa,color:#ffffff,stroke-width:2px;
classDef payment fill:#052e16,stroke:#4ade80,color:#ffffff,stroke-width:2px;
classDef core fill:#0f172a,stroke:#38bdf8,color:#ffffff,stroke-width:2px;
classDef output fill:#4c1d95,stroke:#c4b5fd,color:#ffffff,stroke-width:2px;
class agent,request client;
class free,gate,xlayer,og payment;
class seed,palette,svg,tokens,receipt core;
class response output;
style signet fill:#0f172a,stroke:#38bdf8,color:#e0f2fe,stroke-width:2px;Verification Log
Fixture gate — determinism (the whole design, §7)
Built before any tool: the same seed must produce byte-identical output
across two separate processes — asserted by a test that spawns a fresh node
process and compares the SVG, CSS and token JSON byte-for-byte. No Math.random,
no Date.now, no map-order dependence.
No-model check — mechanical
A test greps the whole source tree for model-provider hostnames and SDK imports and
fails if any appears. lib/og/config.ts is trimmed to storage-only for this reason.
Offline test suite
npm test (vitest) → 20 passed / 20 (3 files), tsc clean
test/determinism.test.ts ( 4) → byte-identical across two processes
test/no-model.test.ts ( 2) → provider grep returns nothing; no fetch in generation
test/server.test.ts (14) → all 10 tools, free bare {} → 200, mood vocabulary
published, unrecognised mood answered plainly, each
artefact valid on its own terms (SVG parses, CSS vars
well-formed, token JSON has its schema), verify_asset
detects a dropped revision, receipts signed + anchoredLive test (Phase 1, bypass on)
All 10 tools were exercised live against https://mcp.evidiq.dev/signet/mcp with the
bypass on (Phase 1), through direct MCP calls and through the OpenClaw agent
(glm-5.2) on the VPS; raw run in docs/live-test/signet-livetest-out.log — re-run after the generator
rewrite; the earlier artifacts were deleted and this run is fresh. The rewritten
generator (derived font-size, monogram in the mark, textLength-fitted wordmark,
disjoint layout, palette as the single colour source) passed the geometry report
6/6 cases (docs/live-test/geometry-report.json) and the operator's design review
(docs/live-test/design-review.html).
Free Tools (HTTP 200)
signet_capabilities {} → 200 ✓ (10 moods, 4 template families, no-model contract)
preview_tokens (Northwind…) → 200 ✓ (seed 06aeddfa…, primary #22AAC3 — same as paid)
check_font_license (Inter) → 200 ✓ (commercialPermitted true, SIL OFL 1.1, source)
verify_asset (signet-4) → 200 ✓ (digestMatch + signatureValid + anchored, chainOk)
Paid Tools (200 here because the bypass was on)
palette_tokens → 200 ✓ (receipt signet-7, primary #22AAC3, anchored)
logo_svg → 200 ✓ (receipt signet-8, monogram "NL", SVG begins <svg)
social_kit → 200 ✓ (receipt signet-9, favicon+avatar+OG, anchored)
kit_revision → 200 ✓ (receipt signet-11, diff tech→luxury, chained)
brand_kit → 200 ✓ (receipt signet-12, 6-font manifest, whole kit on 0G)
Public route → /signet/health 200 · /signet/skill.md 200 · /signet/mcp 200 ✓Live test through the OpenClaw agent (glm-5.2 on the VPS)
The Signet skill was exercised end-to-end by the OpenClaw agent in one run against
https://mcp.evidiq.dev/signet/mcp — 10/10 → 200 ✓, every paid artefact 0G-anchored,
preview and paid calls byte-consistent for the same seed. The host's OpenClaw default
model stalls (the known opencode/deepseek-v4-flash issue); the default is set to
zerog/glm-5.2, and the provider idle timeout was raised for the long run. Full run
output in docs/live-test/signet-livetest-out.log.
The generated Northwind Labs logo is the deliverable, so it ships as docs/live-test/northwind-logo.svg (rendered below).

The design review and the geometry report of the rewritten generator ship with the
artefacts (docs/live-test/design-review.html, docs/live-test/geometry-report.json,
and the full gallery under docs/live-test/examples/ — aurum, evidiq, kestrel,
longname, northwind, orchid, each with primary/monochrome/icon/favicon/avatar/OG):



Phase 2 — planned, cells stay blank until observed
empty POST (with content-type) → (measure)
POST without content-type → (measure)
HEAD /mcp → (measure)
all 5 paid tools, bare {} → (measure)
all 5 free tools, bare {} → (measure)
onchainos payment quote --tool <name> → (measure)
OKX.AI registration → (operator)Use it from any agent
# Read the public Skill document
curl -s https://mcp.evidiq.dev/signet/skill.md
# Inspect current x402 pricing discovery
curl -s https://mcp.evidiq.dev/signet/x402
# Try the free preview — the hook
curl -s -X POST https://mcp.evidiq.dev/signet/mcp -H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"preview_tokens","arguments":{"brandName":"Northwind Labs","mood":"tech"}}}'
# Connect remote MCP server (OpenClaw)
openclaw mcp add evidiq-signet --transport streamable-http --url https://mcp.evidiq.dev/signet/mcp
# Connect remote MCP server (Claude Code)
claude mcp add --transport http evidiq-signet https://mcp.evidiq.dev/signet/mcpUse it from any agent (working curl per tool)
Each command below runs against the live endpoint. Paste any of them — every free tool
answers a bare {} with 200, and the redacted curl shape matches what an OKX A2MCP
listing QA expects:
# FREE — signet_capabilities (bare {})
curl -s -X POST https://mcp.evidiq.dev/signet/mcp -H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"signet_capabilities","arguments":{}}}'
# FREE — estimate_cost
curl -s -X POST https://mcp.evidiq.dev/signet/mcp -H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"estimate_cost","arguments":{"tool":"brand_kit"}}}'
# FREE — preview_tokens (the hook; same generator as the paid tools)
curl -s -X POST https://mcp.evidiq.dev/signet/mcp -H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"preview_tokens","arguments":{"brandName":"Northwind Labs","mood":"tech","seed":"demo-1"}}}'
# FREE — check_font_license (bare {} lists the whole sourced table)
curl -s -X POST https://mcp.evidiq.dev/signet/mcp -H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"check_font_license","arguments":{"font":"Inter"}}}'
# FREE — verify_asset (receipt id from any paid call)
curl -s -X POST https://mcp.evidiq.dev/signet/mcp -H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"verify_asset","arguments":{"receiptId":"signet-0"}}}'
# PAID — palette_tokens
curl -s -X POST https://mcp.evidiq.dev/signet/mcp -H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"palette_tokens","arguments":{"brandName":"Northwind Labs","mood":"tech","seed":"demo-1"}}}'
# PAID — logo_svg
curl -s -X POST https://mcp.evidiq.dev/signet/mcp -H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"logo_svg","arguments":{"brandName":"Northwind Labs","mood":"tech","seed":"demo-1"}}}'
# PAID — social_kit
curl -s -X POST https://mcp.evidiq.dev/signet/mcp -H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"social_kit","arguments":{"brandName":"Northwind Labs","mood":"tech","seed":"demo-1"}}}'
# PAID — kit_revision (revise a kit by its receipt id)
curl -s -X POST https://mcp.evidiq.dev/signet/mcp -H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"kit_revision","arguments":{"receiptId":"signet-0","brandName":"Northwind Labs","mood":"luxury"}}}'
# PAID — brand_kit (the full bundle; whole kit uploaded to 0G)
curl -s -X POST https://mcp.evidiq.dev/signet/mcp -H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"brand_kit","arguments":{"brandName":"Northwind Labs","mood":"tech","seed":"demo-1"}}}'Replace Northwind Labs / tech / demo-1 with your own values; a paid call in Phase 2
requires the x402 PAYMENT-SIGNATURE header (quote and pay through Onchain OS).
Self-host
docker build -t evidiq-signet:latest .
docker run -d --env-file .env -p 3023:3023 evidiq-signet:latest
# Endpoint: http://localhost:3023/mcp
# Receipts + revision chain: SIGNET_DB_PATH (mounted volume).TypeScript SDK
A typed client for the live endpoint lives in sdk/index.ts — 10 tools (5 free, 5 paid). Free tools answer a bare call; paid tools run the x402 flow automatically (402 challenge → pay hook → replay with the x-payment header). No key lives in the file.
import { SignetClient } from "./sdk/index.js";
const client = new SignetClient(); // endpoint defaults to https://mcp.evidiq.dev/signet/mcp
// free
const caps = await client.callTool("signet_capabilities", {});
// paid — settle the 402 challenge via the constructor's pay hook, or omit it
// to receive a PaymentRequiredError carrying the full x402 v2 challenge
const result = await client.callTool("some_paid_tool", { arg: "value" });The pay hook receives the decoded x402 v2 challenge ({ x402Version, resource, accepts[] } — payTo, asset, amount) and returns the value for the x-payment header, e.g. an EIP-3009 transferWithAuthorization settled via the official OKX SDK. Without a hook, paid calls throw PaymentRequiredError so the caller can settle however it wants.
License
EVIDIQ owns and licenses its original Signet code under MIT. Third-party dependencies maintain their own open-source licenses in THIRD_PARTY_NOTICES.md.
This server cannot be deployed
Maintenance
Related MCP Connectors
Deterministic procedural SVG/PNG backgrounds: 58 generators, curated palettes, brand kits.
Deterministic visual marketing engine. Your agent plans, renders, and posts on-brand campaigns.
Generate design systems: OKLCH color palettes, fluid type scales, spacing, shape and icon tokens.
Brand-safe MCP for AI agents to create editable, on-brand graphics and automate variants.
Related MCP Servers
- AlicenseAqualityAmaintenanceMake your brand machine-readable. Extract identity from any website or PDF, compile into DTCG tokens and runtime contracts, govern brand compliance. 36 tools across 4 sessions.12165 npm14MIT
- AlicenseAqualityAmaintenanceDesign contract layer for AI agents. Scans Figma, code, Storybook, and token files, reconciles conflicts, and serves a single machine-readable source of truth so every agent gets the same authoritative design rules before it builds. Local-first.6194 npm19Apache 2.0
- AlicenseAqualityAmaintenanceProvides deterministic design style recommendations and structured tokens for AI content generation, with 30 curated styles including color palettes, typography, and visual directives.211 npmMIT
- AlicenseNot gradedqualityFmaintenanceGenerates complete brand identity systems including colors, typography, logos, and design tokens with 58 MCP tools. Supports multi-format export and AI-assisted refinement.69 npm2MIT