@reclaimprotocol/agent 0.1.27 → 0.1.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/lib/authoring/tools.js +2 -1
- package/lib/consts.d.ts +1 -1
- package/lib/consts.js +1 -1
- package/lib/live/tunnel.d.ts +4 -0
- package/lib/live/tunnel.js +21 -12
- package/lib/mcp/api/operations.gen.d.ts +8 -8
- package/lib/mcp/api/operations.gen.js +339 -581
- package/lib/mcp/api/tools.d.ts +1 -1
- package/lib/mcp/instructions.js +7 -3
- package/lib/mcp/remap_errors.js +9 -5
- package/lib/mcp/start.js +1 -1
- package/lib/mcp/tools/agent/attach.d.ts +2 -2
- package/lib/mcp/tools/agent/attach.js +4 -0
- package/lib/mcp/tools/agent/build.d.ts +1 -1
- package/lib/mcp/tools/agent/live-view-url.d.ts +2 -0
- package/lib/mcp/tools/agent/live-view-url.js +11 -0
- package/lib/mcp/tools/agent/live-view.d.ts +4 -2
- package/lib/mcp/tools/agent/live-view.js +42 -39
- package/lib/mcp/tools/agent/propose.js +10 -4
- package/lib/mcp/tools/agent/publish.d.ts +1 -1
- package/lib/mcp/tools/agent/publish.js +49 -26
- package/lib/mcp/tools/agent/shared.js +0 -9
- package/lib/mcp/tools/authenticate/authenticate.d.ts +1 -1
- package/lib/mcp/tools/authenticate/build.d.ts +1 -1
- package/lib/mcp/tools/authenticate/builder-access.d.ts +1 -1
- package/lib/mcp/tools/verification/result.js +12 -13
- package/lib/old/login-cdp.d.ts +17 -6
- package/lib/old/login-cdp.js +28 -11
- package/lib/old/to-register.d.ts +6 -0
- package/lib/old/to-register.js +35 -5
- package/lib/old/tools/authenticate.d.ts +5 -4
- package/lib/old/tools/authenticate.js +9 -5
- package/lib/old/tools/publish.d.ts +2 -2
- package/lib/old/tools/publish.js +47 -21
- package/lib/proof/attestor-auth.d.ts +13 -0
- package/lib/proof/attestor-auth.js +16 -0
- package/lib/proof/attestor.d.ts +7 -4
- package/lib/proof/attestor.js +7 -4
- package/lib/proof/index.d.ts +1 -0
- package/lib/proof/index.js +1 -0
- package/lib/proof/pod-prover.d.ts +2 -0
- package/lib/proof/pod-prover.js +5 -5
- package/lib/provider/injection-doc.d.ts +2 -0
- package/lib/provider/injection-doc.js +7 -1
- package/lib/provider/post-publish-browser.d.ts +12 -0
- package/lib/provider/post-publish-browser.js +40 -0
- package/lib/provider/to-version.d.ts +19 -7
- package/lib/provider/to-version.js +67 -25
- package/lib/tools/registry.d.ts +1 -1
- package/lib/tools/registry.js +7 -4
- package/package.json +2 -2
- package/skill/SKILL.builder.md +118 -13
- package/skill/SKILL.common.md +30 -19
- package/skill/SKILL.old.md +22 -12
- package/skill/builder-mode.md +19 -9
- package/skill/community-contributions.md +108 -0
- package/skill/hash-validation.md +8 -5
- package/skill/interception.md +35 -22
- package/skill/old-mode.md +11 -5
- package/skill/user-script.md +41 -10
- package/src/authoring/tools.ts +2 -1
- package/src/consts.ts +1 -2
- package/src/live/tunnel.ts +28 -14
- package/src/mcp/api/operations.gen.ts +341 -585
- package/src/mcp/api/tools.ts +1 -1
- package/src/mcp/instructions.ts +7 -3
- package/src/mcp/remap_errors.ts +9 -7
- package/src/mcp/start.ts +1 -1
- package/src/mcp/tools/agent/attach.ts +6 -2
- package/src/mcp/tools/agent/build.ts +1 -1
- package/src/mcp/tools/agent/live-view-url.ts +13 -0
- package/src/mcp/tools/agent/live-view.ts +44 -39
- package/src/mcp/tools/agent/propose.ts +10 -4
- package/src/mcp/tools/agent/publish.ts +63 -28
- package/src/mcp/tools/agent/shared.ts +5 -0
- package/src/mcp/tools/authenticate/authenticate.ts +1 -1
- package/src/mcp/tools/authenticate/build.ts +1 -1
- package/src/mcp/tools/authenticate/builder-access.ts +1 -1
- package/src/mcp/tools/verification/result.ts +11 -13
- package/src/old/login-cdp.ts +38 -11
- package/src/old/to-register.ts +56 -7
- package/src/old/tools/authenticate.ts +9 -5
- package/src/old/tools/publish.ts +64 -22
- package/src/proof/attestor-auth.ts +33 -0
- package/src/proof/attestor.ts +14 -8
- package/src/proof/index.ts +4 -0
- package/src/proof/pod-prover.ts +7 -5
- package/src/provider/injection-doc.ts +9 -1
- package/src/provider/post-publish-browser.ts +56 -0
- package/src/provider/to-version.ts +104 -27
- package/src/tools/registry.ts +12 -9
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// AUTO-GENERATED by packages/app/scripts/mcp-tools-gen.ts
|
|
2
2
|
// from packages/app/openapi.yaml.
|
|
3
|
-
// Run `npm run openapi:
|
|
3
|
+
// Run `npm run openapi:gen --workspace=packages/app`
|
|
4
4
|
// to regenerate. Do not edit by hand.
|
|
5
5
|
// @ts-nocheck
|
|
6
6
|
import { toZod } from "./to-zod.js";
|
|
@@ -190,12 +190,13 @@ export const MCP_TOOLS = {
|
|
|
190
190
|
},
|
|
191
191
|
"status": {
|
|
192
192
|
"type": "string",
|
|
193
|
-
"description": "Status of a verification session, derived from its events. New values\nmay be added over time; clients MUST tolerate unknown values in\nresponses.\n\n- `pending`: Created, not yet finished; completable until `expiresAt`.\n\n- `success`: Terminal — `verification_success` recorded.\n\n- `rejected`: Terminal — `verification_rejected` recorded.\n\n- `error`: Terminal — `verification_error` recorded.\n\n- `expired`: `expiresAt` passed before a terminal event; the end-user\n can no longer complete it.",
|
|
193
|
+
"description": "Status of a verification session, derived from its events. New values\nmay be added over time; clients MUST tolerate unknown values in\nresponses.\n\n- `pending`: Created, not yet finished; completable until `expiresAt`.\n\n- `success`: Terminal — `verification_success` recorded.\n\n- `rejected`: Terminal — `verification_rejected` recorded.\n\n- `error`: Terminal — `verification_error` recorded.\n\n- `cancelled`: Terminal — `verification_cancelled` recorded.\n\n- `expired`: `expiresAt` passed before a terminal event; the end-user\n can no longer complete it.",
|
|
194
194
|
"enum": [
|
|
195
195
|
"pending",
|
|
196
196
|
"success",
|
|
197
197
|
"rejected",
|
|
198
198
|
"error",
|
|
199
|
+
"cancelled",
|
|
199
200
|
"expired"
|
|
200
201
|
]
|
|
201
202
|
},
|
|
@@ -220,6 +221,113 @@ export const MCP_TOOLS = {
|
|
|
220
221
|
"additionalProperties": false
|
|
221
222
|
}),
|
|
222
223
|
},
|
|
224
|
+
"BindVerificationSessionTeeNonce": {
|
|
225
|
+
description: "Bind a legacy-compatible TEE nonce to a verification session\n\nBinds one immutable legacy TEE nonce context to a pending session. Requires an OrgToken and an EIP-191 signature from the organization's registered verification key. Repeating the exact binding is idempotent; conflicting or terminal sessions return 409.",
|
|
226
|
+
inputSchema: toZod({
|
|
227
|
+
"type": "object",
|
|
228
|
+
"properties": {
|
|
229
|
+
"params": {
|
|
230
|
+
"type": "object",
|
|
231
|
+
"properties": {
|
|
232
|
+
"sessionId": {
|
|
233
|
+
"type": "string",
|
|
234
|
+
"format": "uuid",
|
|
235
|
+
"description": "Verification session id (UUID v7 when supported). Also echoed in the result payload as `reclaimSessionId`."
|
|
236
|
+
}
|
|
237
|
+
},
|
|
238
|
+
"required": [
|
|
239
|
+
"sessionId"
|
|
240
|
+
],
|
|
241
|
+
"additionalProperties": false
|
|
242
|
+
},
|
|
243
|
+
"query": {
|
|
244
|
+
"type": "object",
|
|
245
|
+
"properties": {}
|
|
246
|
+
},
|
|
247
|
+
"body": {
|
|
248
|
+
"type": "object",
|
|
249
|
+
"additionalProperties": false,
|
|
250
|
+
"description": "One immutable legacy TEE context, signed by the organization verification key. The signature is EIP-191 `personal_sign` over `RECLAIM_BUILDER_TEE_BINDING_V1:{organizationId}:{sessionId}:{applicationId}:{timestamp}:{attestationVersion}:{attestationNonce}`.",
|
|
251
|
+
"required": [
|
|
252
|
+
"attestationNonce",
|
|
253
|
+
"attestationNonceData",
|
|
254
|
+
"signature"
|
|
255
|
+
],
|
|
256
|
+
"properties": {
|
|
257
|
+
"attestationNonce": {
|
|
258
|
+
"description": "Either the current lowercase 64-hex hash nonce (without `0x`) or the older 65-byte EIP-191 signature nonce (`0x` plus 130 hex characters). Builder preserves either encoding unchanged.",
|
|
259
|
+
"oneOf": [
|
|
260
|
+
{
|
|
261
|
+
"type": "string",
|
|
262
|
+
"pattern": "^[0-9a-f]{64}$",
|
|
263
|
+
"minLength": 64,
|
|
264
|
+
"maxLength": 64
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
"type": "string",
|
|
268
|
+
"pattern": "^0x[0-9a-fA-F]{130}$",
|
|
269
|
+
"minLength": 132,
|
|
270
|
+
"maxLength": 132
|
|
271
|
+
}
|
|
272
|
+
]
|
|
273
|
+
},
|
|
274
|
+
"attestationNonceData": {
|
|
275
|
+
"type": "object",
|
|
276
|
+
"additionalProperties": false,
|
|
277
|
+
"description": "Exact legacy TEE nonce inputs. Builder stores this unchanged in the session context after it verifies the signed binding request.",
|
|
278
|
+
"required": [
|
|
279
|
+
"applicationId",
|
|
280
|
+
"sessionId",
|
|
281
|
+
"timestamp",
|
|
282
|
+
"attestationVersion"
|
|
283
|
+
],
|
|
284
|
+
"properties": {
|
|
285
|
+
"applicationId": {
|
|
286
|
+
"type": "string",
|
|
287
|
+
"description": "Ethereum application address derived from the organization private key. Its supplied casing is preserved for legacy nonce compatibility.",
|
|
288
|
+
"pattern": "^0x[0-9a-fA-F]{40}$",
|
|
289
|
+
"minLength": 42,
|
|
290
|
+
"maxLength": 42
|
|
291
|
+
},
|
|
292
|
+
"sessionId": {
|
|
293
|
+
"type": "string",
|
|
294
|
+
"format": "uuid",
|
|
295
|
+
"description": "Verification session id (UUID v7 when supported). Also echoed in the result payload as `reclaimSessionId`."
|
|
296
|
+
},
|
|
297
|
+
"timestamp": {
|
|
298
|
+
"type": "string",
|
|
299
|
+
"description": "Decimal Unix timestamp in milliseconds.",
|
|
300
|
+
"pattern": "^[0-9]{13}$",
|
|
301
|
+
"minLength": 13,
|
|
302
|
+
"maxLength": 13
|
|
303
|
+
},
|
|
304
|
+
"attestationVersion": {
|
|
305
|
+
"type": "string",
|
|
306
|
+
"description": "Legacy SDK TEE attestation protocol version.",
|
|
307
|
+
"enum": [
|
|
308
|
+
"v3"
|
|
309
|
+
]
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
},
|
|
313
|
+
"signature": {
|
|
314
|
+
"type": "string",
|
|
315
|
+
"description": "EIP-191 65-byte secp256k1 signature, encoded as 0x-prefixed hex.",
|
|
316
|
+
"pattern": "^0x[0-9a-fA-F]{130}$",
|
|
317
|
+
"minLength": 132,
|
|
318
|
+
"maxLength": 132
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
},
|
|
323
|
+
"required": [
|
|
324
|
+
"params",
|
|
325
|
+
"query",
|
|
326
|
+
"body"
|
|
327
|
+
],
|
|
328
|
+
"additionalProperties": false
|
|
329
|
+
}),
|
|
330
|
+
},
|
|
223
331
|
"CancelPublicListingRequest": {
|
|
224
332
|
description: "Cancel a pending public listing review request\n\nCancels a pending public listing request by moving the version from `in_review` back to `draft`. Only org members can cancel their own review requests. This allows users to withdraw a request before admin review if they change their mind.",
|
|
225
333
|
inputSchema: toZod({
|
|
@@ -293,26 +401,65 @@ export const MCP_TOOLS = {
|
|
|
293
401
|
"properties": {
|
|
294
402
|
"callbackUrl": {
|
|
295
403
|
"type": "string",
|
|
296
|
-
"
|
|
404
|
+
"pattern": "^https?://",
|
|
405
|
+
"description": "Callback URL or template. Supported placeholders are `{{sessionId}}` and top-level scalar context keys.",
|
|
297
406
|
"maxLength": 2000
|
|
298
407
|
},
|
|
299
408
|
"events": {
|
|
300
409
|
"type": "array",
|
|
301
410
|
"minItems": 1,
|
|
302
|
-
"maxItems":
|
|
411
|
+
"maxItems": 50,
|
|
303
412
|
"items": {
|
|
304
413
|
"type": "string",
|
|
305
|
-
"description": "
|
|
414
|
+
"description": "Canonical Builder lifecycle event. Names use lower snake case; metadata uses camel case. Provider events include providerId, resolvedVersion, and ordinal. Request events also include requestId. New values are additive, so clients must tolerate unknown response values. For field requirements and funnel semantics, see docs/verification-analytics-events.md.",
|
|
306
415
|
"enum": [
|
|
416
|
+
"billing_required",
|
|
307
417
|
"session_pending",
|
|
308
418
|
"verification_client_opened",
|
|
309
419
|
"verification_client_ready",
|
|
420
|
+
"verification_client_warning",
|
|
421
|
+
"verification_client_visibility_shown",
|
|
422
|
+
"verification_client_visibility_hidden",
|
|
423
|
+
"verification_diagnostics_mode_changed",
|
|
424
|
+
"verification_cancelled",
|
|
425
|
+
"consent_viewed",
|
|
426
|
+
"consent_scrolled",
|
|
427
|
+
"consent_agreed",
|
|
428
|
+
"verification_browser_started",
|
|
429
|
+
"verification_browser_ready",
|
|
430
|
+
"verification_browser_reconnect_started",
|
|
431
|
+
"verification_browser_reconnected",
|
|
432
|
+
"verification_browser_failed",
|
|
310
433
|
"verification_provider_started",
|
|
434
|
+
"provider_config",
|
|
435
|
+
"provider_script_log",
|
|
436
|
+
"network_request_observed",
|
|
437
|
+
"verification_page_ready",
|
|
438
|
+
"verification_request_interceptor_ready",
|
|
439
|
+
"verification_provider_completed",
|
|
440
|
+
"auth_required",
|
|
441
|
+
"auth_submitted",
|
|
442
|
+
"auth_challenge_remains",
|
|
443
|
+
"auth_rejected",
|
|
444
|
+
"auth_submission_failed",
|
|
445
|
+
"auth_challenge_completed",
|
|
446
|
+
"auth_gate_not_detected",
|
|
447
|
+
"authenticated",
|
|
448
|
+
"user_interaction_started",
|
|
449
|
+
"user_input_started",
|
|
450
|
+
"user_interaction_summary",
|
|
451
|
+
"verification_inactivity_detected",
|
|
311
452
|
"request_matched",
|
|
453
|
+
"request_match_failed",
|
|
454
|
+
"request_claim_parameters_captured",
|
|
312
455
|
"request_claim_created",
|
|
456
|
+
"request_claim_retrying",
|
|
313
457
|
"request_claim_completed",
|
|
314
458
|
"request_claim_rejected",
|
|
315
459
|
"request_claim_failed",
|
|
460
|
+
"verification_proofs_completed",
|
|
461
|
+
"verification_result_submitting",
|
|
462
|
+
"verification_result_submission_failed",
|
|
316
463
|
"verification_success",
|
|
317
464
|
"verification_rejected",
|
|
318
465
|
"verification_error",
|
|
@@ -369,7 +516,7 @@ export const MCP_TOOLS = {
|
|
|
369
516
|
}),
|
|
370
517
|
},
|
|
371
518
|
"CreateOrgCallbackSubscription": {
|
|
372
|
-
description: "Register a callback subscription on an organization\n\nRegisters
|
|
519
|
+
description: "Register a callback subscription on an organization\n\nRegisters an organization callback subscription. Pass the callback URL and events to deliver. Builder encrypts signed results when the organization enables result encryption.",
|
|
373
520
|
inputSchema: toZod({
|
|
374
521
|
"type": "object",
|
|
375
522
|
"properties": {
|
|
@@ -401,26 +548,65 @@ export const MCP_TOOLS = {
|
|
|
401
548
|
"properties": {
|
|
402
549
|
"callbackUrl": {
|
|
403
550
|
"type": "string",
|
|
404
|
-
"
|
|
551
|
+
"pattern": "^https?://",
|
|
552
|
+
"description": "Callback URL or template. Supported placeholders are `{{sessionId}}` and top-level scalar context keys.",
|
|
405
553
|
"maxLength": 2000
|
|
406
554
|
},
|
|
407
555
|
"events": {
|
|
408
556
|
"type": "array",
|
|
409
557
|
"minItems": 1,
|
|
410
|
-
"maxItems":
|
|
558
|
+
"maxItems": 50,
|
|
411
559
|
"items": {
|
|
412
560
|
"type": "string",
|
|
413
|
-
"description": "
|
|
561
|
+
"description": "Canonical Builder lifecycle event. Names use lower snake case; metadata uses camel case. Provider events include providerId, resolvedVersion, and ordinal. Request events also include requestId. New values are additive, so clients must tolerate unknown response values. For field requirements and funnel semantics, see docs/verification-analytics-events.md.",
|
|
414
562
|
"enum": [
|
|
563
|
+
"billing_required",
|
|
415
564
|
"session_pending",
|
|
416
565
|
"verification_client_opened",
|
|
417
566
|
"verification_client_ready",
|
|
567
|
+
"verification_client_warning",
|
|
568
|
+
"verification_client_visibility_shown",
|
|
569
|
+
"verification_client_visibility_hidden",
|
|
570
|
+
"verification_diagnostics_mode_changed",
|
|
571
|
+
"verification_cancelled",
|
|
572
|
+
"consent_viewed",
|
|
573
|
+
"consent_scrolled",
|
|
574
|
+
"consent_agreed",
|
|
575
|
+
"verification_browser_started",
|
|
576
|
+
"verification_browser_ready",
|
|
577
|
+
"verification_browser_reconnect_started",
|
|
578
|
+
"verification_browser_reconnected",
|
|
579
|
+
"verification_browser_failed",
|
|
418
580
|
"verification_provider_started",
|
|
581
|
+
"provider_config",
|
|
582
|
+
"provider_script_log",
|
|
583
|
+
"network_request_observed",
|
|
584
|
+
"verification_page_ready",
|
|
585
|
+
"verification_request_interceptor_ready",
|
|
586
|
+
"verification_provider_completed",
|
|
587
|
+
"auth_required",
|
|
588
|
+
"auth_submitted",
|
|
589
|
+
"auth_challenge_remains",
|
|
590
|
+
"auth_rejected",
|
|
591
|
+
"auth_submission_failed",
|
|
592
|
+
"auth_challenge_completed",
|
|
593
|
+
"auth_gate_not_detected",
|
|
594
|
+
"authenticated",
|
|
595
|
+
"user_interaction_started",
|
|
596
|
+
"user_input_started",
|
|
597
|
+
"user_interaction_summary",
|
|
598
|
+
"verification_inactivity_detected",
|
|
419
599
|
"request_matched",
|
|
600
|
+
"request_match_failed",
|
|
601
|
+
"request_claim_parameters_captured",
|
|
420
602
|
"request_claim_created",
|
|
603
|
+
"request_claim_retrying",
|
|
421
604
|
"request_claim_completed",
|
|
422
605
|
"request_claim_rejected",
|
|
423
606
|
"request_claim_failed",
|
|
607
|
+
"verification_proofs_completed",
|
|
608
|
+
"verification_result_submitting",
|
|
609
|
+
"verification_result_submission_failed",
|
|
424
610
|
"verification_success",
|
|
425
611
|
"verification_rejected",
|
|
426
612
|
"verification_error",
|
|
@@ -567,7 +753,7 @@ export const MCP_TOOLS = {
|
|
|
567
753
|
}),
|
|
568
754
|
},
|
|
569
755
|
"CreateProviderVersion": {
|
|
570
|
-
description: "Create a new provider version\n\nCreates a new version of the provider. The starting branch\ndepends on the provider's `visibility` and the caller's role:\n\n- `PRIVATE` provider (any caller): the live channel (no review).\n\n- `PUBLIC` provider, admin caller (Reclaim staff): the live channel\n (no review).\n\n- `PUBLIC` provider, non-admin caller: `draft` (or `ai` if\n authored by the AI assistant). Must pass review (see\n `POST /providers/{id}/versions/{version}/review`) before\n reaching the live channel.\n",
|
|
756
|
+
description: "Create a new provider version\n\nCreates a new immutable semantic version of the provider. Provider\nauthoring clients must create another version for every content change;\nthey must not edit a previously created version in place. Use a patch\nbump by default, or use a major/minor bump or exact higher version when\nthe user directs it. The starting branch\ndepends on the provider's `visibility` and the caller's role:\n\n- `PRIVATE` provider (any caller): the live channel (no review).\n\n- `PUBLIC` provider, admin caller (Reclaim staff): the live channel\n (no review).\n\n- `PUBLIC` provider, non-admin caller: `draft` (or `ai` if\n authored by the AI assistant). Must pass review (see\n `POST /providers/{id}/versions/{version}/review`) before\n reaching the live channel.\n",
|
|
571
757
|
inputSchema: toZod({
|
|
572
758
|
"type": "object",
|
|
573
759
|
"properties": {
|
|
@@ -689,6 +875,15 @@ export const MCP_TOOLS = {
|
|
|
689
875
|
"description": "Template used to match or capture an outgoing request body. Template can use regex templates as placeholders. For example, to match an outgoing request body that contains a request ID, you can use the following template: `(?<requestId>.*)`.",
|
|
690
876
|
"maxLength": 100000
|
|
691
877
|
},
|
|
878
|
+
"headers": {
|
|
879
|
+
"type": "object",
|
|
880
|
+
"additionalProperties": {
|
|
881
|
+
"type": "string",
|
|
882
|
+
"maxLength": 16000
|
|
883
|
+
},
|
|
884
|
+
"maxProperties": 100,
|
|
885
|
+
"description": "Static HTTP request headers passed to the attestor. Header values may use the same `{{param}}` and `{{context.key}}` templates as the URL and request body. Cookies captured by the Verification Client are attached separately and don't need to be declared."
|
|
886
|
+
},
|
|
692
887
|
"credentials": {
|
|
693
888
|
"type": "string",
|
|
694
889
|
"description": "Mirrors the Fetch API `RequestCredentials` value used when issuing the request — controls whether cookies and auth headers are sent.",
|
|
@@ -772,7 +967,7 @@ export const MCP_TOOLS = {
|
|
|
772
967
|
},
|
|
773
968
|
"responseRedactions": {
|
|
774
969
|
"type": "array",
|
|
775
|
-
"description": "Portions to select/reveal from the response, applied in order (xPath => jsonPath => regex). Done client-side; only the selected portions (plus the first response line) are sent to the attestor. An independent ordered list —
|
|
970
|
+
"description": "Portions to select/reveal from the response, applied in order (xPath => jsonPath => regex). Done client-side; only the selected portions (plus the first response line) are sent to the attestor. An independent ordered list — not generally paired 1:1 with `responseMatches`. For legacy proof-hash optional-subset compatibility only, the redaction at the same index is treated as the pair for an optional `ResponseMatch`; this does not pair all redactions with matches. Mirrors attestor-core `responseRedactions`.",
|
|
776
971
|
"items": {
|
|
777
972
|
"type": "object",
|
|
778
973
|
"additionalProperties": false,
|
|
@@ -840,6 +1035,15 @@ export const MCP_TOOLS = {
|
|
|
840
1035
|
"description": "Template used to match or capture an outgoing request body. Template can use regex templates as placeholders. For example, to match an outgoing request body that contains a request ID, you can use the following template: `(?<requestId>.*)`.",
|
|
841
1036
|
"maxLength": 100000
|
|
842
1037
|
},
|
|
1038
|
+
"headers": {
|
|
1039
|
+
"type": "object",
|
|
1040
|
+
"additionalProperties": {
|
|
1041
|
+
"type": "string",
|
|
1042
|
+
"maxLength": 16000
|
|
1043
|
+
},
|
|
1044
|
+
"maxProperties": 100,
|
|
1045
|
+
"description": "Static HTTP request headers passed to the attestor. Values may contain `{{param}}` and `{{context.key}}` templates."
|
|
1046
|
+
},
|
|
843
1047
|
"credentials": {
|
|
844
1048
|
"type": "string",
|
|
845
1049
|
"description": "Mirrors the Fetch API `RequestCredentials` value used when issuing the request — controls whether cookies and auth headers are sent.",
|
|
@@ -923,7 +1127,7 @@ export const MCP_TOOLS = {
|
|
|
923
1127
|
},
|
|
924
1128
|
"responseRedactions": {
|
|
925
1129
|
"type": "array",
|
|
926
|
-
"description": "Portions to select/reveal from the response, applied in order (xPath => jsonPath => regex). Done client-side; only the selected portions (plus the first response line) are sent to the attestor. An independent ordered list —
|
|
1130
|
+
"description": "Portions to select/reveal from the response, applied in order (xPath => jsonPath => regex). Done client-side; only the selected portions (plus the first response line) are sent to the attestor. An independent ordered list — not generally paired 1:1 with `responseMatches`. For legacy proof-hash optional-subset compatibility only, the redaction at the same index is treated as the pair for an optional `ResponseMatch`; this does not pair all redactions with matches. Mirrors attestor-core `responseRedactions`.",
|
|
927
1131
|
"items": {
|
|
928
1132
|
"type": "object",
|
|
929
1133
|
"additionalProperties": false,
|
|
@@ -1087,7 +1291,7 @@ export const MCP_TOOLS = {
|
|
|
1087
1291
|
},
|
|
1088
1292
|
"requiredContext": {
|
|
1089
1293
|
"type": "object",
|
|
1090
|
-
"description": "Optional JSON Schema describing the `context` a Consumer must supply when creating a verification session for this provider version. Only needed when the recipe expects Consumer-supplied values: those are referenced as `{{context.<key>}}` in recipe requests. Bare `{{parameterName}}` placeholders are provider parameters
|
|
1294
|
+
"description": "Optional JSON Schema describing the `context` a Consumer must supply when creating a verification session for this provider version. Only needed when the recipe expects Consumer-supplied values: those are referenced as `{{context.<key>}}` in recipe requests. Bare `{{parameterName}}` placeholders are normally provider parameters extracted from claimant traffic. For old DevTools recipes, Builder-mode Verification Clients seed a missing bare `parameterName` from a same-named scalar session context field when the recipe doesn't use `{{context.parameterName}}`; an explicit parameter always wins. New recipes should use the explicit `{{context.<key>}}` form. Bare parameters need no declaration here. Builder-owned `reclaimSessionId` and `attestationNonce` remain context-only. The Builder validates `CreateVerificationSessionRequest.context` against this schema and rejects the request (400) on mismatch. Extra context fields are always allowed regardless of the schema (a root-level `additionalProperties: false` is ignored). Empty/absent accepts any context.",
|
|
1091
1295
|
"additionalProperties": true
|
|
1092
1296
|
},
|
|
1093
1297
|
"notes": {
|
|
@@ -1107,7 +1311,7 @@ export const MCP_TOOLS = {
|
|
|
1107
1311
|
}),
|
|
1108
1312
|
},
|
|
1109
1313
|
"CreateVerificationSession": {
|
|
1110
|
-
description: "Create a verification session\n\nCreates
|
|
1314
|
+
description: "Create a verification session\n\nCreates an end-user verification session. Requires an OrgToken and a callback subscription; pass providers, context, and an optional registered verificationClientUrl. Billing refusal returns 402 or 429 with event billing_required and a terminal sessionId.",
|
|
1111
1315
|
inputSchema: toZod({
|
|
1112
1316
|
"type": "object",
|
|
1113
1317
|
"properties": {
|
|
@@ -1146,7 +1350,7 @@ export const MCP_TOOLS = {
|
|
|
1146
1350
|
},
|
|
1147
1351
|
"version": {
|
|
1148
1352
|
"type": "string",
|
|
1149
|
-
"description": "
|
|
1353
|
+
"description": "Empty selects the latest active trunk version. An exact semantic version pins that version. Any other valid npm semantic-version range selects the highest active matching version.",
|
|
1150
1354
|
"maxLength": 64
|
|
1151
1355
|
}
|
|
1152
1356
|
}
|
|
@@ -1155,17 +1359,28 @@ export const MCP_TOOLS = {
|
|
|
1155
1359
|
"context": {
|
|
1156
1360
|
"type": "object",
|
|
1157
1361
|
"additionalProperties": true,
|
|
1158
|
-
"description": "Consumer context, shared by all providers. Validated against EACH resolved provider version's `requiredContext` JSON Schema (a 400 is returned on mismatch); extra fields are always allowed. Recipe requests reference these values as `{{context.<key>}}`. Echoed back (plus `reclaimSessionId`) in the result."
|
|
1362
|
+
"description": "Consumer context, shared by all providers. Validated against EACH resolved provider version's `requiredContext` JSON Schema (a 400 is returned on mismatch); extra fields are always allowed. Recipe requests reference these values as `{{context.<key>}}`. To support old DevTools recipes, Builder-mode Verification Clients also use a same-named scalar context value to seed a missing bare `{{key}}` when the recipe doesn't use `{{context.key}}`; an explicit parameter takes precedence. Echoed back (plus `reclaimSessionId`) in the result. Builder-owned `reclaimSessionId` and `attestationNonce` remain context-only."
|
|
1159
1363
|
},
|
|
1160
1364
|
"verificationClientUrl": {
|
|
1161
1365
|
"type": "string",
|
|
1162
|
-
"description": "Optional. Must exactly equal the base URL of a registered verification client (see the `verification_clients` registry / `/admin/verification-clients`). Omit to use the default (`builder`) client. The Builder
|
|
1366
|
+
"description": "Optional. Must exactly equal the base URL of a registered verification client (see the `verification_clients` registry / `/admin/verification-clients`). Omit to use the default (`builder`) client. The Builder resolves and stores the registered client UUID, then returns the ready-to-share `verificationUrl` with the session id and `api=2`. A URL that is not a registered client's base is rejected with 400. Consumers append any client-owned redirect parameters after receiving the URL; Builder does not manage them.",
|
|
1163
1367
|
"maxLength": 2000,
|
|
1164
1368
|
"pattern": "^https?://"
|
|
1165
1369
|
},
|
|
1370
|
+
"themeId": {
|
|
1371
|
+
"type": "string",
|
|
1372
|
+
"format": "uuid"
|
|
1373
|
+
},
|
|
1374
|
+
"preferredLocale": {
|
|
1375
|
+
"type": "string",
|
|
1376
|
+
"description": "Optional locale override for this verification session. It takes precedence over the organization theme's preferred locale.",
|
|
1377
|
+
"minLength": 2,
|
|
1378
|
+
"maxLength": 64,
|
|
1379
|
+
"pattern": "^[A-Za-z]{2,8}(?:[-_][A-Za-z0-9]{1,8})*$"
|
|
1380
|
+
},
|
|
1166
1381
|
"preferAiAgent": {
|
|
1167
1382
|
"type": "boolean",
|
|
1168
|
-
"description": "
|
|
1383
|
+
"description": "Legacy-only preference. Builder mode runs the structured recipe and does not enable AI or manual verification. Omit this field for Builder-mode sessions; dual-mode clients may continue to interpret it only on their legacy path."
|
|
1169
1384
|
}
|
|
1170
1385
|
}
|
|
1171
1386
|
}
|
|
@@ -1386,55 +1601,6 @@ export const MCP_TOOLS = {
|
|
|
1386
1601
|
"additionalProperties": false
|
|
1387
1602
|
}),
|
|
1388
1603
|
},
|
|
1389
|
-
"DeleteProviderVersion": {
|
|
1390
|
-
description: "Delete a provider version\n\nSoft-archives a version on the `draft`, `ai`, or `rejected` branch — sets `status` to `ARCHIVED` so history is preserved. `fixed`, trunk (live), and `in_review` versions cannot be archived this way; archive the parent provider instead. Supports optimistic concurrency via `If-Match`.",
|
|
1391
|
-
inputSchema: toZod({
|
|
1392
|
-
"type": "object",
|
|
1393
|
-
"properties": {
|
|
1394
|
-
"params": {
|
|
1395
|
-
"type": "object",
|
|
1396
|
-
"properties": {
|
|
1397
|
-
"providerId": {
|
|
1398
|
-
"type": "string",
|
|
1399
|
-
"format": "uuid"
|
|
1400
|
-
},
|
|
1401
|
-
"version": {
|
|
1402
|
-
"type": "string",
|
|
1403
|
-
"pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+(?:-[a-zA-Z0-9_-]+(?:\\.[0-9]+)?)?$",
|
|
1404
|
-
"maxLength": 32
|
|
1405
|
-
}
|
|
1406
|
-
},
|
|
1407
|
-
"required": [
|
|
1408
|
-
"providerId",
|
|
1409
|
-
"version"
|
|
1410
|
-
],
|
|
1411
|
-
"additionalProperties": false
|
|
1412
|
-
},
|
|
1413
|
-
"query": {
|
|
1414
|
-
"type": "object",
|
|
1415
|
-
"properties": {}
|
|
1416
|
-
},
|
|
1417
|
-
"headers": {
|
|
1418
|
-
"type": "object",
|
|
1419
|
-
"properties": {
|
|
1420
|
-
"If-Match": {
|
|
1421
|
-
"type": "string",
|
|
1422
|
-
"maxLength": 128,
|
|
1423
|
-
"description": "Opaque `ETag` from a prior GET on the same resource. When\nsupplied, the server applies optimistic concurrency: the\nmutation fails with `412 Precondition Failed` if the\nresource has been modified since. Omit for last-write-wins.\n"
|
|
1424
|
-
}
|
|
1425
|
-
}
|
|
1426
|
-
},
|
|
1427
|
-
"body": {
|
|
1428
|
-
"type": "object"
|
|
1429
|
-
}
|
|
1430
|
-
},
|
|
1431
|
-
"required": [
|
|
1432
|
-
"params",
|
|
1433
|
-
"query"
|
|
1434
|
-
],
|
|
1435
|
-
"additionalProperties": false
|
|
1436
|
-
}),
|
|
1437
|
-
},
|
|
1438
1604
|
"DiscoverDataPoints": {
|
|
1439
1605
|
description: "List the verifiable data points on a website\n\nThe data points existing providers can prove on a website — the menu to pick from before `GET /discover/resolve`. Optionally filter by `q`.",
|
|
1440
1606
|
inputSchema: toZod({
|
|
@@ -1778,8 +1944,81 @@ export const MCP_TOOLS = {
|
|
|
1778
1944
|
"additionalProperties": false
|
|
1779
1945
|
}),
|
|
1780
1946
|
},
|
|
1947
|
+
"GetVerificationFunnel": {
|
|
1948
|
+
description: "Get the verification funnel\n\nCalculates an organization's lifecycle funnel for sessions created between required createdAfter (inclusive) and createdBefore (exclusive). Use providerIds/providerMatch and mode (SESSION or PROVIDER) to scope counts. Missing optional events can reflect telemetry loss.",
|
|
1949
|
+
inputSchema: toZod({
|
|
1950
|
+
"type": "object",
|
|
1951
|
+
"properties": {
|
|
1952
|
+
"params": {
|
|
1953
|
+
"type": "object",
|
|
1954
|
+
"properties": {
|
|
1955
|
+
"orgId": {
|
|
1956
|
+
"type": "string",
|
|
1957
|
+
"format": "uuid"
|
|
1958
|
+
}
|
|
1959
|
+
},
|
|
1960
|
+
"required": [
|
|
1961
|
+
"orgId"
|
|
1962
|
+
],
|
|
1963
|
+
"additionalProperties": false
|
|
1964
|
+
},
|
|
1965
|
+
"query": {
|
|
1966
|
+
"type": "object",
|
|
1967
|
+
"properties": {
|
|
1968
|
+
"providerIds": {
|
|
1969
|
+
"type": "array",
|
|
1970
|
+
"minItems": 1,
|
|
1971
|
+
"maxItems": 50,
|
|
1972
|
+
"uniqueItems": true,
|
|
1973
|
+
"items": {
|
|
1974
|
+
"type": "string",
|
|
1975
|
+
"format": "uuid"
|
|
1976
|
+
}
|
|
1977
|
+
},
|
|
1978
|
+
"providerMatch": {
|
|
1979
|
+
"type": "string",
|
|
1980
|
+
"enum": [
|
|
1981
|
+
"ANY",
|
|
1982
|
+
"ALL"
|
|
1983
|
+
],
|
|
1984
|
+
"default": "ANY"
|
|
1985
|
+
},
|
|
1986
|
+
"mode": {
|
|
1987
|
+
"type": "string",
|
|
1988
|
+
"enum": [
|
|
1989
|
+
"SESSION",
|
|
1990
|
+
"PROVIDER"
|
|
1991
|
+
],
|
|
1992
|
+
"default": "SESSION"
|
|
1993
|
+
},
|
|
1994
|
+
"createdAfter": {
|
|
1995
|
+
"type": "string",
|
|
1996
|
+
"format": "date-time"
|
|
1997
|
+
},
|
|
1998
|
+
"createdBefore": {
|
|
1999
|
+
"type": "string",
|
|
2000
|
+
"format": "date-time"
|
|
2001
|
+
}
|
|
2002
|
+
},
|
|
2003
|
+
"required": [
|
|
2004
|
+
"createdAfter",
|
|
2005
|
+
"createdBefore"
|
|
2006
|
+
],
|
|
2007
|
+
"additionalProperties": false
|
|
2008
|
+
},
|
|
2009
|
+
"body": {
|
|
2010
|
+
"type": "object"
|
|
2011
|
+
}
|
|
2012
|
+
},
|
|
2013
|
+
"required": [
|
|
2014
|
+
"params",
|
|
2015
|
+
"query"
|
|
2016
|
+
],
|
|
2017
|
+
"additionalProperties": false
|
|
2018
|
+
}),
|
|
2019
|
+
},
|
|
1781
2020
|
"GetVerificationSession": {
|
|
1782
|
-
description: "Get a verification session\n\
|
|
2021
|
+
description: "Get a verification session\n\nGets one verification session. Use it to inspect status, resolved providers, context, Verification Client identity, and expiry. Present the owning organization token or the session's x-reclaim-vc-id.",
|
|
1783
2022
|
inputSchema: toZod({
|
|
1784
2023
|
"type": "object",
|
|
1785
2024
|
"properties": {
|
|
@@ -1801,6 +2040,15 @@ export const MCP_TOOLS = {
|
|
|
1801
2040
|
"type": "object",
|
|
1802
2041
|
"properties": {}
|
|
1803
2042
|
},
|
|
2043
|
+
"headers": {
|
|
2044
|
+
"type": "object",
|
|
2045
|
+
"properties": {
|
|
2046
|
+
"x-reclaim-vc-id": {
|
|
2047
|
+
"type": "string",
|
|
2048
|
+
"description": "UUID of the registered Verification Client selected when the session was created. The Builder binds it to the session's immutable verificationClientId. This header identifies the client; it is not a general bearer credential. Client-reported metadata remains untrusted, and Consumers must verify every signed result with verifyResultFull."
|
|
2049
|
+
}
|
|
2050
|
+
}
|
|
2051
|
+
},
|
|
1804
2052
|
"body": {
|
|
1805
2053
|
"type": "object"
|
|
1806
2054
|
}
|
|
@@ -1813,7 +2061,7 @@ export const MCP_TOOLS = {
|
|
|
1813
2061
|
}),
|
|
1814
2062
|
},
|
|
1815
2063
|
"ImportDevtoolsProvider": {
|
|
1816
|
-
description: "Import a provider from devtools\n\
|
|
2064
|
+
description: "Import a provider from devtools\n\nImports a public legacy provider into Builder by UUID. Requires human BearerAuth and a target orgId; preserves the provider UUID and is idempotent for seeded providers. Returns 409 if another Builder org owns the UUID.",
|
|
1817
2065
|
inputSchema: toZod({
|
|
1818
2066
|
"type": "object",
|
|
1819
2067
|
"properties": {
|
|
@@ -2059,12 +2307,13 @@ export const MCP_TOOLS = {
|
|
|
2059
2307
|
},
|
|
2060
2308
|
"status": {
|
|
2061
2309
|
"type": "string",
|
|
2062
|
-
"description": "Status of a verification session, derived from its events. New values\nmay be added over time; clients MUST tolerate unknown values in\nresponses.\n\n- `pending`: Created, not yet finished; completable until `expiresAt`.\n\n- `success`: Terminal — `verification_success` recorded.\n\n- `rejected`: Terminal — `verification_rejected` recorded.\n\n- `error`: Terminal — `verification_error` recorded.\n\n- `expired`: `expiresAt` passed before a terminal event; the end-user\n can no longer complete it.",
|
|
2310
|
+
"description": "Status of a verification session, derived from its events. New values\nmay be added over time; clients MUST tolerate unknown values in\nresponses.\n\n- `pending`: Created, not yet finished; completable until `expiresAt`.\n\n- `success`: Terminal — `verification_success` recorded.\n\n- `rejected`: Terminal — `verification_rejected` recorded.\n\n- `error`: Terminal — `verification_error` recorded.\n\n- `cancelled`: Terminal — `verification_cancelled` recorded.\n\n- `expired`: `expiresAt` passed before a terminal event; the end-user\n can no longer complete it.",
|
|
2063
2311
|
"enum": [
|
|
2064
2312
|
"pending",
|
|
2065
2313
|
"success",
|
|
2066
2314
|
"rejected",
|
|
2067
2315
|
"error",
|
|
2316
|
+
"cancelled",
|
|
2068
2317
|
"expired"
|
|
2069
2318
|
]
|
|
2070
2319
|
},
|
|
@@ -2140,7 +2389,7 @@ export const MCP_TOOLS = {
|
|
|
2140
2389
|
}),
|
|
2141
2390
|
},
|
|
2142
2391
|
"ListVerificationDeliveries": {
|
|
2143
|
-
description: "Get the callback delivery status for a session\n\
|
|
2392
|
+
description: "Get the callback delivery status for a session\n\nLists callback delivery attempts for a session. Requires an OrgToken or the session-bound x-reclaim-vc-id. Use after terminal status to diagnose pending, failed, or dead-lettered callbacks; retry failures with retry_verification_callback.",
|
|
2144
2393
|
inputSchema: toZod({
|
|
2145
2394
|
"type": "object",
|
|
2146
2395
|
"properties": {
|
|
@@ -2162,6 +2411,15 @@ export const MCP_TOOLS = {
|
|
|
2162
2411
|
"type": "object",
|
|
2163
2412
|
"properties": {}
|
|
2164
2413
|
},
|
|
2414
|
+
"headers": {
|
|
2415
|
+
"type": "object",
|
|
2416
|
+
"properties": {
|
|
2417
|
+
"x-reclaim-vc-id": {
|
|
2418
|
+
"type": "string",
|
|
2419
|
+
"description": "UUID of the registered Verification Client selected when the session was created. The Builder binds it to the session's immutable verificationClientId. This header identifies the client; it is not a general bearer credential. Client-reported metadata remains untrusted, and Consumers must verify every signed result with verifyResultFull."
|
|
2420
|
+
}
|
|
2421
|
+
}
|
|
2422
|
+
},
|
|
2165
2423
|
"body": {
|
|
2166
2424
|
"type": "object"
|
|
2167
2425
|
}
|
|
@@ -2174,7 +2432,7 @@ export const MCP_TOOLS = {
|
|
|
2174
2432
|
}),
|
|
2175
2433
|
},
|
|
2176
2434
|
"ListVerificationEvents": {
|
|
2177
|
-
description: "Get the event log for a session\n\
|
|
2435
|
+
description: "Get the event log for a session\n\nLists append-only lifecycle events for a session. Requires an OrgToken or the session-bound x-reclaim-vc-id. Use after get_verification_session to find the first missing or failed milestone; inspect eventData for failure details.",
|
|
2178
2436
|
inputSchema: toZod({
|
|
2179
2437
|
"type": "object",
|
|
2180
2438
|
"properties": {
|
|
@@ -2196,6 +2454,15 @@ export const MCP_TOOLS = {
|
|
|
2196
2454
|
"type": "object",
|
|
2197
2455
|
"properties": {}
|
|
2198
2456
|
},
|
|
2457
|
+
"headers": {
|
|
2458
|
+
"type": "object",
|
|
2459
|
+
"properties": {
|
|
2460
|
+
"x-reclaim-vc-id": {
|
|
2461
|
+
"type": "string",
|
|
2462
|
+
"description": "UUID of the registered Verification Client selected when the session was created. The Builder binds it to the session's immutable verificationClientId. This header identifies the client; it is not a general bearer credential. Client-reported metadata remains untrusted, and Consumers must verify every signed result with verifyResultFull."
|
|
2463
|
+
}
|
|
2464
|
+
}
|
|
2465
|
+
},
|
|
2199
2466
|
"body": {
|
|
2200
2467
|
"type": "object"
|
|
2201
2468
|
}
|
|
@@ -2864,513 +3131,4 @@ export const MCP_TOOLS = {
|
|
|
2864
3131
|
"additionalProperties": false
|
|
2865
3132
|
}),
|
|
2866
3133
|
},
|
|
2867
|
-
"UpdateProviderVersion": {
|
|
2868
|
-
description: "Update a provider version\n\nMutable only while the version is on the `draft` or `rejected` branch. Versions on `fixed`, `in_review`, or the live channel reject all writes here. Caller must be a member of the provider's owning organization. Supports optimistic concurrency via `If-Match`.",
|
|
2869
|
-
inputSchema: toZod({
|
|
2870
|
-
"type": "object",
|
|
2871
|
-
"properties": {
|
|
2872
|
-
"params": {
|
|
2873
|
-
"type": "object",
|
|
2874
|
-
"properties": {
|
|
2875
|
-
"providerId": {
|
|
2876
|
-
"type": "string",
|
|
2877
|
-
"format": "uuid"
|
|
2878
|
-
},
|
|
2879
|
-
"version": {
|
|
2880
|
-
"type": "string",
|
|
2881
|
-
"pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+(?:-[a-zA-Z0-9_-]+(?:\\.[0-9]+)?)?$",
|
|
2882
|
-
"maxLength": 32
|
|
2883
|
-
}
|
|
2884
|
-
},
|
|
2885
|
-
"required": [
|
|
2886
|
-
"providerId",
|
|
2887
|
-
"version"
|
|
2888
|
-
],
|
|
2889
|
-
"additionalProperties": false
|
|
2890
|
-
},
|
|
2891
|
-
"query": {
|
|
2892
|
-
"type": "object",
|
|
2893
|
-
"properties": {}
|
|
2894
|
-
},
|
|
2895
|
-
"headers": {
|
|
2896
|
-
"type": "object",
|
|
2897
|
-
"properties": {
|
|
2898
|
-
"If-Match": {
|
|
2899
|
-
"type": "string",
|
|
2900
|
-
"maxLength": 128,
|
|
2901
|
-
"description": "Opaque `ETag` from a prior GET on the same resource. When\nsupplied, the server applies optimistic concurrency: the\nmutation fails with `412 Precondition Failed` if the\nresource has been modified since. Omit for last-write-wins.\n"
|
|
2902
|
-
}
|
|
2903
|
-
}
|
|
2904
|
-
},
|
|
2905
|
-
"body": {
|
|
2906
|
-
"type": "object",
|
|
2907
|
-
"additionalProperties": false,
|
|
2908
|
-
"description": "Partial update of a provider version. Mutable only while the version is on the `draft` or `rejected` branch; versions on `fixed`, `in_review`, or the live channel reject all writes here. The semver does not change on update — `build_number` increments instead, giving callers a monotonic revision counter without touching the (major, minor, patch) PK. `verificationType` and `prompt` may be updated; omit either to carry the prior build's value forward.",
|
|
2909
|
-
"properties": {
|
|
2910
|
-
"initialUrl": {
|
|
2911
|
-
"type": "string",
|
|
2912
|
-
"format": "uri"
|
|
2913
|
-
},
|
|
2914
|
-
"verificationType": {
|
|
2915
|
-
"type": "string",
|
|
2916
|
-
"description": "How a provider version verifies a claim. `structured` uses the explicit match rules on this version (the `matches` / `allowedJsMatches` and related settings). `llm` defers the verification decision to a language model and requires `prompt` to be set.",
|
|
2917
|
-
"enum": [
|
|
2918
|
-
"llm",
|
|
2919
|
-
"structured"
|
|
2920
|
-
]
|
|
2921
|
-
},
|
|
2922
|
-
"prompt": {
|
|
2923
|
-
"type": "string",
|
|
2924
|
-
"description": "Extraction prompt, used when `verificationType` is `llm`. Gated by the prompt guard before it is stored (docs/prompt-guard.md).",
|
|
2925
|
-
"minLength": 0,
|
|
2926
|
-
"maxLength": 4000
|
|
2927
|
-
},
|
|
2928
|
-
"requests": {
|
|
2929
|
-
"type": "array",
|
|
2930
|
-
"minItems": 0,
|
|
2931
|
-
"items": {
|
|
2932
|
-
"type": "object",
|
|
2933
|
-
"additionalProperties": false,
|
|
2934
|
-
"description": "A matcher for one HTTP request in observed traffic, together with the response constraints that must hold for a Reclaim proof over that request to be valid. Used by interceptors, in-page injections, and LLM agents.",
|
|
2935
|
-
"required": [
|
|
2936
|
-
"url",
|
|
2937
|
-
"method"
|
|
2938
|
-
],
|
|
2939
|
-
"properties": {
|
|
2940
|
-
"url": {
|
|
2941
|
-
"type": "string",
|
|
2942
|
-
"description": "The URL or generic path of the HTTP request."
|
|
2943
|
-
},
|
|
2944
|
-
"method": {
|
|
2945
|
-
"type": "string",
|
|
2946
|
-
"description": "The HTTP method used for the request.",
|
|
2947
|
-
"enum": [
|
|
2948
|
-
"GET",
|
|
2949
|
-
"POST",
|
|
2950
|
-
"PUT",
|
|
2951
|
-
"PATCH",
|
|
2952
|
-
"DELETE"
|
|
2953
|
-
]
|
|
2954
|
-
},
|
|
2955
|
-
"requestBodyTemplate": {
|
|
2956
|
-
"type": "string",
|
|
2957
|
-
"description": "Template used to match or capture an outgoing request body. Template can use regex templates as placeholders. For example, to match an outgoing request body that contains a request ID, you can use the following template: `(?<requestId>.*)`.",
|
|
2958
|
-
"maxLength": 100000
|
|
2959
|
-
},
|
|
2960
|
-
"credentials": {
|
|
2961
|
-
"type": "string",
|
|
2962
|
-
"description": "Mirrors the Fetch API `RequestCredentials` value used when issuing the request — controls whether cookies and auth headers are sent.",
|
|
2963
|
-
"enum": [
|
|
2964
|
-
"omit",
|
|
2965
|
-
"same-origin",
|
|
2966
|
-
"include"
|
|
2967
|
-
]
|
|
2968
|
-
},
|
|
2969
|
-
"writeRedactionMode": {
|
|
2970
|
-
"type": "string",
|
|
2971
|
-
"description": "How the matched portion of the response should be redacted before the transcript is handed to the attestor.\n- `zk`: redact using a zero-knowledge proof over the original\n bytes.\n\n- `key-update`: redact by performing a TLS key update so the\n attestor never observes the matched bytes in cleartext.",
|
|
2972
|
-
"enum": [
|
|
2973
|
-
"zk",
|
|
2974
|
-
"key-update"
|
|
2975
|
-
]
|
|
2976
|
-
},
|
|
2977
|
-
"additionalClientOptions": {
|
|
2978
|
-
"type": "object",
|
|
2979
|
-
"additionalProperties": false,
|
|
2980
|
-
"description": "Apply TLS configuration when creating the tunnel to the attestor.",
|
|
2981
|
-
"properties": {
|
|
2982
|
-
"supportedProtocolVersions": {
|
|
2983
|
-
"type": "array",
|
|
2984
|
-
"description": "TLS protocol versions the client is allowed to negotiate.",
|
|
2985
|
-
"minItems": 1,
|
|
2986
|
-
"uniqueItems": true,
|
|
2987
|
-
"items": {
|
|
2988
|
-
"type": "string",
|
|
2989
|
-
"enum": [
|
|
2990
|
-
"TLS1_2",
|
|
2991
|
-
"TLS1_3"
|
|
2992
|
-
]
|
|
2993
|
-
}
|
|
2994
|
-
}
|
|
2995
|
-
}
|
|
2996
|
-
},
|
|
2997
|
-
"responseMatches": {
|
|
2998
|
-
"type": "array",
|
|
2999
|
-
"description": "Conditions the (redacted) response must satisfy for the proof to be valid. Each runs against the union of the portions revealed by `responseRedactions` (or the whole response when there are none). Mirrors attestor-core `responseMatches`.",
|
|
3000
|
-
"minItems": 1,
|
|
3001
|
-
"items": {
|
|
3002
|
-
"type": "object",
|
|
3003
|
-
"additionalProperties": false,
|
|
3004
|
-
"description": "Specifies a rule to match against a string in response to validate proof content.",
|
|
3005
|
-
"required": [
|
|
3006
|
-
"type",
|
|
3007
|
-
"value"
|
|
3008
|
-
],
|
|
3009
|
-
"properties": {
|
|
3010
|
-
"isOptional": {
|
|
3011
|
-
"type": "boolean",
|
|
3012
|
-
"description": "If true, the match condition is optional and won't fail if absent",
|
|
3013
|
-
"default": false
|
|
3014
|
-
},
|
|
3015
|
-
"description": {
|
|
3016
|
-
"type": "string",
|
|
3017
|
-
"description": "The description of the field that is extracted using this match rule",
|
|
3018
|
-
"minLength": 1,
|
|
3019
|
-
"maxLength": 1000
|
|
3020
|
-
},
|
|
3021
|
-
"order": {
|
|
3022
|
-
"type": "integer",
|
|
3023
|
-
"description": "The order in which the field should be displayed to user in UI",
|
|
3024
|
-
"minimum": 0
|
|
3025
|
-
},
|
|
3026
|
-
"type": {
|
|
3027
|
-
"type": "string",
|
|
3028
|
-
"description": "The matching mechanism to use value as against response. Typically regex or simple string containment",
|
|
3029
|
-
"enum": [
|
|
3030
|
-
"regex",
|
|
3031
|
-
"contains"
|
|
3032
|
-
]
|
|
3033
|
-
},
|
|
3034
|
-
"value": {
|
|
3035
|
-
"type": "string",
|
|
3036
|
-
"description": "The pattern or value to look for in the response. When `type` is 'contains', supports template variable declaration using `{{variable}}` syntax. When `type` is 'regex', can be used to extract variables using regex named groups."
|
|
3037
|
-
}
|
|
3038
|
-
}
|
|
3039
|
-
}
|
|
3040
|
-
},
|
|
3041
|
-
"responseRedactions": {
|
|
3042
|
-
"type": "array",
|
|
3043
|
-
"description": "Portions to select/reveal from the response, applied in order (xPath => jsonPath => regex). Done client-side; only the selected portions (plus the first response line) are sent to the attestor. An independent ordered list — NOT paired 1:1 with `responseMatches`. Mirrors attestor-core `responseRedactions`.",
|
|
3044
|
-
"items": {
|
|
3045
|
-
"type": "object",
|
|
3046
|
-
"additionalProperties": false,
|
|
3047
|
-
"description": "Which portions to select from a response. These are selected in order, xpath => jsonPath => regex * These redactions are done client side and only the selected portions are sent to the attestor. The attestor will only be able to see the selected portions alongside the first line of the HTTP response (that is, \"HTTP/1.1 200 OK\")",
|
|
3048
|
-
"properties": {
|
|
3049
|
-
"xPath": {
|
|
3050
|
-
"type": "string",
|
|
3051
|
-
"description": "expect an HTML response, and to contain a certain xpath for eg. \"/html/body/div.a1/div.a2/span.a5\""
|
|
3052
|
-
},
|
|
3053
|
-
"jsonPath": {
|
|
3054
|
-
"type": "string",
|
|
3055
|
-
"description": "expect a JSON response, retrieve the item at this path using dot notation, for example 'email.addresses.0'."
|
|
3056
|
-
},
|
|
3057
|
-
"regex": {
|
|
3058
|
-
"type": "string",
|
|
3059
|
-
"description": "select a regex match from the response"
|
|
3060
|
-
},
|
|
3061
|
-
"hash": {
|
|
3062
|
-
"type": "string",
|
|
3063
|
-
"description": "If provided, the value inside will be hashed instead of being redacted. Useful for cases where the data inside is an identifiying piece of information that you don't want to reveal to the attestor, eg. an email address.\nIf the hash function produces more bytes than the original value, the hash will be truncated.\nEg. if hash is enabled, the original value is \"hello\", and hashed is \"a1b2c\", then the attestor will only see \"a1b2c\".\nNote: if a regex with named groups is provided, only the named groups will be hashed.",
|
|
3064
|
-
"enum": [
|
|
3065
|
-
"oprf",
|
|
3066
|
-
"oprf-mpc",
|
|
3067
|
-
"oprf-raw"
|
|
3068
|
-
]
|
|
3069
|
-
}
|
|
3070
|
-
}
|
|
3071
|
-
}
|
|
3072
|
-
}
|
|
3073
|
-
}
|
|
3074
|
-
}
|
|
3075
|
-
},
|
|
3076
|
-
"allowedJsRequests": {
|
|
3077
|
-
"type": "array",
|
|
3078
|
-
"minItems": 0,
|
|
3079
|
-
"items": {
|
|
3080
|
-
"type": "object",
|
|
3081
|
-
"additionalProperties": false,
|
|
3082
|
-
"description": "A template for selecting requests. Same matcher shape as `RequestSelection`, plus template flags (`multiple`/`required`) and optional `templateParams` expansion.",
|
|
3083
|
-
"required": [
|
|
3084
|
-
"url",
|
|
3085
|
-
"method",
|
|
3086
|
-
"multiple",
|
|
3087
|
-
"required"
|
|
3088
|
-
],
|
|
3089
|
-
"properties": {
|
|
3090
|
-
"url": {
|
|
3091
|
-
"type": "string",
|
|
3092
|
-
"description": "The URL or generic path of the HTTP request."
|
|
3093
|
-
},
|
|
3094
|
-
"method": {
|
|
3095
|
-
"type": "string",
|
|
3096
|
-
"description": "The HTTP method used for the request.",
|
|
3097
|
-
"enum": [
|
|
3098
|
-
"GET",
|
|
3099
|
-
"POST",
|
|
3100
|
-
"PUT",
|
|
3101
|
-
"PATCH",
|
|
3102
|
-
"DELETE"
|
|
3103
|
-
]
|
|
3104
|
-
},
|
|
3105
|
-
"requestBodyTemplate": {
|
|
3106
|
-
"type": "string",
|
|
3107
|
-
"description": "Template used to match or capture an outgoing request body. Template can use regex templates as placeholders. For example, to match an outgoing request body that contains a request ID, you can use the following template: `(?<requestId>.*)`.",
|
|
3108
|
-
"maxLength": 100000
|
|
3109
|
-
},
|
|
3110
|
-
"credentials": {
|
|
3111
|
-
"type": "string",
|
|
3112
|
-
"description": "Mirrors the Fetch API `RequestCredentials` value used when issuing the request — controls whether cookies and auth headers are sent.",
|
|
3113
|
-
"enum": [
|
|
3114
|
-
"omit",
|
|
3115
|
-
"same-origin",
|
|
3116
|
-
"include"
|
|
3117
|
-
]
|
|
3118
|
-
},
|
|
3119
|
-
"writeRedactionMode": {
|
|
3120
|
-
"type": "string",
|
|
3121
|
-
"description": "How the matched portion of the response should be redacted before the transcript is handed to the attestor.\n- `zk`: redact using a zero-knowledge proof over the original\n bytes.\n\n- `key-update`: redact by performing a TLS key update so the\n attestor never observes the matched bytes in cleartext.",
|
|
3122
|
-
"enum": [
|
|
3123
|
-
"zk",
|
|
3124
|
-
"key-update"
|
|
3125
|
-
]
|
|
3126
|
-
},
|
|
3127
|
-
"additionalClientOptions": {
|
|
3128
|
-
"type": "object",
|
|
3129
|
-
"additionalProperties": false,
|
|
3130
|
-
"description": "Apply TLS configuration when creating the tunnel to the attestor.",
|
|
3131
|
-
"properties": {
|
|
3132
|
-
"supportedProtocolVersions": {
|
|
3133
|
-
"type": "array",
|
|
3134
|
-
"description": "TLS protocol versions the client is allowed to negotiate.",
|
|
3135
|
-
"minItems": 1,
|
|
3136
|
-
"uniqueItems": true,
|
|
3137
|
-
"items": {
|
|
3138
|
-
"type": "string",
|
|
3139
|
-
"enum": [
|
|
3140
|
-
"TLS1_2",
|
|
3141
|
-
"TLS1_3"
|
|
3142
|
-
]
|
|
3143
|
-
}
|
|
3144
|
-
}
|
|
3145
|
-
}
|
|
3146
|
-
},
|
|
3147
|
-
"responseMatches": {
|
|
3148
|
-
"type": "array",
|
|
3149
|
-
"description": "Conditions the (redacted) response must satisfy for the proof to be valid. Each runs against the union of the portions revealed by `responseRedactions` (or the whole response when there are none). Mirrors attestor-core `responseMatches`.",
|
|
3150
|
-
"minItems": 1,
|
|
3151
|
-
"items": {
|
|
3152
|
-
"type": "object",
|
|
3153
|
-
"additionalProperties": false,
|
|
3154
|
-
"description": "Specifies a rule to match against a string in response to validate proof content.",
|
|
3155
|
-
"required": [
|
|
3156
|
-
"type",
|
|
3157
|
-
"value"
|
|
3158
|
-
],
|
|
3159
|
-
"properties": {
|
|
3160
|
-
"isOptional": {
|
|
3161
|
-
"type": "boolean",
|
|
3162
|
-
"description": "If true, the match condition is optional and won't fail if absent",
|
|
3163
|
-
"default": false
|
|
3164
|
-
},
|
|
3165
|
-
"description": {
|
|
3166
|
-
"type": "string",
|
|
3167
|
-
"description": "The description of the field that is extracted using this match rule",
|
|
3168
|
-
"minLength": 1,
|
|
3169
|
-
"maxLength": 1000
|
|
3170
|
-
},
|
|
3171
|
-
"order": {
|
|
3172
|
-
"type": "integer",
|
|
3173
|
-
"description": "The order in which the field should be displayed to user in UI",
|
|
3174
|
-
"minimum": 0
|
|
3175
|
-
},
|
|
3176
|
-
"type": {
|
|
3177
|
-
"type": "string",
|
|
3178
|
-
"description": "The matching mechanism to use value as against response. Typically regex or simple string containment",
|
|
3179
|
-
"enum": [
|
|
3180
|
-
"regex",
|
|
3181
|
-
"contains"
|
|
3182
|
-
]
|
|
3183
|
-
},
|
|
3184
|
-
"value": {
|
|
3185
|
-
"type": "string",
|
|
3186
|
-
"description": "The pattern or value to look for in the response. When `type` is 'contains', supports template variable declaration using `{{variable}}` syntax. When `type` is 'regex', can be used to extract variables using regex named groups."
|
|
3187
|
-
}
|
|
3188
|
-
}
|
|
3189
|
-
}
|
|
3190
|
-
},
|
|
3191
|
-
"responseRedactions": {
|
|
3192
|
-
"type": "array",
|
|
3193
|
-
"description": "Portions to select/reveal from the response, applied in order (xPath => jsonPath => regex). Done client-side; only the selected portions (plus the first response line) are sent to the attestor. An independent ordered list — NOT paired 1:1 with `responseMatches`. Mirrors attestor-core `responseRedactions`.",
|
|
3194
|
-
"items": {
|
|
3195
|
-
"type": "object",
|
|
3196
|
-
"additionalProperties": false,
|
|
3197
|
-
"description": "Which portions to select from a response. These are selected in order, xpath => jsonPath => regex * These redactions are done client side and only the selected portions are sent to the attestor. The attestor will only be able to see the selected portions alongside the first line of the HTTP response (that is, \"HTTP/1.1 200 OK\")",
|
|
3198
|
-
"properties": {
|
|
3199
|
-
"xPath": {
|
|
3200
|
-
"type": "string",
|
|
3201
|
-
"description": "expect an HTML response, and to contain a certain xpath for eg. \"/html/body/div.a1/div.a2/span.a5\""
|
|
3202
|
-
},
|
|
3203
|
-
"jsonPath": {
|
|
3204
|
-
"type": "string",
|
|
3205
|
-
"description": "expect a JSON response, retrieve the item at this path using dot notation, for example 'email.addresses.0'."
|
|
3206
|
-
},
|
|
3207
|
-
"regex": {
|
|
3208
|
-
"type": "string",
|
|
3209
|
-
"description": "select a regex match from the response"
|
|
3210
|
-
},
|
|
3211
|
-
"hash": {
|
|
3212
|
-
"type": "string",
|
|
3213
|
-
"description": "If provided, the value inside will be hashed instead of being redacted. Useful for cases where the data inside is an identifiying piece of information that you don't want to reveal to the attestor, eg. an email address.\nIf the hash function produces more bytes than the original value, the hash will be truncated.\nEg. if hash is enabled, the original value is \"hello\", and hashed is \"a1b2c\", then the attestor will only see \"a1b2c\".\nNote: if a regex with named groups is provided, only the named groups will be hashed.",
|
|
3214
|
-
"enum": [
|
|
3215
|
-
"oprf",
|
|
3216
|
-
"oprf-mpc",
|
|
3217
|
-
"oprf-raw"
|
|
3218
|
-
]
|
|
3219
|
-
}
|
|
3220
|
-
}
|
|
3221
|
-
}
|
|
3222
|
-
},
|
|
3223
|
-
"multiple": {
|
|
3224
|
-
"type": "boolean",
|
|
3225
|
-
"description": "If true, the template is allowed for multiple requests. Useful for requests like paginated API calls.",
|
|
3226
|
-
"default": true
|
|
3227
|
-
},
|
|
3228
|
-
"required": {
|
|
3229
|
-
"type": "boolean",
|
|
3230
|
-
"description": "If true, a request is required to match with this template. If not requests matches this template in proof, then validation fails.",
|
|
3231
|
-
"default": true
|
|
3232
|
-
},
|
|
3233
|
-
"templateParams": {
|
|
3234
|
-
"type": "array",
|
|
3235
|
-
"description": "Names of `${param}` placeholders used in this template's `responseMatches` / `responseRedactions`, substituted at verification time from array-valued extracted parameters (each name must resolve to an array of values; all named arrays must have the same length). Absent or empty means the template is used as-is with no expansion.",
|
|
3236
|
-
"maxItems": 50,
|
|
3237
|
-
"items": {
|
|
3238
|
-
"type": "string",
|
|
3239
|
-
"minLength": 1,
|
|
3240
|
-
"maxLength": 100
|
|
3241
|
-
}
|
|
3242
|
-
},
|
|
3243
|
-
"templateParamsMode": {
|
|
3244
|
-
"type": "string",
|
|
3245
|
-
"description": "How array values of `templateParams` expand the template: `separate` (default) emits one expanded request — its own claim — per value; `merge` emits a single request whose `responseMatches`/`responseRedactions` contain all substituted entries, proven by one claim.",
|
|
3246
|
-
"enum": [
|
|
3247
|
-
"separate",
|
|
3248
|
-
"merge"
|
|
3249
|
-
],
|
|
3250
|
-
"default": "separate"
|
|
3251
|
-
}
|
|
3252
|
-
}
|
|
3253
|
-
}
|
|
3254
|
-
},
|
|
3255
|
-
"webSettings": {
|
|
3256
|
-
"type": "object",
|
|
3257
|
-
"additionalProperties": false,
|
|
3258
|
-
"description": "Settings used by the web-based verification client.",
|
|
3259
|
-
"properties": {
|
|
3260
|
-
"geoLocation": {
|
|
3261
|
-
"type": "string",
|
|
3262
|
-
"description": "Geographic location the verification should appear to originate from: a 2-letter ISO country code, or a parameter the attestor resolves at proof time. `{{DYNAMIC_GEO}}` and `{{DYNAMIC_GEO_SECRET}}` are the Verification Client's standard names for the end-user's own country — the `_SECRET` one is delivered as a secret param, so the attestor never learns which country the proof egressed from.",
|
|
3263
|
-
"maxLength": 64,
|
|
3264
|
-
"default": "{{DYNAMIC_GEO}}"
|
|
3265
|
-
},
|
|
3266
|
-
"clientOptions": {
|
|
3267
|
-
"type": "object",
|
|
3268
|
-
"additionalProperties": false,
|
|
3269
|
-
"description": "Options that influence how the web verification client behaves.",
|
|
3270
|
-
"properties": {
|
|
3271
|
-
"portal": {
|
|
3272
|
-
"type": "object",
|
|
3273
|
-
"additionalProperties": false,
|
|
3274
|
-
"description": "Options that influence how the portal verification client behaves.",
|
|
3275
|
-
"properties": {
|
|
3276
|
-
"useProxy": {
|
|
3277
|
-
"type": "boolean",
|
|
3278
|
-
"description": "When true, network traffic from the portal client and attestation is routed through a proxy.",
|
|
3279
|
-
"default": true
|
|
3280
|
-
},
|
|
3281
|
-
"userAgent": {
|
|
3282
|
-
"type": "string",
|
|
3283
|
-
"description": "User-agent string used for platform verification.",
|
|
3284
|
-
"maxLength": 500
|
|
3285
|
-
}
|
|
3286
|
-
}
|
|
3287
|
-
},
|
|
3288
|
-
"inapp": {
|
|
3289
|
-
"type": "object",
|
|
3290
|
-
"additionalProperties": false,
|
|
3291
|
-
"description": "Options that influence how the in-app verification client behaves.",
|
|
3292
|
-
"properties": {
|
|
3293
|
-
"interceptorOptions": {
|
|
3294
|
-
"type": "object",
|
|
3295
|
-
"additionalProperties": false,
|
|
3296
|
-
"required": [
|
|
3297
|
-
"interceptorType"
|
|
3298
|
-
],
|
|
3299
|
-
"properties": {
|
|
3300
|
-
"interceptorType": {
|
|
3301
|
-
"type": "string",
|
|
3302
|
-
"description": "How traffic interception is implemented.",
|
|
3303
|
-
"enum": [
|
|
3304
|
-
"HAWKEYE",
|
|
3305
|
-
"MSWJS",
|
|
3306
|
-
"CDP"
|
|
3307
|
-
]
|
|
3308
|
-
},
|
|
3309
|
-
"isDocumentRequestReplayEnabled": {
|
|
3310
|
-
"type": "boolean",
|
|
3311
|
-
"description": "Whether the main document request is replayed via the attestor",
|
|
3312
|
-
"default": false
|
|
3313
|
-
},
|
|
3314
|
-
"interceptorSettings": {
|
|
3315
|
-
"type": "string",
|
|
3316
|
-
"description": "Free-form configuration passed through to the interceptor implementation selected by `interceptorType`. Keys and value shapes are defined by the chosen interceptor.",
|
|
3317
|
-
"contentMediaType": "application/json"
|
|
3318
|
-
}
|
|
3319
|
-
}
|
|
3320
|
-
},
|
|
3321
|
-
"userAgents": {
|
|
3322
|
-
"type": "object",
|
|
3323
|
-
"additionalProperties": false,
|
|
3324
|
-
"description": "User-agent strings keyed by platform.",
|
|
3325
|
-
"properties": {
|
|
3326
|
-
"android": {
|
|
3327
|
-
"type": "string",
|
|
3328
|
-
"description": "User-agent string used for platform verification.",
|
|
3329
|
-
"maxLength": 500
|
|
3330
|
-
},
|
|
3331
|
-
"ios": {
|
|
3332
|
-
"type": "string",
|
|
3333
|
-
"description": "User-agent string used for platform verification.",
|
|
3334
|
-
"maxLength": 500
|
|
3335
|
-
}
|
|
3336
|
-
}
|
|
3337
|
-
}
|
|
3338
|
-
}
|
|
3339
|
-
},
|
|
3340
|
-
"extension": {
|
|
3341
|
-
"type": "object",
|
|
3342
|
-
"description": "Free-form key-value configuration for the browser-extension verification client. Keys and value shapes are defined by the extension client; values may be any JSON. Absent by default.",
|
|
3343
|
-
"maxProperties": 100,
|
|
3344
|
-
"additionalProperties": true
|
|
3345
|
-
}
|
|
3346
|
-
}
|
|
3347
|
-
},
|
|
3348
|
-
"jsUserScripts": {
|
|
3349
|
-
"type": "string",
|
|
3350
|
-
"description": "JavaScript snippets injected into the page which runs before every page load. `window.Reclaim.` APIs are available to these scripts to request actions to the client like claim creation.",
|
|
3351
|
-
"maxLength": 1000000
|
|
3352
|
-
}
|
|
3353
|
-
}
|
|
3354
|
-
},
|
|
3355
|
-
"requiredContext": {
|
|
3356
|
-
"type": "object",
|
|
3357
|
-
"description": "Optional JSON Schema describing the `context` a Consumer must supply when creating a verification session for this provider version. Only needed when the recipe expects Consumer-supplied values: those are referenced as `{{context.<key>}}` in recipe requests. Bare `{{parameterName}}` placeholders are provider parameters (extracted / not Consumer-supplied) and need no declaration here. The Builder validates `CreateVerificationSessionRequest.context` against this schema and rejects the request (400) on mismatch. Extra context fields are always allowed regardless of the schema (a root-level `additionalProperties: false` is ignored). Empty/absent accepts any context.",
|
|
3358
|
-
"additionalProperties": true
|
|
3359
|
-
},
|
|
3360
|
-
"notes": {
|
|
3361
|
-
"type": "string",
|
|
3362
|
-
"description": "Free-form change note recorded on `updateMetadata`.",
|
|
3363
|
-
"maxLength": 10000
|
|
3364
|
-
}
|
|
3365
|
-
}
|
|
3366
|
-
}
|
|
3367
|
-
},
|
|
3368
|
-
"required": [
|
|
3369
|
-
"params",
|
|
3370
|
-
"query",
|
|
3371
|
-
"body"
|
|
3372
|
-
],
|
|
3373
|
-
"additionalProperties": false
|
|
3374
|
-
}),
|
|
3375
|
-
},
|
|
3376
3134
|
};
|