diff --git a/index.html b/index.html index ee22b87..91ca898 100644 --- a/index.html +++ b/index.html @@ -126,6 +126,7 @@ /* ── How It Works ── */ .steps{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:40px} +.steps-4{grid-template-columns:repeat(4,1fr)} .step{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);padding:36px 28px;position:relative} .step-num{font-family:'JetBrains Mono',monospace;font-size:48px;font-weight:700;color:var(--accent);opacity:.15;position:absolute;top:16px;right:20px;line-height:1} .step-tag{font-family:'JetBrains Mono',monospace;font-size:10px;font-weight:600;color:var(--accent);text-transform:uppercase;letter-spacing:.7px;margin-bottom:12px} @@ -527,6 +528,49 @@

Ask for an evaluator decision

+ +
+
Built For
+
Use DJD when your product has to trust a wallet
+
The first buyers are usually developers shipping payouts, marketplaces, or paid agent workflows. DJD sits between a wallet address and a money-moving decision.
+
+
+
1
+
Marketplaces
+

Agent marketplaces

+

Screen providers before listing them, rank counterparties more intelligently, and link buyers to profiles, badges, and directory listings they can inspect.

+
score · profile · certify · directory
+ See the directory flow +
+
+
2
+
Settlement
+

Payout and escrow flows

+

Route low-confidence wallets into review, require stronger trust signals before release, and use evaluator decisions when a payout should not be fully automatic.

+
/v1/score/evaluator · /v1/score/risk
+ See settlement products +
+
+
3
+
Paid APIs
+

Paid agent tools and x402 services

+

Check the payer before expensive work starts, reject unknown or risky wallets, and keep the trust decision inside the route that handles monetized requests.

+
x402-agent-score · /premium/*
+ Open the x402 path +
+
+
4
+
Discovery
+

Directories and service networks

+

Publish an inspectable trust surface for each wallet so other apps, operators, and marketplaces can discover who is active, certified, and settlement-ready.

+
/agent/{wallet} · /v1/score/erc8004
+ See the docs +
+
+
+ +
+
Try It
@@ -677,6 +721,38 @@

Integrity Systems

+
+
Developer Quickstart
+
Ship the first version in one afternoon
+
You do not need the whole trust stack on day one. Most teams start with a free lookup, add enforcement once the workflow is clear, and only then turn on public trust surfaces.
+
+
+
1
+
Dev
+

Screen counterparties during development

+

Use the free lookup to see how DJD scores real wallets, pick your first threshold, and understand what a safe or risky counterparty looks like in your product.

+
GET /v1/score/basic?wallet=0x...
+ Run a free lookup +
+
+
2
+
Prod
+

Add production enforcement

+

When trust decisions need to happen inside a real workflow, switch to a monthly API key for teams or keep x402 as the native payment path for autonomous agents.

+
Authorization: Bearer djd_sk_... · X-PAYMENT
+ Choose a billing path +
+
+
3
+
Visible Trust
+

Publish trust surfaces customers can inspect

+

Once trust has to be visible outside your backend, add profiles, Certify, directory listings, and evaluator decisions so buyers and counterparties can see the same context your code uses.

+
/agent/{wallet} · /certify · /directory
+ Open the developer docs +
+
+
+
Identity
Register your agent in one request
diff --git a/openapi.json b/openapi.json index 625adc8..50972ec 100644 --- a/openapi.json +++ b/openapi.json @@ -2,7 +2,7 @@ "openapi": "3.1.0", "info": { "title": "DJD Agent Score API", - "description": "Trust infrastructure for AI agent wallets on Base. DJD helps apps and agent operators score wallets, publish public trust surfaces, and enforce payout or settlement policy before money moves. Paid endpoints support x402 on Base or API-key access for developer teams; free endpoints require no authentication. Interactive docs available at /docs.", + "description": "Trust infrastructure for AI agent wallets on Base. DJD helps apps and agent operators score wallets, publish public trust surfaces, and enforce payout or settlement policy before money moves. Use it for agent marketplaces, payout and escrow flows, paid tools, and automated settlement decisions. Paid endpoints support x402 on Base or API-key access for developer teams; free endpoints require no authentication. Interactive docs available at /docs.", "version": "2.0.0", "contact": { "email": "drewjacobs32@gmail.com" }, "license": { "name": "MIT", "url": "https://github.com/jacobsd32-cpu/djdagentscore/blob/main/LICENSE" } diff --git a/src/services/discoveryService.ts b/src/services/discoveryService.ts index adada0b..786613f 100644 --- a/src/services/discoveryService.ts +++ b/src/services/discoveryService.ts @@ -26,7 +26,36 @@ const OPENAPI_DOCUMENT = JSON.parse(OPENAPI_SPEC) as { const SERVICE_TITLE = OPENAPI_DOCUMENT.info?.title ?? 'DJD Agent Score API' const SERVICE_VERSION = OPENAPI_DOCUMENT.info?.version ?? FALLBACK_SERVICE_VERSION -const SWAGGER_HTML = ` +export function getPublicDiscoveryCacheControl(): string { + return PUBLIC_CACHE_CONTROL +} + +export function getOpenApiSpecView(): string { + const server = OPENAPI_DOCUMENT.servers?.[0] + return JSON.stringify( + { + ...OPENAPI_DOCUMENT, + info: { + ...OPENAPI_DOCUMENT.info, + contact: { + ...OPENAPI_DOCUMENT.info?.contact, + email: getSupportEmail(), + }, + }, + servers: [ + { + description: server?.description ?? 'Production', + url: getPublicBaseUrl(), + }, + ], + }, + null, + 2, + ) +} + +export function getDocsHtmlView(): string { + return ` @@ -46,7 +75,7 @@ const SWAGGER_HTML = ` .swagger-ui select { font-weight: bold; } .header-banner { background: linear-gradient(135deg, #0f3460, #1a1a2e); - padding: 2rem; + padding: 2.25rem 2rem 2rem; text-align: center; border-bottom: 2px solid #e94560; } @@ -57,10 +86,12 @@ const SWAGGER_HTML = ` margin: 0 0 0.5rem; } .header-banner p { - color: #8888aa; + color: #a6afd0; font-family: system-ui, sans-serif; - margin: 0; + margin: 0 auto; font-size: 0.95rem; + line-height: 1.7; + max-width: 760px; } .header-banner .badge { display: inline-block; @@ -73,12 +104,171 @@ const SWAGGER_HTML = ` margin-left: 0.5rem; vertical-align: middle; } + .header-actions { + display: flex; + justify-content: center; + gap: 0.75rem; + flex-wrap: wrap; + margin-top: 1rem; + } + .header-link { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 0.35rem; + padding: 0.7rem 1rem; + border-radius: 999px; + border: 1px solid rgba(129, 140, 248, 0.24); + background: rgba(15, 23, 42, 0.35); + color: #c7d2fe; + font-family: system-ui, sans-serif; + font-size: 0.9rem; + font-weight: 600; + text-decoration: none; + } + .header-link:hover { color: #ffffff; text-decoration: none; border-color: rgba(129, 140, 248, 0.5); } + .docs-shell { + max-width: 1120px; + margin: 0 auto; + padding: 2rem; + } + .docs-section { + margin-bottom: 1.5rem; + } + .docs-title { + color: #f8fafc; + font-family: system-ui, -apple-system, sans-serif; + font-size: 1.15rem; + font-weight: 700; + margin-bottom: 0.85rem; + } + .docs-copy { + color: #94a3b8; + font-family: system-ui, sans-serif; + font-size: 0.95rem; + line-height: 1.7; + margin-bottom: 1rem; + max-width: 860px; + } + .docs-grid { + display: grid; + gap: 1rem; + } + .docs-grid-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + .docs-grid-4 { + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + .docs-card { + background: rgba(15, 23, 42, 0.58); + border: 1px solid rgba(129, 140, 248, 0.16); + border-radius: 16px; + padding: 1rem; + min-height: 170px; + } + .docs-kicker { + color: #818cf8; + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; + font-size: 0.72rem; + font-weight: 700; + letter-spacing: 0.08em; + text-transform: uppercase; + margin-bottom: 0.65rem; + } + .docs-card h3 { + color: #f8fafc; + font-family: system-ui, sans-serif; + font-size: 1rem; + margin: 0 0 0.55rem; + } + .docs-card p { + color: #94a3b8; + font-family: system-ui, sans-serif; + font-size: 0.92rem; + line-height: 1.65; + margin: 0 0 0.8rem; + } + .docs-code { + display: inline-block; + padding: 0.45rem 0.65rem; + border-radius: 10px; + background: rgba(2, 6, 23, 0.85); + border: 1px solid rgba(148, 163, 184, 0.14); + color: #c7d2fe; + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; + font-size: 0.78rem; + line-height: 1.5; + } + @media (max-width: 920px) { + .docs-grid-3, + .docs-grid-4 { + grid-template-columns: 1fr; + } + }

DJD Agent Score API

-

Developer docs for scoring wallets, publishing trust surfaces, and gating payouts or x402 routes · View pricing & plans

+

Developer docs for scoring wallets, publishing trust surfaces, and gating payouts or x402 routes. Start with a free lookup, move into API-key or x402 production auth, then add evaluator, Certify, and directory surfaces when trust needs to become visible.

+ +
+
+
+
Ship your first DJD integration
+
The simplest path is: screen counterparties in development, choose your production billing path, then add public trust surfaces only when customers or operators need to inspect what your backend already knows.
+
+
+
Step 1
+

Screen counterparties during development

+

Start with the free score endpoint and test real wallet decisions before you change any production flow.

+
GET /v1/score/basic?wallet=0x...
+
+
+
Step 2
+

Add production auth

+

Human teams usually move to a Bearer API key. Autonomous agents can keep paying per request with x402.

+
Authorization: Bearer djd_sk_...
X-PAYMENT: <proof>
+
+
+
Step 3
+

Layer in trust surfaces

+

When the trust decision needs to be inspectable, add evaluator, directory, certification, and standards-facing outputs.

+
/v1/score/evaluator
/v1/certification/directory
/v1/score/erc8004
+
+
+
+
+
Use DJD when you're building
+
DJD fits best anywhere a wallet can cost you money, fulfillment quality, or customer trust. These are the strongest customer wedges in the product today.
+
+
+
Marketplaces
+

Agent marketplaces

+

Score providers before listing them and link buyers to profiles, badges, and certification surfaces they can inspect.

+
+
+
Settlement
+

Payout and escrow flows

+

Use score, risk, and evaluator outputs before releasing funds or treating a counterparty as settlement-ready.

+
+
+
Paid APIs
+

x402 and paid agent tools

+

Check the payer before expensive work starts and keep trust gating inside the same monetized route.

+
+
+
Discovery
+

Directories and service networks

+

Publish machine-readable trust documents and public pages so other apps can discover certified, inspectable wallets.

+
+
+
@@ -100,37 +290,6 @@ const SWAGGER_HTML = ` ` - -export function getPublicDiscoveryCacheControl(): string { - return PUBLIC_CACHE_CONTROL -} - -export function getOpenApiSpecView(): string { - const server = OPENAPI_DOCUMENT.servers?.[0] - return JSON.stringify( - { - ...OPENAPI_DOCUMENT, - info: { - ...OPENAPI_DOCUMENT.info, - contact: { - ...OPENAPI_DOCUMENT.info?.contact, - email: getSupportEmail(), - }, - }, - servers: [ - { - description: server?.description ?? 'Production', - url: getPublicBaseUrl(), - }, - ], - }, - null, - 2, - ) -} - -export function getDocsHtmlView(): string { - return SWAGGER_HTML } export function getX402DiscoveryView(requestUrl: string, forwardedProto?: string | null) { diff --git a/src/templates/pricing.ts b/src/templates/pricing.ts index cb8339f..1547c25 100644 --- a/src/templates/pricing.ts +++ b/src/templates/pricing.ts @@ -93,6 +93,13 @@ footer{border-top:1px solid var(--border);padding:36px 0 48px;margin-top:80px} .how-title{font-size:15px;font-weight:600;margin-bottom:6px} .how-desc{font-size:13px;color:var(--text-dim);line-height:1.6} +/* Buyer stories */ +.buyer-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin:0 0 60px} +.buyer-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);padding:28px 26px} +.buyer-kicker{font-family:'JetBrains Mono',monospace;font-size:10px;font-weight:600;color:var(--accent);text-transform:uppercase;letter-spacing:1.5px;margin-bottom:10px} +.buyer-card h3{font-size:17px;font-weight:600;margin-bottom:8px} +.buyer-card p{font-size:14px;color:var(--text-dim);line-height:1.75} + /* Plans grid */ .plans{display:grid;grid-template-columns:repeat(4,1fr);gap:0;margin:0 0 60px} .plan-card{background:var(--bg2);border:1px solid var(--border);padding:36px 28px;position:relative;transition:border-color .2s} @@ -169,6 +176,7 @@ footer{border-top:1px solid var(--border);padding:36px 0 48px;margin-top:80px} .plan-card:first-child{border-radius:var(--radius) var(--radius) 0 0!important;border-top:1px solid var(--border)} .plan-card:last-child{border-radius:0 0 var(--radius) var(--radius)!important} .how-strip{grid-template-columns:1fr} + .buyer-grid{grid-template-columns:1fr} .compare{grid-template-columns:1fr} .nav-links{gap:14px} .ft-bot{flex-direction:column;gap:12px;text-align:center;padding:0 20px} @@ -219,6 +227,29 @@ footer{border-top:1px solid var(--border);padding:36px 0 48px;margin-top:80px}
+
+
Best First Customers
+
Common ways developer teams use DJD
+
The product usually lands first where a wallet can cost you money, reputation, or fulfillment quality. These are the customer stories we are built for today.
+
+
+
Marketplaces
+

Agent marketplaces and directories

+

Screen providers before listing them, rank counterparties with more context, and give buyers inspectable profile, certification, and directory surfaces instead of a bare wallet address.

+
+
+
Settlement
+

Payout and settlement products

+

Use score, risk, staking, and evaluator outputs to decide whether a payout should auto-approve, route into review, or stop before money moves.

+
+
+
Monetized APIs
+

Paid agent tools and x402 services

+

Protect expensive routes, reject unknown payers, and keep wallet trust checks inside the same flow that already handles billing, API keys, or x402 settlement.

+
+
+
+
@@ -385,7 +416,7 @@ footer{border-top:1px solid var(--border);padding:36px 0 48px;margin-top:80px} diff --git a/tests/routes/docs.test.ts b/tests/routes/docs.test.ts index 2356e6e..5e1ce53 100644 --- a/tests/routes/docs.test.ts +++ b/tests/routes/docs.test.ts @@ -18,5 +18,9 @@ describe('GET /docs', () => { expect(body).toContain('/openapi.json') expect(body).toContain('Developer docs for scoring wallets') expect(body).toContain('gating payouts or x402 routes') + expect(body).toContain('Ship your first DJD integration') + expect(body).toContain('Screen counterparties during development') + expect(body).toContain("Use DJD when you're building") + expect(body).toContain('Payout and escrow flows') }) }) diff --git a/tests/routes/legal.test.ts b/tests/routes/legal.test.ts index 7e06c9d..5ac4cd8 100644 --- a/tests/routes/legal.test.ts +++ b/tests/routes/legal.test.ts @@ -20,6 +20,10 @@ describe('GET /', () => { expect(body).toContain('before your app sends money') expect(body).toContain('A trust layer for AI agents and the apps around them') expect(body).toContain('One trust engine, packaged for humans and software') + expect(body).toContain('Use DJD when your product has to trust a wallet') + expect(body).toContain('Payout and escrow flows') + expect(body).toContain('Ship the first version in one afternoon') + expect(body).toContain('Screen counterparties during development') expect(body).toContain('Certification profile') expect(body).toContain('Certify readiness') expect(body).toContain('/directory') diff --git a/tests/routes/openapi.test.ts b/tests/routes/openapi.test.ts index 1f4861b..2db5934 100644 --- a/tests/routes/openapi.test.ts +++ b/tests/routes/openapi.test.ts @@ -32,6 +32,7 @@ describe('GET /openapi.json', () => { const body = JSON.parse(await res.text()) as { info?: { title?: string; description?: string } } expect(body.info?.title).toBe('DJD Agent Score API') expect(body.info?.description).toContain('Trust infrastructure') + expect(body.info?.description).toContain('agent marketplaces') }) it('injects the canonical public URL and support email at runtime', async () => { diff --git a/tests/routes/pricing.test.ts b/tests/routes/pricing.test.ts index dfae8a1..44a9ee8 100644 --- a/tests/routes/pricing.test.ts +++ b/tests/routes/pricing.test.ts @@ -17,6 +17,9 @@ describe('GET /pricing', () => { expect(body).toContain('production API-key access') expect(body).toContain('certified directory') expect(body).toContain('ERC-8183 evaluator preview endpoint') + expect(body).toContain('Common ways developer teams use DJD') + expect(body).toContain('Payout and settlement products') + expect(body).toContain('Paid agent tools and x402 services') expect(body).toContain('No. x402 is the crypto-native path for autonomous agents') expect(body).toContain('/directory') expect(body).toContain('/explorer')