{
  "format": "static-agent-index-v1",
  "releaseSnapshot": {
    "format": "static-release-reference-v1",
    "sourceVersion": "0.29.0",
    "sourceRegistrySha256": "a2b5ec09bf6c38b9d2879d746a4fded374f5928b445377b0270ef6aa8e6cac65",
    "generatedAt": "2026-10-06T15:38:00Z",
    "releaseAcceptance": "not-verified-by-generator",
    "runtimeReadiness": "not-evaluated",
    "livePaymentsVerified": false,
    "indexingVerified": false,
    "apiOrigin": null,
    "notice": "Build-time release reference. Runtime readiness, deployment, payment settlement and external indexing are not evaluated here. Prices are proposed; this file cannot authorize execution or payment."
  },
  "operationCount": 170,
  "dynamicEndpoints": {
    "health": "https://api.carloshbcabral.com/health",
    "catalogue": "https://api.carloshbcabral.com/catalogue"
  },
  "operations": [
    {
      "id": "content-digest",
      "name": "Content Digest",
      "description": "Use to fingerprint UTF-8 payloads for content-addressing, cache keys and integrity comparisons. Computes SHA-256/384/512; this is not a signature or authentication service.",
      "category": "standards",
      "intents": [
        "hash text SHA256 SHA384 SHA512",
        "fingerprint payload integrity"
      ],
      "whenToUse": [
        "Compute a SHA digest of supplied UTF-8 text."
      ],
      "whenNotToUse": [
        "Authentication, digital signatures, encryption, or file downloading."
      ],
      "capabilities": [
        "content-digest",
        "hash text SHA256 SHA384 SHA512",
        "fingerprint payload integrity"
      ],
      "related": [
        "json-canonicalize"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/content-digest",
      "contract": "/reference/services/content-digest.json",
      "schemas": {
        "input": "/reference/schemas/content-digest.input.json",
        "output": "/reference/schemas/content-digest.output.json"
      },
      "availability": {
        "status": "conditional-pilot-window",
        "method": "POST",
        "url": "https://api.carloshbcabral.com/v1/x402/content-digest",
        "protocol": "x402-v2",
        "priceAtomic": "3000",
        "network": "eip155:8453",
        "validFrom": "2026-10-06T18:35:00Z",
        "validUntil": "2026-10-07T18:35:00Z",
        "requiresFreshPreflight": true
      }
    },
    {
      "id": "timestamp-convert",
      "name": "Timestamp Convert",
      "description": "Use to normalize RFC3339 timestamps with an explicit offset or Unix epoch milliseconds into UTC ISO text, epoch milliseconds and epoch seconds. Rejects rollover dates and leap seconds.",
      "category": "standards",
      "intents": [
        "convert timestamp epoch UTC",
        "normalize RFC3339 date offset"
      ],
      "whenToUse": [
        "Convert strict offset timestamps or epoch milliseconds into UTC."
      ],
      "whenNotToUse": [
        "Natural-language dates, missing timezones, or leap seconds."
      ],
      "capabilities": [
        "timestamp-convert",
        "convert timestamp epoch UTC",
        "normalize RFC3339 date offset"
      ],
      "related": [
        "duration-convert"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/timestamp-convert",
      "contract": "/reference/services/timestamp-convert.json",
      "schemas": {
        "input": "/reference/schemas/timestamp-convert.input.json",
        "output": "/reference/schemas/timestamp-convert.output.json"
      },
      "availability": {
        "status": "conditional-pilot-window",
        "method": "POST",
        "url": "https://api.carloshbcabral.com/v1/x402/timestamp-convert",
        "protocol": "x402-v2",
        "priceAtomic": "3000",
        "network": "eip155:8453",
        "validFrom": "2026-10-06T18:35:00Z",
        "validUntil": "2026-10-07T18:35:00Z",
        "requiresFreshPreflight": true
      }
    },
    {
      "id": "json-repair",
      "name": "Conservative JSON Repair Batch",
      "description": "Repair 1–5 supplied JSON-like texts under an explicit conservative grammar: comments, trailing commas, ASCII unquoted keys, single quotes, Python True/False/None, leading BOM and one enclosing JSON fence. Return unchanged originals, repaired text, parsed values, exact edit traces and independent item rejections. No missing values, delimiters or truncated data are inferred.",
      "category": "document-assurance",
      "intents": [
        "Repair bounded malformed JSON with an exact edit trace",
        "Batch up to five independent JSON syntax repairs"
      ],
      "whenToUse": [
        "Repair known syntactic defects in caller-supplied JSON-like text",
        "Preserve original text and inspect every change before trusting a structured artifact"
      ],
      "whenNotToUse": [
        "Arbitrary JSON5 or Python parsing, schema validation, semantic correction or guaranteed repair",
        "Completing truncated values, guessing missing delimiters or selecting duplicate keys",
        "Large documents, arbitrary-precision numbers or a cheapest single-call guarantee"
      ],
      "capabilities": [
        "One fixed proposed price for 1–5 items with independent success/rejected results",
        "Explicit repair profile and complete nonoverlapping original-coordinate UTF-16 edits",
        "Preserves valid number tokens and unchanged valid JSON text; rejects unsafe or decimal-round-trip-changing numbers",
        "Rejects decoded duplicate/reserved keys and invalid Unicode; never executes supplied text"
      ],
      "limits": {
        "items": 5,
        "textCodeUnitsPerItem": 16000,
        "inputBytes": 100000,
        "outputBytes": 400000,
        "nodesPerItem": 4000,
        "depth": 20,
        "editsPerItem": 200,
        "numberTokenCodeUnits": 256,
        "profile": "conservative-json-repair-v1",
        "offsetUnit": "utf16-code-units",
        "networkAccess": "none",
        "schemaValidation": "not-performed"
      },
      "related": [
        "json-document-extract",
        "json-schema-check",
        "json-canonicalize"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "DUPLICATE_ID",
        "EDIT_LIMIT",
        "COMPLEXITY_LIMIT",
        "NUMBER_LIMIT",
        "NON_FINITE_NUMBER",
        "UNSAFE_INTEGER",
        "NUMBER_PRECISION",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "DUPLICATE_KEY",
        "UNSUPPORTED_FENCE",
        "UNTERMINATED_COMMENT",
        "UNSUPPORTED_COMMENT",
        "INVALID_STRING",
        "INVALID_ESCAPE",
        "TRUNCATED_STRING",
        "TRUNCATED_VALUE",
        "TRUNCATED_CONTAINER",
        "MISSING_COLON",
        "MISSING_COMMA",
        "UNSUPPORTED_KEY",
        "UNSUPPORTED_SYNTAX",
        "TRAILING_CONTENT"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/json-repair",
      "contract": "/reference/services/json-repair.json",
      "schemas": {
        "input": "/reference/schemas/json-repair.input.json",
        "output": "/reference/schemas/json-repair.output.json"
      },
      "availability": {
        "status": "conditional-pilot-window",
        "method": "POST",
        "url": "https://api.carloshbcabral.com/v1/x402/json-repair",
        "protocol": "x402-v2",
        "priceAtomic": "3000",
        "network": "eip155:8453",
        "validFrom": "2026-10-06T18:35:00Z",
        "validUntil": "2026-10-07T18:35:00Z",
        "requiresFreshPreflight": true
      }
    },
    {
      "id": "json-canonicalize",
      "name": "Deterministic JSON serialization",
      "description": "WHEN TO USE: Normalize JSON for cache keys or repeatable diffs. Recursively sorts object keys, preserves array order, and emits compact JSON plus UTF-8 byte length. Uses JavaScript numbers and JSON.stringify: integer-index keys serialize numerically before other sorted keys; large integers may already have lost precision. This is not RFC 8785 cryptographic canonicalization. Maximum 100,000 serialized characters, 1,000 entries per collection, depth 32.",
      "category": "structured",
      "intents": [
        "stable JSON cache key",
        "normalize JSON key order"
      ],
      "whenToUse": [
        "Sort JSON object keys for reproducible serialization."
      ],
      "whenNotToUse": [
        "Cryptographic RFC 8785 canonicalization or lossless arbitrary-precision numbers."
      ],
      "capabilities": [
        "json-canonicalize",
        "stable JSON cache key",
        "normalize JSON key order"
      ],
      "related": [
        "content-digest",
        "lines-diff"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/json-canonicalize",
      "contract": "/reference/services/json-canonicalize.json",
      "schemas": {
        "input": "/reference/schemas/json-canonicalize.input.json",
        "output": "/reference/schemas/json-canonicalize.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "json-pointer",
      "name": "JSON Pointer resolution",
      "description": "WHEN TO USE: Extract one precisely addressed value from an API payload without a query language. Resolves RFC 6901 string pointers, including ~0 and ~1 escaping and the empty root pointer. Missing members, URI fragments, leading-zero array indexes, and reserved prototype-related keys are errors. Maximum document size 100,000 characters and depth 32.",
      "category": "structured",
      "intents": [
        "extract nested JSON field by exact path",
        "pick one value from an object or array response",
        "resolve RFC 6901 pointer"
      ],
      "whenToUse": [
        "Read one value at an exact JSON Pointer."
      ],
      "whenNotToUse": [
        "JSONPath queries, wildcard selection, or remote API fetching."
      ],
      "capabilities": [
        "json-pointer",
        "extract nested JSON field by exact path",
        "pick one value from an object or array response",
        "resolve RFC 6901 pointer"
      ],
      "related": [
        "records-project",
        "json-flatten"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/json-pointer",
      "contract": "/reference/services/json-pointer.json",
      "schemas": {
        "input": "/reference/schemas/json-pointer.input.json",
        "output": "/reference/schemas/json-pointer.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "json-patch",
      "name": "Atomic JSON Patch",
      "description": "WHEN TO USE: Apply a bounded update plan atomically before saving an API document. Implements RFC 6902 add, remove, replace, move, copy, and structural test on a private clone; stops on the first error. Strict operation schemas reject extra fields. Up to 100 operations; size, depth, and 1,000-item limits checked after each operation. Removing the root returns documentExists=false and document=null; adding the root restores it. Reserved prototype-related paths are rejected.",
      "category": "structured",
      "intents": [
        "apply RFC 6902 patch",
        "ordered property changes with value assertions",
        "atomic JSON document update"
      ],
      "whenToUse": [
        "Apply an explicit add/remove/replace/move/copy/test plan to supplied JSON."
      ],
      "whenNotToUse": [
        "Generating a patch from prose or writing to a remote system."
      ],
      "capabilities": [
        "json-patch",
        "apply RFC 6902 patch",
        "ordered property changes with value assertions",
        "atomic JSON document update"
      ],
      "related": [
        "json-merge-patch",
        "json-schema-check"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/json-patch",
      "contract": "/reference/services/json-patch.json",
      "schemas": {
        "input": "/reference/schemas/json-patch.input.json",
        "output": "/reference/schemas/json-patch.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "json-merge-patch",
      "name": "JSON Merge Patch",
      "description": "WHEN TO USE: Apply simple partial-object updates using RFC 7396. Object members recursively merge, null members delete, arrays replace wholesale, and non-object patches replace the entire target. The target is never mutated. Maximum 100,000 serialized characters, 1,000 entries per collection, depth 32; reserved prototype-related keys are rejected.",
      "category": "structured",
      "intents": [
        "partial JSON object update",
        "apply RFC 7396 merge patch"
      ],
      "whenToUse": [
        "Merge partial objects, with null deleting members and arrays replacing wholesale."
      ],
      "whenNotToUse": [
        "Element-wise array merging or preserving explicit null object members."
      ],
      "capabilities": [
        "json-merge-patch",
        "partial JSON object update",
        "apply RFC 7396 merge patch"
      ],
      "related": [
        "json-patch"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/json-merge-patch",
      "contract": "/reference/services/json-merge-patch.json",
      "schemas": {
        "input": "/reference/schemas/json-merge-patch.input.json",
        "output": "/reference/schemas/json-merge-patch.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "json-flatten",
      "name": "Lossless JSON flattening",
      "description": "WHEN TO USE: Index nested payloads by escaped JSON Pointer for forms or change inspection. Returns scalar leaves in values and every object/array type in containers, preserving empty containers and numeric object keys for lossless unflattening. The root is represented by the empty pointer. Maximum 1,000 total pointers, output 100,000 characters, and depth 32.",
      "category": "structured",
      "intents": [
        "flatten nested JSON to escaped paths and leaf values",
        "index JSON leaves and containers"
      ],
      "whenToUse": [
        "Produce escaped paths while preserving empty objects and arrays."
      ],
      "whenNotToUse": [
        "Flattening to ambiguous dotted keys or exceeding 1000 pointers."
      ],
      "capabilities": [
        "json-flatten",
        "flatten nested JSON to escaped paths and leaf values",
        "index JSON leaves and containers"
      ],
      "related": [
        "json-unflatten",
        "json-pointer"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/json-flatten",
      "contract": "/reference/services/json-flatten.json",
      "schemas": {
        "input": "/reference/schemas/json-flatten.input.json",
        "output": "/reference/schemas/json-flatten.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "json-unflatten",
      "name": "Lossless JSON reconstruction",
      "description": "WHEN TO USE: Rebuild JSON from json-flatten output without guessing whether numeric keys belong to arrays or objects. Supply scalar values and explicit container types, including the empty root pointer. Rejects leaf/container collisions, missing parents, sparse arrays, unsafe keys, and malformed pointers. Maximum 1,000 combined pointers, 100,000 characters, depth 32.",
      "category": "structured",
      "intents": [
        "reconstruct nested JSON from leaf paths",
        "restore flattened JSON preserving empty arrays and objects"
      ],
      "whenToUse": [
        "Rebuild a document from explicit scalar leaves and container kinds."
      ],
      "whenNotToUse": [
        "Guessing missing parent types or accepting sparse arrays."
      ],
      "capabilities": [
        "json-unflatten",
        "reconstruct nested JSON from leaf paths",
        "restore flattened JSON preserving empty arrays and objects"
      ],
      "related": [
        "json-flatten"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/json-unflatten",
      "contract": "/reference/services/json-unflatten.json",
      "schemas": {
        "input": "/reference/schemas/json-unflatten.input.json",
        "output": "/reference/schemas/json-unflatten.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "records-project",
      "name": "Record field projection",
      "description": "WHEN TO USE: Shape up to 1,000 records into a small downstream payload, selecting nested fields with JSON Pointers and assigning flat output names. Up to 100 unique output names; missing fields are omitted, set to null, or rejected according to onMissing (default error). Unsafe names are rejected. Maximum 100,000 serialized characters and depth 32.",
      "category": "structured",
      "intents": [
        "select and rename fields from each row",
        "keep only chosen nested record properties",
        "reshape API records"
      ],
      "whenToUse": [
        "Select JSON Pointer fields from each record and rename them to flat output names."
      ],
      "whenNotToUse": [
        "Computed expressions, joins, or arbitrary query languages."
      ],
      "capabilities": [
        "records-project",
        "select and rename fields from each row",
        "keep only chosen nested record properties",
        "reshape API records"
      ],
      "related": [
        "records-filter",
        "csv-serialize"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/records-project",
      "contract": "/reference/services/records-project.json",
      "schemas": {
        "input": "/reference/schemas/records-project.input.json",
        "output": "/reference/schemas/records-project.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "records-filter",
      "name": "Structured record filtering",
      "description": "WHEN TO USE: Select up to 1,000 records using 1–20 structured predicates with left-to-right short-circuit all/any logic, without executing code. All pointer syntax is validated before filtering. eq/ne use structural JSON equality; gt/gte/lt/lte compare same-type numbers or code-unit strings; contains tests substrings or structural array membership; in tests membership in a supplied list. Missing fields match only exists=false, including for ne. Returns original zero-based indexes. Maximum 100,000 characters and depth 32.",
      "category": "structured",
      "intents": [
        "filter records by predicates",
        "keep rows whose values match conditions",
        "select rows where amount exceeds threshold or status equals a value"
      ],
      "whenToUse": [
        "Apply structured all/any predicates without code execution."
      ],
      "whenNotToUse": [
        "Regular expressions, SQL, or fuzzy matching."
      ],
      "capabilities": [
        "records-filter",
        "filter records by predicates",
        "keep rows whose values match conditions",
        "select rows where amount exceeds threshold or status equals a value"
      ],
      "related": [
        "records-project",
        "records-sort"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/records-filter",
      "contract": "/reference/services/records-filter.json",
      "schemas": {
        "input": "/reference/schemas/records-filter.input.json",
        "output": "/reference/schemas/records-filter.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "records-sort",
      "name": "Stable multi-key record sorting",
      "description": "WHEN TO USE: Order up to 1,000 records reproducibly using 1–10 nested JSON Pointer keys. Null and missing values tie and follow each key’s nulls setting independently of direction. Remaining ascending type order is boolean, number, string, array, object; booleans use false before true, strings use UTF-16 code units, arrays/objects compare deterministic JSON text. Equal keys preserve input order. Returns original indexes. Maximum 100,000 characters and depth 32.",
      "category": "structured",
      "intents": [
        "sort records by multiple fields",
        "stable JSON row ordering"
      ],
      "whenToUse": [
        "Order records by bounded nested keys with explicit null ordering."
      ],
      "whenNotToUse": [
        "Locale-aware collation or external database sorting."
      ],
      "capabilities": [
        "records-sort",
        "sort records by multiple fields",
        "stable JSON row ordering"
      ],
      "related": [
        "records-filter",
        "records-aggregate"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/records-sort",
      "contract": "/reference/services/records-sort.json",
      "schemas": {
        "input": "/reference/schemas/records-sort.input.json",
        "output": "/reference/schemas/records-sort.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "records-aggregate",
      "name": "Grouped record aggregates",
      "description": "WHEN TO USE: Summarize up to 1,000 records with count/sum/avg/min/max, grouped by up to 5 JSON Pointer fields. Up to 20 uniquely named metrics. Group order follows first occurrence; missing keys are distinguished from null through a parallel missing array. Numeric metrics ignore missing/null, reject other non-numbers and overflow; empty sum/count are 0 and empty avg/min/max are null. No groupBy returns one global group, even for empty input. Maximum 100,000 characters and depth 32.",
      "category": "structured",
      "intents": [
        "group records sum average count",
        "aggregate JSON metrics"
      ],
      "whenToUse": [
        "Calculate count/sum/avg/min/max over supplied bounded records."
      ],
      "whenNotToUse": [
        "Database queries, streaming analytics, or arbitrary formulas."
      ],
      "capabilities": [
        "records-aggregate",
        "group records sum average count",
        "aggregate JSON metrics"
      ],
      "related": [
        "records-filter",
        "records-project"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/records-aggregate",
      "contract": "/reference/services/records-aggregate.json",
      "schemas": {
        "input": "/reference/schemas/records-aggregate.input.json",
        "output": "/reference/schemas/records-aggregate.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "csv-parse",
      "name": "Strict quoted CSV parser",
      "description": "WHEN TO USE: Convert a CSV export into string rows and optional header-keyed records. Handles RFC 4180 quoting, doubled quotes, embedded newlines, and CRLF; also accepts LF/CR line endings, one leading BOM, and optional semicolon/tab/pipe delimiters. Header mode defaults true and requires unique, nonempty, safe headers. Ragged rows and malformed quoting are errors. Values remain strings. Blank lines are one empty field; a final newline adds no row. Maximum 100,000 characters, 1,000 data rows, 100 columns.",
      "category": "structured",
      "intents": [
        "parse quoted CSV cells into JSON",
        "read comma delimited spreadsheet export with embedded newlines"
      ],
      "whenToUse": [
        "Parse bounded delimited text with strict quoting and rectangular rows."
      ],
      "whenNotToUse": [
        "Excel binary files, guessed value types, or malformed CSV repair."
      ],
      "capabilities": [
        "csv-parse",
        "parse quoted CSV cells into JSON",
        "read comma delimited spreadsheet export with embedded newlines"
      ],
      "related": [
        "csv-serialize",
        "records-project"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/csv-parse",
      "contract": "/reference/services/csv-parse.json",
      "schemas": {
        "input": "/reference/schemas/csv-parse.input.json",
        "output": "/reference/schemas/csv-parse.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "csv-serialize",
      "name": "Spreadsheet-safe CSV serializer",
      "description": "WHEN TO USE: Export scalar rows to CSV with RFC 4180 quoting and spreadsheet formula protection. By default, prefixes an apostrophe to string cells/headers beginning with =,+,-,@, their full-width variants, tab, CR, or LF (also after leading whitespace). Numeric values remain numeric; null becomes an empty cell. escapeFormulas=false is an explicit opt-out for trusted machine-only data; no escaping is universally safe after spreadsheet re-save. Optional unique headers; rectangular rows; CRLF and final newline by default. Maximum 1,000 rows, 100 columns, 100,000 output characters.",
      "category": "structured",
      "intents": [
        "export JSON rows as CSV",
        "escape spreadsheet formula cells"
      ],
      "whenToUse": [
        "Serialize scalar rows with default formula-trigger escaping."
      ],
      "whenNotToUse": [
        "A guarantee of safety after spreadsheet re-save or XLSX generation."
      ],
      "capabilities": [
        "csv-serialize",
        "export JSON rows as CSV",
        "escape spreadsheet formula cells"
      ],
      "related": [
        "csv-parse"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/csv-serialize",
      "contract": "/reference/services/csv-serialize.json",
      "schemas": {
        "input": "/reference/schemas/csv-serialize.input.json",
        "output": "/reference/schemas/csv-serialize.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "unicode-normalize",
      "name": "Normalize Unicode",
      "description": "Use before comparing or indexing Unicode text. Applies exactly NFC, NFD, NFKC, or NFKD and reports UTF-16 lengths. Compatibility forms can change meaning; this is not transliteration, case folding, or confusable detection.",
      "category": "text",
      "intents": [
        "normalize Unicode NFC NFKC",
        "compare composed accented text"
      ],
      "whenToUse": [
        "Apply an explicit Unicode normalization form."
      ],
      "whenNotToUse": [
        "Transliteration, confusable detection, or case folding."
      ],
      "capabilities": [
        "unicode-normalize",
        "normalize Unicode NFC NFKC",
        "compare composed accented text"
      ],
      "related": [
        "whitespace-clean",
        "lines-dedupe"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/unicode-normalize",
      "contract": "/reference/services/unicode-normalize.json",
      "schemas": {
        "input": "/reference/schemas/unicode-normalize.input.json",
        "output": "/reference/schemas/unicode-normalize.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "text-chunk",
      "name": "Chunk text with overlap",
      "description": "Use to split a document into bounded Unicode-code-point windows with configurable overlap. Exact source slices use UTF-16 offsets, so adjacent windows can be verified without losing source characters. Not tokenization or grapheme segmentation. At most 2,000 chunks and 500,000 returned UTF-16 units.",
      "category": "text",
      "intents": [
        "split document for RAG retrieval",
        "overlapping chunks with source offsets"
      ],
      "whenToUse": [
        "Create bounded code-point windows with verifiable UTF-16 source offsets."
      ],
      "whenNotToUse": [
        "Tokenizer-accurate token budgets or semantic passage segmentation."
      ],
      "capabilities": [
        "text-chunk",
        "split document for RAG retrieval",
        "overlapping chunks with source offsets"
      ],
      "related": [
        "markdown-outline",
        "html-to-text"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/text-chunk",
      "contract": "/reference/services/text-chunk.json",
      "schemas": {
        "input": "/reference/schemas/text-chunk.input.json",
        "output": "/reference/schemas/text-chunk.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "text-metrics",
      "name": "Measure text",
      "description": "Use for deterministic document sizing and basic QA. Counts UTF-16 units, Unicode code points, UTF-8 bytes, whitespace, logical lines, blank-line-separated paragraphs, and word-like spans. Words use Unicode letters/numbers with internal apostrophes; this is not linguistic segmentation, token counting, or a readability score. Empty text has zero lines; a final newline adds an empty line.",
      "category": "text",
      "intents": [
        "count characters bytes words lines",
        "measure document size"
      ],
      "whenToUse": [
        "Measure deterministic Unicode and byte sizes with basic word-like counts."
      ],
      "whenNotToUse": [
        "Model token counts, language-specific segmentation, or readability scoring."
      ],
      "capabilities": [
        "text-metrics",
        "count characters bytes words lines",
        "measure document size"
      ],
      "related": [
        "text-chunk"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/text-metrics",
      "contract": "/reference/services/text-metrics.json",
      "schemas": {
        "input": "/reference/schemas/text-metrics.input.json",
        "output": "/reference/schemas/text-metrics.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "lines-dedupe",
      "name": "Deduplicate lines",
      "description": "Use to remove repeated records from newline-delimited text while keeping the first original spelling and order. Comparison optionally trims whitespace and uses locale-independent lowercase. Output separators become LF; no fuzzy matching or Unicode normalization. Empty text has zero lines; a trailing newline represents a final blank line.",
      "category": "text",
      "intents": [
        "remove duplicate text lines",
        "deduplicate newline records"
      ],
      "whenToUse": [
        "Keep the first spelling and order with optional trim/lowercase comparison."
      ],
      "whenNotToUse": [
        "Fuzzy entity resolution or Unicode normalization."
      ],
      "capabilities": [
        "lines-dedupe",
        "remove duplicate text lines",
        "deduplicate newline records"
      ],
      "related": [
        "unicode-normalize",
        "whitespace-clean"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/lines-dedupe",
      "contract": "/reference/services/lines-dedupe.json",
      "schemas": {
        "input": "/reference/schemas/lines-dedupe.input.json",
        "output": "/reference/schemas/lines-dedupe.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "keywords-extract",
      "name": "Extract frequency keywords",
      "description": "Use to produce a small, reproducible frequency index for a document. Counts Unicode word-like spans containing letters, lowercases without stemming, optionally filters a fixed English stop list plus your stop words, and sorts by frequency then first occurrence. No semantic ranking, language detection, phrase extraction, or AI. First offsets refer to original UTF-16 text.",
      "category": "text",
      "intents": [
        "extract frequent words",
        "rank document content words by frequency excluding common stopwords",
        "frequency keyword index"
      ],
      "whenToUse": [
        "Count word-like spans with optional stopword filtering."
      ],
      "whenNotToUse": [
        "Semantic keywords, sentiment, topic modeling, or language detection."
      ],
      "capabilities": [
        "keywords-extract",
        "extract frequent words",
        "rank document content words by frequency excluding common stopwords",
        "frequency keyword index"
      ],
      "related": [
        "text-metrics"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/keywords-extract",
      "contract": "/reference/services/keywords-extract.json",
      "schemas": {
        "input": "/reference/schemas/keywords-extract.input.json",
        "output": "/reference/schemas/keywords-extract.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "lines-diff",
      "name": "Diff bounded line sequences",
      "description": "Use for auditable changes between small documents. Computes a minimal insertion/deletion script by bounded longest-common-subsequence, with one-based old/new line numbers; ties delete first. Maximum 300 lines and 30,000 UTF-16 units per document. Compares line content exactly but ignores CR/LF separator style; a final newline is an additional empty line. Not a byte diff, patch file, or fuzzy diff.",
      "category": "text",
      "intents": [
        "compare two text versions for added and removed lines",
        "minimal line insertion deletion diff"
      ],
      "whenToUse": [
        "Inspect exact bounded line changes with source line numbers."
      ],
      "whenNotToUse": [
        "Large files, fuzzy matching, byte comparison, or executable patch output."
      ],
      "capabilities": [
        "lines-diff",
        "compare two text versions for added and removed lines",
        "minimal line insertion deletion diff"
      ],
      "related": [
        "whitespace-clean"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/lines-diff",
      "contract": "/reference/services/lines-diff.json",
      "schemas": {
        "input": "/reference/schemas/lines-diff.input.json",
        "output": "/reference/schemas/lines-diff.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "markdown-outline",
      "name": "Outline Markdown headings",
      "description": "Use to build a lightweight navigation index or section slicer. Finds ATX headings (# through ######) with up to three leading spaces, ignores fenced code, and supplies parent indexes and exact section offsets. Heading text remains inline Markdown. Does not parse Setext headings, indented code, block quotes, HTML blocks, or a full CommonMark AST. At most 5,000 headings.",
      "category": "text",
      "intents": [
        "extract Markdown headings",
        "document section outline"
      ],
      "whenToUse": [
        "Find supported ATX headings and exact section offsets."
      ],
      "whenNotToUse": [
        "A complete CommonMark AST or Setext/HTML heading support."
      ],
      "capabilities": [
        "markdown-outline",
        "extract Markdown headings",
        "document section outline"
      ],
      "related": [
        "markdown-links",
        "text-chunk"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/markdown-outline",
      "contract": "/reference/services/markdown-outline.json",
      "schemas": {
        "input": "/reference/schemas/markdown-outline.input.json",
        "output": "/reference/schemas/markdown-outline.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "markdown-links",
      "name": "Extract Markdown links",
      "description": "Use to inventory explicit Markdown links without fetching them. Supports single-line inline links/images with non-nested labels, bare or angle-bracket destinations, balanced destination parentheses to depth 8, quoted titles, full/collapsed references with single-line definitions, and http(s) autolinks. Ignores fenced/inline code. No shortcut references, nested labels, HTML links, indented code, or full CommonMark parsing. URLs are untrusted, unvalidated strings; entities stay literal. Maximum 5,000 links, definitions, and unresolved references each.",
      "category": "text",
      "intents": [
        "extract links from Markdown",
        "inventory reference links"
      ],
      "whenToUse": [
        "Collect supported explicit links and unresolved references without fetching."
      ],
      "whenNotToUse": [
        "Link availability checks, full CommonMark, or URL safety certification."
      ],
      "capabilities": [
        "markdown-links",
        "extract links from Markdown",
        "inventory reference links"
      ],
      "related": [
        "url-inspect",
        "markdown-outline"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/markdown-links",
      "contract": "/reference/services/markdown-links.json",
      "schemas": {
        "input": "/reference/schemas/markdown-links.input.json",
        "output": "/reference/schemas/markdown-links.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "html-to-text",
      "name": "Extract HTML fragment text",
      "description": "Use to flatten supplied HTML snippets into readable text. Uses parse5 HTML parsing, decodes entities, excludes script/style/template/noscript, optionally includes image alt text, and collapses source whitespace. Block elements and br yield line breaks or spaces. No network, CSS/layout/visibility computation, sanitization guarantee, or browser rendering; hidden elements can remain. Input is parsed as an HTML fragment. Conservative limits: 1,000 less-than characters, 64 lexically open tags (explicitly close optional-end tags), and 4,096 visited parser nodes.",
      "category": "text",
      "intents": [
        "convert HTML snippet to plain text",
        "extract readable supplied HTML"
      ],
      "whenToUse": [
        "Parse provided HTML fragments locally and omit script/style/template/noscript text."
      ],
      "whenNotToUse": [
        "URL scraping, browser-rendered visibility, or HTML security sanitization."
      ],
      "capabilities": [
        "html-to-text",
        "convert HTML snippet to plain text",
        "extract readable supplied HTML"
      ],
      "related": [
        "text-chunk",
        "whitespace-clean"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/html-to-text",
      "contract": "/reference/services/html-to-text.json",
      "schemas": {
        "input": "/reference/schemas/html-to-text.input.json",
        "output": "/reference/schemas/html-to-text.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "template-render",
      "name": "Render literal templates",
      "description": "Use to fill deterministic text templates without evaluating code. Replaces only exact {{name}} placeholders, where names use ASCII letters/digits/underscore/dot/hyphen and start with a letter or underscore. Values are literal strings and are never re-expanded or escaped for HTML/SQL. All recognized variables must exist; other brace syntax stays literal. At most 1,000 variables, 5,000 replacements, 200,000 value units, and 500,000 output units.",
      "category": "text",
      "intents": [
        "fill literal text placeholders",
        "render deterministic template"
      ],
      "whenToUse": [
        "Substitute literal named values without evaluating expressions."
      ],
      "whenNotToUse": [
        "HTML/SQL escaping, recursive templates, or executable template languages."
      ],
      "capabilities": [
        "template-render",
        "fill literal text placeholders",
        "render deterministic template"
      ],
      "related": [
        "json-schema-check"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/template-render",
      "contract": "/reference/services/template-render.json",
      "schemas": {
        "input": "/reference/schemas/template-render.input.json",
        "output": "/reference/schemas/template-render.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "pii-redact",
      "name": "Redact common PII patterns",
      "description": "Use as a review aid before inspecting logs or sample text. Replaces selected ASCII email, formatted US phone, XXX-XX-XXXX SSN-shaped, and valid dotted IPv4 patterns with fixed labels; returns original-source offsets without match values. Phone patterns require separators; SSN patterns do not validate issuance. Non-exhaustive heuristics can miss PII and produce false positives. Never a security, compliance, or anonymization guarantee. Maximum 10,000 matches.",
      "category": "text",
      "intents": [
        "redact common personal data patterns",
        "mask email phone SSN IPv4"
      ],
      "whenToUse": [
        "Aid review by masking a bounded set of common ASCII patterns."
      ],
      "whenNotToUse": [
        "Complete anonymization, legal compliance, or exhaustive PII detection."
      ],
      "capabilities": [
        "pii-redact",
        "redact common personal data patterns",
        "mask email phone SSN IPv4"
      ],
      "related": [
        "text-chunk"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/pii-redact",
      "contract": "/reference/services/pii-redact.json",
      "schemas": {
        "input": "/reference/schemas/pii-redact.input.json",
        "output": "/reference/schemas/pii-redact.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "whitespace-clean",
      "name": "Clean document whitespace",
      "description": "Use for predictable whitespace cleanup before diffing or storing text. Normalizes CR/LF separators to LF or CRLF, optionally collapses ASCII spaces/tabs, trims selected line edges, limits consecutive blank lines, and removes outer blank lines. Blank lines contain only spaces/tabs; other Unicode whitespace is preserved. Set maxBlankLines to null to preserve every blank line. This can change indentation-sensitive documents.",
      "category": "text",
      "intents": [
        "normalize whitespace line endings",
        "trim document blank lines"
      ],
      "whenToUse": [
        "Apply explicit line separator and ASCII whitespace cleanup."
      ],
      "whenNotToUse": [
        "Preserving all indentation-sensitive semantics automatically."
      ],
      "capabilities": [
        "whitespace-clean",
        "normalize whitespace line endings",
        "trim document blank lines"
      ],
      "related": [
        "lines-diff",
        "unicode-normalize"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/whitespace-clean",
      "contract": "/reference/services/whitespace-clean.json",
      "schemas": {
        "input": "/reference/schemas/whitespace-clean.input.json",
        "output": "/reference/schemas/whitespace-clean.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "yaml-to-json",
      "name": "Yaml To Json",
      "description": "Use to turn bounded YAML 1.2 configuration into JSON before agent tool calls. Rejects duplicate keys, custom tags, non-JSON values, and aliases.",
      "category": "standards",
      "intents": [
        "convert YAML config into JSON",
        "parse YAML 1.2"
      ],
      "whenToUse": [
        "Convert bounded YAML configuration into a JSON object, array or scalar without aliases or custom tags."
      ],
      "whenNotToUse": [
        "Arbitrary YAML objects, alias expansion, or executable tags."
      ],
      "capabilities": [
        "yaml-to-json",
        "convert YAML config into JSON",
        "parse YAML 1.2"
      ],
      "related": [
        "json-schema-check",
        "json-to-yaml"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/yaml-to-json",
      "contract": "/reference/services/yaml-to-json.json",
      "schemas": {
        "input": "/reference/schemas/yaml-to-json.input.json",
        "output": "/reference/schemas/yaml-to-json.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "json-to-yaml",
      "name": "Json To Yaml",
      "description": "Use to create human-reviewable YAML 1.2 from a JSON tool result; preserves JSON scalar types and emits no aliases.",
      "category": "standards",
      "intents": [
        "convert JSON into YAML",
        "emit readable YAML configuration"
      ],
      "whenToUse": [
        "Serialize supplied JSON scalar/container values as YAML 1.2."
      ],
      "whenNotToUse": [
        "Preserving prior YAML comments, aliases, or original formatting."
      ],
      "capabilities": [
        "json-to-yaml",
        "convert JSON into YAML",
        "emit readable YAML configuration"
      ],
      "related": [
        "yaml-to-json"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/json-to-yaml",
      "contract": "/reference/services/json-to-yaml.json",
      "schemas": {
        "input": "/reference/schemas/json-to-yaml.input.json",
        "output": "/reference/schemas/json-to-yaml.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "json-schema-check",
      "name": "Json Schema Check",
      "description": "Use to validate tool output with a bounded JSON Schema subset: scalar types, objects, arrays, enum/const, limits and combinators. Rejects $ref, regex and unsupported keywords; not a full draft validator.",
      "category": "standards",
      "intents": [
        "validate JSON tool output",
        "check instance against JSON Schema subset"
      ],
      "whenToUse": [
        "Validate a supplied value against the explicitly supported bounded schema subset."
      ],
      "whenNotToUse": [
        "Full JSON Schema draft conformance, $ref resolution, or regex validation."
      ],
      "capabilities": [
        "json-schema-check",
        "validate JSON tool output",
        "check instance against JSON Schema subset"
      ],
      "related": [
        "json-schema-compatibility",
        "json-patch"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/json-schema-check",
      "contract": "/reference/services/json-schema-check.json",
      "schemas": {
        "input": "/reference/schemas/json-schema-check.input.json",
        "output": "/reference/schemas/json-schema-check.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "base64-convert",
      "name": "Base64 Convert",
      "description": "Use to convert UTF-8 text to canonical Base64/Base64url or decode it. Rejects malformed encodings and non-UTF-8 decoded bytes.",
      "category": "standards",
      "intents": [
        "encode decode base64 text",
        "convert base64url UTF-8"
      ],
      "whenToUse": [
        "Encode UTF-8 text or decode canonical base64 encodings."
      ],
      "whenNotToUse": [
        "Arbitrary binary files or cryptographic encryption."
      ],
      "capabilities": [
        "base64-convert",
        "encode decode base64 text",
        "convert base64url UTF-8"
      ],
      "related": [
        "content-digest"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/base64-convert",
      "contract": "/reference/services/base64-convert.json",
      "schemas": {
        "input": "/reference/schemas/base64-convert.input.json",
        "output": "/reference/schemas/base64-convert.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "url-inspect",
      "name": "Url Inspect",
      "description": "Use to parse and normalize an HTTP(S) URL without fetching it. Returns origin, IDNA host, port and query pairs. Rejects credentials; normalization does not certify URL safety.",
      "category": "standards",
      "intents": [
        "parse HTTP URL components",
        "normalize URL hostname query"
      ],
      "whenToUse": [
        "Inspect supplied HTTP(S) URLs with IDNA normalization without fetching."
      ],
      "whenNotToUse": [
        "SSRF protection, reputation verdicts, DNS lookup, or live link checks."
      ],
      "capabilities": [
        "url-inspect",
        "parse HTTP URL components",
        "normalize URL hostname query"
      ],
      "related": [
        "querystring-convert"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/url-inspect",
      "contract": "/reference/services/url-inspect.json",
      "schemas": {
        "input": "/reference/schemas/url-inspect.input.json",
        "output": "/reference/schemas/url-inspect.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "querystring-convert",
      "name": "Querystring Convert",
      "description": "Use to encode query parameter pairs or decode application/x-www-form-urlencoded query strings while preserving duplicate keys and order.",
      "category": "standards",
      "intents": [
        "encode decode query parameters",
        "preserve duplicate URL query keys"
      ],
      "whenToUse": [
        "Convert ordered parameter pairs to/from form-urlencoded strings."
      ],
      "whenNotToUse": [
        "Nested bracket object conventions or URL fetching."
      ],
      "capabilities": [
        "querystring-convert",
        "encode decode query parameters",
        "preserve duplicate URL query keys"
      ],
      "related": [
        "url-inspect"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/querystring-convert",
      "contract": "/reference/services/querystring-convert.json",
      "schemas": {
        "input": "/reference/schemas/querystring-convert.input.json",
        "output": "/reference/schemas/querystring-convert.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "http-headers-normalize",
      "name": "Http Headers Normalize",
      "description": "Use to validate and lowercase HTTP field names and trim field values before signing or comparing requests. Preserves repeated headers as arrays and does not combine Set-Cookie.",
      "category": "standards",
      "intents": [
        "normalize HTTP headers",
        "validate repeated header fields"
      ],
      "whenToUse": [
        "Validate HTTP field names and trim values while preserving repeated Set-Cookie headers and multiple values."
      ],
      "whenNotToUse": [
        "HTTP request transmission or combining Set-Cookie into one field."
      ],
      "capabilities": [
        "http-headers-normalize",
        "normalize HTTP headers",
        "validate repeated header fields"
      ],
      "related": [
        "openapi-request-check"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/http-headers-normalize",
      "contract": "/reference/services/http-headers-normalize.json",
      "schemas": {
        "input": "/reference/schemas/http-headers-normalize.input.json",
        "output": "/reference/schemas/http-headers-normalize.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "duration-convert",
      "name": "Duration Convert",
      "description": "Use to convert fixed ISO8601 durations (days, hours, minutes, seconds) to seconds and a canonical duration. Calendar years/months/weeks and negative values are deliberately unsupported.",
      "category": "standards",
      "intents": [
        "convert ISO8601 duration seconds",
        "normalize fixed elapsed duration"
      ],
      "whenToUse": [
        "Convert fixed day/hour/minute/second durations."
      ],
      "whenNotToUse": [
        "Calendar months, years, weeks, negative durations, or date arithmetic."
      ],
      "capabilities": [
        "duration-convert",
        "convert ISO8601 duration seconds",
        "normalize fixed elapsed duration"
      ],
      "related": [
        "timestamp-convert"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/duration-convert",
      "contract": "/reference/services/duration-convert.json",
      "schemas": {
        "input": "/reference/schemas/duration-convert.input.json",
        "output": "/reference/schemas/duration-convert.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "units-convert",
      "name": "Units Convert",
      "description": "Use for deterministic length, mass, time, byte-size or temperature conversions in agent tool inputs. Explicit case-sensitive units distinguish MB from MiB; rejects incompatible dimensions.",
      "category": "standards",
      "intents": [
        "convert measurement units",
        "length mass bytes temperature conversion"
      ],
      "whenToUse": [
        "Convert explicitly supported compatible dimensions."
      ],
      "whenNotToUse": [
        "Currencies, exchange rates, or unit guessing."
      ],
      "capabilities": [
        "units-convert",
        "convert measurement units",
        "length mass bytes temperature conversion"
      ],
      "related": [
        "duration-convert"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/units-convert",
      "contract": "/reference/services/units-convert.json",
      "schemas": {
        "input": "/reference/schemas/units-convert.input.json",
        "output": "/reference/schemas/units-convert.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "semver-evaluate",
      "name": "Semver Evaluate",
      "description": "Use to compare strict Semantic Versioning versions and evaluate npm-compatible version ranges before choosing a package. Prerelease matching is excluded by default unless the range explicitly allows it.",
      "category": "standards",
      "intents": [
        "compare semantic versions",
        "check whether a version satisfies an npm caret dependency range"
      ],
      "whenToUse": [
        "Compare strict versions and check npm-compatible ranges."
      ],
      "whenNotToUse": [
        "Looking up package releases, vulnerabilities, or non-SemVer version systems."
      ],
      "capabilities": [
        "semver-evaluate",
        "compare semantic versions",
        "check whether a version satisfies an npm caret dependency range"
      ],
      "related": [
        "lockfile-inventory",
        "json-schema-compatibility"
      ],
      "limits": {
        "requestBytes": 131072,
        "responseBytes": 524288,
        "jsonDepth": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_TOO_LARGE",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/semver-evaluate",
      "contract": "/reference/services/semver-evaluate.json",
      "schemas": {
        "input": "/reference/schemas/semver-evaluate.input.json",
        "output": "/reference/schemas/semver-evaluate.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "openapi-lint",
      "name": "OpenAPI Agent Lint",
      "description": "Find actionable agent-integration problems in supplied OpenAPI 3.1.x JSON: unique operation IDs, response shape, path parameters and security references. Paths-only lint; references are reported without resolution. At most 100 paths/200 operations/200 retained findings; not full specification validation.",
      "category": "api-assurance",
      "intents": [
        "Review an OpenAPI 3.1 contract before wiring an agent client",
        "Locate repairable contract defects with JSON Pointer findings",
        "Find duplicate operation IDs, missing path parameters and response definitions"
      ],
      "whenToUse": [
        "Review an OpenAPI 3.1 contract before wiring an agent client",
        "Locate repairable contract defects with JSON Pointer findings",
        "Find duplicate operation IDs, missing path parameters and response definitions"
      ],
      "whenNotToUse": [
        "Full OpenAPI conformance or remote reference resolution",
        "Authentication/security certification"
      ],
      "capabilities": [
        "Stable finding codes and repair suggestions",
        "100 paths, 200 operations, 200 findings; 110,000 UTF-8 input bytes"
      ],
      "limits": {
        "inputBytes": 110000,
        "jsonNodes": 10000,
        "depth": 24,
        "paths": 100,
        "operations": 200,
        "effectiveParameters": 100,
        "findings": 200,
        "outputBytes": 450000,
        "jsonPointerCharacters": 4096
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "SCHEMA_LIMIT",
        "EVALUATION_LIMIT",
        "UNSAFE_KEY",
        "OUTPUT_LIMIT",
        "POINTER_LIMIT",
        "UNSUPPORTED_OPENAPI",
        "INVALID_OPENAPI",
        "OPENAPI_LIMIT",
        "UNSUPPORTED_SCHEMA",
        "OBJECT_SCHEMA_REQUIRED",
        "OPERATION_NOT_FOUND"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/openapi-lint",
      "contract": "/reference/services/openapi-lint.json",
      "schemas": {
        "input": "/reference/schemas/openapi-lint.input.json",
        "output": "/reference/schemas/openapi-lint.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "openapi-operation-inventory",
      "name": "OpenAPI Operation Inventory",
      "description": "Extract a bounded agent planning inventory of methods, templates, parameters, media types, response codes, and effective security declarations from OpenAPI 3.1.x. Reports lint coverage and unresolved references; does not call endpoints or resolve schemas.",
      "category": "api-assurance",
      "intents": [
        "Plan which API operations and authentication schemes an agent needs",
        "Audit operation coverage before client generation"
      ],
      "whenToUse": [
        "Plan which API operations and authentication schemes an agent needs",
        "Audit operation coverage before client generation"
      ],
      "whenNotToUse": [
        "Discovering live endpoint availability",
        "Resolving referenced parameters or testing credentials"
      ],
      "capabilities": [
        "Effective path/operation parameter overrides",
        "Declared anonymous alternatives and security inheritance"
      ],
      "limits": {
        "inputBytes": 110000,
        "jsonNodes": 10000,
        "depth": 24,
        "paths": 100,
        "operations": 200,
        "effectiveParameters": 100,
        "findings": 200,
        "outputBytes": 450000,
        "jsonPointerCharacters": 4096
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "SCHEMA_LIMIT",
        "EVALUATION_LIMIT",
        "UNSAFE_KEY",
        "OUTPUT_LIMIT",
        "POINTER_LIMIT",
        "UNSUPPORTED_OPENAPI",
        "INVALID_OPENAPI",
        "OPENAPI_LIMIT",
        "UNSUPPORTED_SCHEMA",
        "OBJECT_SCHEMA_REQUIRED",
        "OPERATION_NOT_FOUND"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/openapi-operation-inventory",
      "contract": "/reference/services/openapi-operation-inventory.json",
      "schemas": {
        "input": "/reference/schemas/openapi-operation-inventory.input.json",
        "output": "/reference/schemas/openapi-operation-inventory.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "json-schema-compatibility",
      "name": "JSON Schema Compatibility Evidence",
      "description": "Conservatively test whether all values accepted by a previous typed JSON Schema subset remain accepted by a next schema. Returns compatible only after a structural inclusion proof, incompatible only with a verified counterexample, otherwise unknown. Supports explicit single types, object/array constraints, enum/const and inclusive bounds; no refs/combinators/regex.",
      "category": "api-assurance",
      "intents": [
        "Gate an agent tool input-schema upgrade for backward acceptance",
        "Get concrete evidence for a breaking schema change"
      ],
      "whenToUse": [
        "Gate an agent tool input-schema upgrade for backward acceptance",
        "Get concrete evidence for a breaking schema change"
      ],
      "whenNotToUse": [
        "General JSON Schema subsumption",
        "Deciding behavior compatibility or security from schemas alone"
      ],
      "capabilities": [
        "Conservative three-state result with verified counterexamples",
        "128 schema nodes, 12 schema levels, 64 properties, 50,000 evaluations"
      ],
      "limits": {
        "inputBytes": 110000,
        "jsonNodes": 10000,
        "depth": 24,
        "schemaNodes": 128,
        "schemaDepth": 12,
        "schemaProperties": 64,
        "evaluations": 50000,
        "findings": 200,
        "outputBytes": 450000,
        "jsonPointerCharacters": 4096
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "SCHEMA_LIMIT",
        "EVALUATION_LIMIT",
        "UNSAFE_KEY",
        "OUTPUT_LIMIT",
        "POINTER_LIMIT",
        "UNSUPPORTED_OPENAPI",
        "INVALID_OPENAPI",
        "OPENAPI_LIMIT",
        "UNSUPPORTED_SCHEMA",
        "OBJECT_SCHEMA_REQUIRED",
        "OPERATION_NOT_FOUND"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/json-schema-compatibility",
      "contract": "/reference/services/json-schema-compatibility.json",
      "schemas": {
        "input": "/reference/schemas/json-schema-compatibility.input.json",
        "output": "/reference/schemas/json-schema-compatibility.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "json-schema-to-tool",
      "name": "JSON Schema to MCP Tool Descriptor",
      "description": "Wrap a supported object-root JSON Schema in a deterministic MCP tool descriptor, optionally with an object-root output schema. Rejects unsupported keywords instead of silently weakening constraints. Does not deploy a tool, execute code, or claim provider-specific strict function compatibility.",
      "category": "api-assurance",
      "intents": [
        "Create a named MCP tool descriptor from an object input schema",
        "Adapt a bounded JSON object schema into a tool definition",
        "Preserve schema constraints during tool registration preparation"
      ],
      "whenToUse": [
        "Create a named MCP tool descriptor from an object input schema",
        "Adapt a bounded JSON object schema into a tool definition",
        "Preserve schema constraints during tool registration preparation"
      ],
      "whenNotToUse": [
        "OpenAI strict-mode conversion or arbitrary JSON Schema conversion",
        "Installing or running an MCP server"
      ],
      "capabilities": [
        "No lossy keyword removal or execution",
        "OBJECT_SCHEMA_REQUIRED and UNSUPPORTED_SCHEMA errors"
      ],
      "limits": {
        "inputBytes": 110000,
        "jsonNodes": 10000,
        "depth": 24,
        "schemaNodes": 128,
        "schemaDepth": 12,
        "schemaProperties": 64,
        "findings": 200,
        "outputBytes": 450000,
        "jsonPointerCharacters": 4096
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "SCHEMA_LIMIT",
        "EVALUATION_LIMIT",
        "UNSAFE_KEY",
        "OUTPUT_LIMIT",
        "POINTER_LIMIT",
        "UNSUPPORTED_OPENAPI",
        "INVALID_OPENAPI",
        "OPENAPI_LIMIT",
        "UNSUPPORTED_SCHEMA",
        "OBJECT_SCHEMA_REQUIRED",
        "OPERATION_NOT_FOUND"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/json-schema-to-tool",
      "contract": "/reference/services/json-schema-to-tool.json",
      "schemas": {
        "input": "/reference/schemas/json-schema-to-tool.input.json",
        "output": "/reference/schemas/json-schema-to-tool.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "mcp-tool-lint",
      "name": "MCP Tool Descriptor Lint",
      "description": "Lint a supplied MCP tool descriptor for a bounded naming profile, description quality, object-root input/output schemas and typed annotation hints. Unsupported schemas produce explicit findings. Annotations are untrusted hints; this is neither full MCP protocol validation nor a security decision.",
      "category": "api-assurance",
      "intents": [
        "Review tool descriptors before adding them to an agent catalogue",
        "Identify schema limitations and untrusted annotation hints"
      ],
      "whenToUse": [
        "Review tool descriptors before adding them to an agent catalogue",
        "Identify schema limitations and untrusted annotation hints"
      ],
      "whenNotToUse": [
        "MCP transport/protocol conformance certification",
        "Trusting readOnlyHint as an authorization guarantee"
      ],
      "capabilities": [
        "Machine-actionable pointer findings",
        "128-character portable tool naming profile"
      ],
      "limits": {
        "inputBytes": 110000,
        "jsonNodes": 10000,
        "depth": 24,
        "schemaNodes": 128,
        "schemaDepth": 12,
        "schemaProperties": 64,
        "findings": 200,
        "outputBytes": 450000,
        "jsonPointerCharacters": 4096
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "SCHEMA_LIMIT",
        "EVALUATION_LIMIT",
        "UNSAFE_KEY",
        "OUTPUT_LIMIT",
        "POINTER_LIMIT",
        "UNSUPPORTED_OPENAPI",
        "INVALID_OPENAPI",
        "OPENAPI_LIMIT",
        "UNSUPPORTED_SCHEMA",
        "OBJECT_SCHEMA_REQUIRED",
        "OPERATION_NOT_FOUND"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/mcp-tool-lint",
      "contract": "/reference/services/mcp-tool-lint.json",
      "schemas": {
        "input": "/reference/schemas/mcp-tool-lint.input.json",
        "output": "/reference/schemas/mcp-tool-lint.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "openapi-request-check",
      "name": "OpenAPI Request Preflight",
      "description": "Check already-deserialized supplied parameter values and an optional JSON body against one exact OpenAPI 3.1 path-template/method. Applies the typed-schema subset only; references, serialization, authentication, parameter content and non-JSON bodies are not evaluated. Reports unsupported coverage separately from invalid values; never sends the request.",
      "category": "api-assurance",
      "intents": [
        "Preflight a typed API request before paying for or executing it",
        "Find missing required parameters and incompatible JSON bodies"
      ],
      "whenToUse": [
        "Preflight a typed API request before paying for or executing it",
        "Find missing required parameters and incompatible JSON bodies"
      ],
      "whenNotToUse": [
        "Validating raw URL encoding, serialization, auth or live behavior",
        "Resolving OpenAPI references or arbitrary JSON Schema"
      ],
      "capabilities": [
        "Exact method and path-template selection",
        "Case-insensitive supplied headers; no coercion; unsupported coverage yields valid null"
      ],
      "limits": {
        "inputBytes": 110000,
        "jsonNodes": 10000,
        "depth": 24,
        "paths": 100,
        "operations": 200,
        "effectiveParameters": 100,
        "schemaNodes": 128,
        "schemaDepth": 12,
        "schemaProperties": 64,
        "evaluations": 50000,
        "findings": 200,
        "outputBytes": 450000,
        "jsonPointerCharacters": 4096
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "SCHEMA_LIMIT",
        "EVALUATION_LIMIT",
        "UNSAFE_KEY",
        "OUTPUT_LIMIT",
        "POINTER_LIMIT",
        "UNSUPPORTED_OPENAPI",
        "INVALID_OPENAPI",
        "OPENAPI_LIMIT",
        "UNSUPPORTED_SCHEMA",
        "OBJECT_SCHEMA_REQUIRED",
        "OPERATION_NOT_FOUND"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/openapi-request-check",
      "contract": "/reference/services/openapi-request-check.json",
      "schemas": {
        "input": "/reference/schemas/openapi-request-check.input.json",
        "output": "/reference/schemas/openapi-request-check.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "package-url-inspect",
      "name": "Package URL Inspect",
      "description": "Parse a bounded Package URL and normalize generic syntax: type/qualifier case, percent encoding, qualifier order. Preserves name/version case; no ecosystem rules or registry validation. Strict subset rejects empty/dot path segments, whitespace, raw reserved characters, malformed UTF-8, and duplicate qualifiers.",
      "category": "supply-chain",
      "intents": [
        "parse package URL",
        "normalize PURL syntax",
        "inspect package coordinates"
      ],
      "whenToUse": [
        "Extract package type, namespace, version, qualifiers, and subpath without network access",
        "Normalize percent escapes and qualifier ordering inside the advertised subset"
      ],
      "whenNotToUse": [
        "Full ECMA-427 or ecosystem-specific PURL validation/canonicalization",
        "Registry existence checks or fetching package artifacts"
      ],
      "capabilities": [
        "Generic syntax profile with explicit ecosystemRulesApplied=false",
        "Sorted unique qualifier keys; UTF-8 decoding; no fetch"
      ],
      "related": [
        "sbom-inventory",
        "sbom-diff"
      ],
      "limits": {
        "inputBytes": 100000,
        "jsonNodes": 12000,
        "jsonDepth": 24,
        "outputBytes": 300000,
        "purlCharacters": 4096,
        "namespaceSegments": 32,
        "qualifiers": 32,
        "subpathSegments": 32
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INVALID_JSON",
        "INPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "UNSAFE_KEY",
        "OUTPUT_LIMIT",
        "INVALID_PURL"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/package-url-inspect",
      "contract": "/reference/services/package-url-inspect.json",
      "schemas": {
        "input": "/reference/schemas/package-url-inspect.input.json",
        "output": "/reference/schemas/package-url-inspect.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "sbom-inventory",
      "name": "SBOM Inventory",
      "description": "Extract names, versions, PURLs, declared licenses and hashes from CycloneDX JSON 1.5/1.6 or SPDX JSON 2.3. Includes nested CycloneDX components and metadata.component; excludes services, external BOMs, relationships and unconsumed fields. No full document, license, PURL or hash validation.",
      "category": "supply-chain",
      "intents": [
        "extract SBOM inventory",
        "extract component names, versions and licenses from a software bill of materials",
        "read CycloneDX components",
        "read SPDX packages"
      ],
      "whenToUse": [
        "Build a small auditable component inventory from caller-supplied SBOM JSON",
        "Retain source JSON pointers and distinguish declared/concluded license fields"
      ],
      "whenNotToUse": [
        "Full SBOM conformance checks, dependency resolution or vulnerability scanning",
        "XML/tag-value inputs, external document traversal or artifact verification"
      ],
      "capabilities": [
        "CycloneDX 1.5 and 1.6 JSON, SPDX 2.3 JSON",
        "Nested components, metadata root, normalized license/hash lists and source pointers",
        "Unknown fields ignored; consumed fields strictly type-checked"
      ],
      "related": [
        "sbom-diff",
        "package-url-inspect",
        "spdx-expression-analyze"
      ],
      "limits": {
        "inputBytes": 100000,
        "jsonNodes": 12000,
        "jsonDepth": 24,
        "outputBytes": 300000,
        "components": 500,
        "licensesPerComponent": 16,
        "hashesPerComponent": 16,
        "spdxExternalRefsPerPackage": 64
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INVALID_JSON",
        "INPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "UNSAFE_KEY",
        "OUTPUT_LIMIT",
        "INVALID_DOCUMENT",
        "UNSUPPORTED_SBOM",
        "AMBIGUOUS_COMPONENT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/sbom-inventory",
      "contract": "/reference/services/sbom-inventory.json",
      "schemas": {
        "input": "/reference/schemas/sbom-inventory.input.json",
        "output": "/reference/schemas/sbom-inventory.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "sbom-diff",
      "name": "SBOM Diff",
      "description": "Compare two supported SBOMs by unique exact group/name (default) or versionless generic-PURL identity. Report added/removed components and version/license/hash/PURL/type changes. Duplicate identities are rejected rather than cross-paired. Reference IDs and source positions are ignored; license comparison is textual, not semantic.",
      "category": "supply-chain",
      "intents": [
        "compare SBOM releases",
        "compare software bills of materials for added, removed and changed components",
        "detect component version changes",
        "review declared license changes"
      ],
      "whenToUse": [
        "Review deterministic component changes between two caller-supplied SBOMs",
        "Reject ambiguous duplicates instead of inventing version matches"
      ],
      "whenNotToUse": [
        "License equivalence, transitive graph impact or vulnerability analysis",
        "Inventing matches across renamed packages, ecosystems or duplicate identities"
      ],
      "capabilities": [
        "Name/group or versionless PURL matching",
        "Stable sorted change reports; bounded map lookup rather than pairwise joins",
        "Cross-format comparisons preserve declared versus concluded license distinctions"
      ],
      "related": [
        "sbom-inventory",
        "package-url-inspect",
        "dependency-risk-flags"
      ],
      "limits": {
        "inputBytes": 100000,
        "jsonNodes": 12000,
        "jsonDepth": 24,
        "outputBytes": 300000,
        "componentsPerDocument": 500,
        "inputBytesSharedAcrossBothDocuments": 100000
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INVALID_JSON",
        "INPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "UNSAFE_KEY",
        "OUTPUT_LIMIT",
        "INVALID_DOCUMENT",
        "UNSUPPORTED_SBOM",
        "AMBIGUOUS_COMPONENT",
        "MISSING_PURL",
        "INVALID_PURL"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/sbom-diff",
      "contract": "/reference/services/sbom-diff.json",
      "schemas": {
        "input": "/reference/schemas/sbom-diff.input.json",
        "output": "/reference/schemas/sbom-diff.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "lockfile-inventory",
      "name": "Lockfile Inventory",
      "description": "Extract npm package-lock v2/v3 packages by sorted location, retaining versions, resolved sources, integrity/license strings and dev/optional/devOptional/link/install-script flags. No package installation, graph resolution or hash verification. Workspace names require a declared name; node_modules names can be inferred from location.",
      "category": "supply-chain",
      "intents": [
        "inventory npm lockfile",
        "extract package-lock dependencies",
        "inspect lockfile integrity metadata"
      ],
      "whenToUse": [
        "Read package locations and declared metadata without installing anything",
        "Retain nested copies and workspace links as separate locations"
      ],
      "whenNotToUse": [
        "npm v1, Yarn, pnpm, Poetry or Cargo lockfiles",
        "Transitive dependency graph resolution, artifact retrieval or installation verification"
      ],
      "capabilities": [
        "npm package-lock v2/v3 packages table",
        "Explicit root toggle; sorted location rows; false for omitted boolean flags",
        "Links reported without following targets; legacy dependencies table ignored"
      ],
      "related": [
        "dependency-risk-flags",
        "sbom-inventory"
      ],
      "limits": {
        "inputBytes": 100000,
        "jsonNodes": 12000,
        "jsonDepth": 24,
        "outputBytes": 300000,
        "packageLocationsIncludingRoot": 500,
        "locationCharacters": 1024
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INVALID_JSON",
        "INPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "UNSAFE_KEY",
        "OUTPUT_LIMIT",
        "INVALID_DOCUMENT",
        "UNSUPPORTED_LOCKFILE"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/lockfile-inventory",
      "contract": "/reference/services/lockfile-inventory.json",
      "schemas": {
        "input": "/reference/schemas/lockfile-inventory.input.json",
        "output": "/reference/schemas/lockfile-inventory.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "dependency-risk-flags",
      "name": "Dependency Metadata Flags",
      "description": "Flag declared npm-style metadata gaps: missing/non-exact canonical SemVer pins, missing/insecure/local/unrecognized sources, missing/malformed or SHA1-only integrity, and missing license markers. Syntax/presence heuristics only; no vulnerability database, artifact verification, trust score or legal conclusion.",
      "category": "supply-chain",
      "intents": [
        "flag dependency metadata gaps",
        "find unpinned npm specifiers",
        "check declared integrity syntax"
      ],
      "whenToUse": [
        "Triage a bounded declared dependency list before human policy review",
        "Find missing pins, source declarations, integrity strings and license metadata"
      ],
      "whenNotToUse": [
        "Vulnerability or malware scanning, security certification, license compatibility decisions",
        "Treating absent flags as evidence a dependency is safe or authentic"
      ],
      "capabilities": [
        "Canonical SemVer exact-pin check; ranges, tags and git pins flagged as non-exact SemVer",
        "Canonical padded base64 SRI subset: SHA1/SHA256/SHA384/SHA512, at most 16 digests",
        "No fetch, hash verification, registry query or aggregate risk score"
      ],
      "related": [
        "lockfile-inventory",
        "spdx-expression-analyze",
        "semver-evaluate"
      ],
      "limits": {
        "inputBytes": 100000,
        "jsonNodes": 12000,
        "jsonDepth": 24,
        "outputBytes": 300000,
        "dependencies": 500,
        "specifierCharacters": 256,
        "integrityDigests": 16
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INVALID_JSON",
        "INPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "UNSAFE_KEY",
        "OUTPUT_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/dependency-risk-flags",
      "contract": "/reference/services/dependency-risk-flags.json",
      "schemas": {
        "input": "/reference/schemas/dependency-risk-flags.input.json",
        "output": "/reference/schemas/dependency-risk-flags.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "spdx-expression-analyze",
      "name": "SPDX Expression Analyze",
      "description": "Parse bounded SPDX-style license expression syntax into a flat indexed AST, unique identifiers/exceptions and fully parenthesized normalization. Supports AND/OR/WITH, +, LicenseRef and DocumentRef; enforces precedence and simple-left WITH. Does not validate current license/exception lists or give compliance advice; NONE/NOASSERTION document markers are rejected.",
      "category": "supply-chain",
      "intents": [
        "parse SPDX license expression",
        "inspect license expression AST",
        "normalize SPDX expression syntax"
      ],
      "whenToUse": [
        "Inspect operator precedence and identifier references in a supplied expression",
        "Perform bounded syntax preparation before a separate policy or license-list check"
      ],
      "whenNotToUse": [
        "Proving identifiers are in the current SPDX list",
        "License compatibility, legal advice or boolean expansion of all license choices"
      ],
      "capabilities": [
        "WITH before AND before OR; case-sensitive operators",
        "Flat postorder indexed AST avoids recursive output amplification",
        "ASCII spaces/tabs only; plus attaches directly to a non-reference identifier"
      ],
      "related": [
        "sbom-inventory",
        "dependency-risk-flags"
      ],
      "limits": {
        "inputBytes": 100000,
        "jsonNodes": 12000,
        "jsonDepth": 24,
        "outputBytes": 300000,
        "expressionCharacters": 4096,
        "tokens": 255,
        "astNodes": 255,
        "parenthesisLevels": 16
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INVALID_JSON",
        "INPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "UNSAFE_KEY",
        "OUTPUT_LIMIT",
        "INVALID_SPDX_EXPRESSION"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/spdx-expression-analyze",
      "contract": "/reference/services/spdx-expression-analyze.json",
      "schemas": {
        "input": "/reference/schemas/spdx-expression-analyze.input.json",
        "output": "/reference/schemas/spdx-expression-analyze.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "workflow-dag-analyze",
      "name": "Workflow Dependency Analysis",
      "description": "Find missing dependencies and cyclic components; derive stable parallel layers, critical path, earliest/latest timings and slack from a supplied task graph. Caller-estimated integer durations and unlimited parallel workers only; never executes tasks.",
      "category": "workflow-assurance",
      "intents": [
        "Find cycles and missing dependencies in an agent task DAG",
        "Plan parallel execution stages and estimate a workflow critical path"
      ],
      "whenToUse": [
        "Find cycles and missing dependencies in an agent task DAG",
        "Plan parallel execution stages and estimate a workflow critical path"
      ],
      "whenNotToUse": [
        "Resource-constrained scheduling or runtime prediction guarantees",
        "Executing, authorizing, or monitoring agent work"
      ],
      "capabilities": [
        "Actual cyclic components separated from blocked downstream tasks",
        "Stable topological layers and critical-path slack"
      ],
      "related": [
        "workflow-transition-check",
        "retry-schedule-plan"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 8000,
        "depth": 20,
        "findings": 200,
        "quoteSearchCharacters": 4000000,
        "quoteOccurrenceEvaluations": 200000,
        "tasks": 100,
        "dependencyEdges": 1000,
        "durationMsPerTask": 86400000
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "UNSAFE_KEY",
        "DUPLICATE_ID",
        "EDGE_LIMIT",
        "EVALUATION_LIMIT",
        "INVALID_UNICODE",
        "INVALID_RETRY_AFTER",
        "INVALID_RETRY_INPUT"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/workflow-dag-analyze",
      "contract": "/reference/services/workflow-dag-analyze.json",
      "schemas": {
        "input": "/reference/schemas/workflow-dag-analyze.input.json",
        "output": "/reference/schemas/workflow-dag-analyze.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "workflow-transition-check",
      "name": "Workflow State Trace Check",
      "description": "Validate a declared deterministic state machine and replay a supplied event trace. Reports ambiguous transitions, unreachable states, first impossible event, expected-state mismatches and final acceptance. No executable guards, actions, or authorization decisions.",
      "category": "workflow-assurance",
      "intents": [
        "Audit an agent workflow event trace against allowed state transitions",
        "Find impossible transitions and incomplete terminal workflow states"
      ],
      "whenToUse": [
        "Audit an agent workflow event trace against allowed state transitions",
        "Find impossible transitions and incomplete terminal workflow states"
      ],
      "whenNotToUse": [
        "Formal verification of arbitrary programs or hidden state",
        "Interpreting natural-language policy or granting real-world permissions"
      ],
      "capabilities": [
        "Stops derivation at the first undefined transition",
        "Accepting-state checks and exact trace evidence"
      ],
      "related": [
        "workflow-dag-analyze",
        "jsonrpc-exchange-check"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 8000,
        "depth": 20,
        "findings": 200,
        "quoteSearchCharacters": 4000000,
        "quoteOccurrenceEvaluations": 200000,
        "states": 100,
        "transitions": 500,
        "events": 500
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "UNSAFE_KEY",
        "DUPLICATE_ID",
        "EDGE_LIMIT",
        "EVALUATION_LIMIT",
        "INVALID_UNICODE",
        "INVALID_RETRY_AFTER",
        "INVALID_RETRY_INPUT"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/workflow-transition-check",
      "contract": "/reference/services/workflow-transition-check.json",
      "schemas": {
        "input": "/reference/schemas/workflow-transition-check.input.json",
        "output": "/reference/schemas/workflow-transition-check.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "jsonrpc-exchange-check",
      "name": "JSON-RPC Exchange Check",
      "description": "Inspect supplied parsed JSON-RPC 2.0 requests/responses for envelope errors, notification replies, typed-ID collisions, missing responses and unmatched results. Bounded safe-integer-ID correlation profile; no transport, method execution, schema validation, or full interoperability certification.",
      "category": "workflow-assurance",
      "intents": [
        "Correlate JSON-RPC batch replies with agent tool requests",
        "Detect missing tool responses, duplicate request IDs and replies to notifications"
      ],
      "whenToUse": [
        "Correlate JSON-RPC batch replies with agent tool requests",
        "Detect missing tool responses, duplicate request IDs and replies to notifications"
      ],
      "whenNotToUse": [
        "MCP lifecycle/authentication verification or tool invocation",
        "Raw JSON syntax validation or fractional/unsafe numeric ID correlation"
      ],
      "capabilities": [
        "String and numeric IDs remain distinct",
        "JSON-RPC source: https://www.jsonrpc.org/specification"
      ],
      "related": [
        "mcp-tool-lint",
        "workflow-transition-check"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 8000,
        "depth": 20,
        "findings": 200,
        "quoteSearchCharacters": 4000000,
        "quoteOccurrenceEvaluations": 200000,
        "requestEnvelopes": 200,
        "responseEnvelopes": 200
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "UNSAFE_KEY",
        "DUPLICATE_ID",
        "EDGE_LIMIT",
        "EVALUATION_LIMIT",
        "INVALID_UNICODE",
        "INVALID_RETRY_AFTER",
        "INVALID_RETRY_INPUT"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/jsonrpc-exchange-check",
      "contract": "/reference/services/jsonrpc-exchange-check.json",
      "schemas": {
        "input": "/reference/schemas/jsonrpc-exchange-check.input.json",
        "output": "/reference/schemas/jsonrpc-exchange-check.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "evidence-quote-check",
      "name": "Literal Quote Evidence Check",
      "description": "Check exact quotations against supplied source text, including optional UTF-16 start offsets. Returns source SHA-256 fingerprints, occurrence counts, bounded offsets and ambiguity/mismatch findings. Unique scans are capped at 4 million characters and 200,000 located occurrences. Establishes literal correspondence only, never truth, entailment, authenticity or source credibility.",
      "category": "workflow-assurance",
      "intents": [
        "Verify agent-generated quotations against supplied source passages",
        "Locate exact quote offsets and detect ambiguous repeated evidence"
      ],
      "whenToUse": [
        "Verify agent-generated quotations against supplied source passages",
        "Locate exact quote offsets and detect ambiguous repeated evidence"
      ],
      "whenNotToUse": [
        "Fact checking, semantic support, paraphrase matching or source authenticity",
        "Fetching cited URLs or verifying unseen documents"
      ],
      "capabilities": [
        "Exact UTF-16 offsets with source UTF-8 SHA-256",
        "Unique source/literal scans cached; overlapping occurrences counted with a 200,000 aggregate occurrence cap; first 20 locations retained"
      ],
      "related": [
        "citation-coverage-audit",
        "context-budget-pack"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 8000,
        "depth": 20,
        "findings": 200,
        "quoteSearchCharacters": 4000000,
        "quoteOccurrenceEvaluations": 200000,
        "sources": 100,
        "quotes": 200,
        "matchesPerQuote": 20
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "UNSAFE_KEY",
        "DUPLICATE_ID",
        "EDGE_LIMIT",
        "EVALUATION_LIMIT",
        "INVALID_UNICODE",
        "INVALID_RETRY_AFTER",
        "INVALID_RETRY_INPUT"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/evidence-quote-check",
      "contract": "/reference/services/evidence-quote-check.json",
      "schemas": {
        "input": "/reference/schemas/evidence-quote-check.input.json",
        "output": "/reference/schemas/evidence-quote-check.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "citation-coverage-audit",
      "name": "Citation Coverage Audit",
      "description": "Audit an explicit claim-to-evidence-to-source map for missing required citations, orphan references, duplicate links and unused evidence. Coverage counts valid structural links only; caller declares which claims need citations. No claim extraction, truth scoring or semantic entailment assessment.",
      "category": "workflow-assurance",
      "intents": [
        "Audit citation coverage of an agent report with explicit claim IDs",
        "Find orphan evidence references and unsupported-by-links required claims"
      ],
      "whenToUse": [
        "Audit citation coverage of an agent report with explicit claim IDs",
        "Find orphan evidence references and unsupported-by-links required claims"
      ],
      "whenNotToUse": [
        "Deciding whether evidence proves a claim",
        "Automatically extracting every factual claim from prose"
      ],
      "capabilities": [
        "Claim-level evidence/source edges and uncited IDs",
        "Zero required claims yields null coverage rather than a fabricated score"
      ],
      "related": [
        "evidence-quote-check",
        "context-budget-pack"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 8000,
        "depth": 20,
        "findings": 200,
        "quoteSearchCharacters": 4000000,
        "quoteOccurrenceEvaluations": 200000,
        "sources": 100,
        "claims": 200,
        "evidence": 200,
        "citations": 500
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "UNSAFE_KEY",
        "DUPLICATE_ID",
        "EDGE_LIMIT",
        "EVALUATION_LIMIT",
        "INVALID_UNICODE",
        "INVALID_RETRY_AFTER",
        "INVALID_RETRY_INPUT"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/citation-coverage-audit",
      "contract": "/reference/services/citation-coverage-audit.json",
      "schemas": {
        "input": "/reference/schemas/citation-coverage-audit.input.json",
        "output": "/reference/schemas/citation-coverage-audit.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "artifact-manifest-check",
      "name": "Supplied Artifact Manifest Check",
      "description": "Compare a supplied text-file manifest with supplied UTF-8 contents: byte sizes, SHA-256 digests, missing/extra/duplicate paths and bounded portable-path collisions. Does not read a filesystem, decode archives, trust an unsigned manifest or verify publisher identity.",
      "category": "workflow-assurance",
      "intents": [
        "Verify an agent artifact handoff against expected file hashes and sizes",
        "Detect missing files, duplicate paths and portable filename collisions"
      ],
      "whenToUse": [
        "Verify an agent artifact handoff against expected file hashes and sizes",
        "Detect missing files, duplicate paths and portable filename collisions"
      ],
      "whenNotToUse": [
        "Signature verification, malware detection or archive extraction",
        "Reading remote or local files, binary contents, or complete cross-platform filename validation"
      ],
      "capabilities": [
        "UTF-8 SHA-256 and byte-length comparison per entry",
        "Portable subset rejects traversal, controls, reserved names; NFC/ASCII-case collision signals"
      ],
      "related": [
        "content-digest",
        "evidence-quote-check"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 8000,
        "depth": 20,
        "findings": 200,
        "quoteSearchCharacters": 4000000,
        "quoteOccurrenceEvaluations": 200000,
        "manifestEntries": 100,
        "files": 100,
        "pathCharacters": 512
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "UNSAFE_KEY",
        "DUPLICATE_ID",
        "EDGE_LIMIT",
        "EVALUATION_LIMIT",
        "INVALID_UNICODE",
        "INVALID_RETRY_AFTER",
        "INVALID_RETRY_INPUT"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/artifact-manifest-check",
      "contract": "/reference/services/artifact-manifest-check.json",
      "schemas": {
        "input": "/reference/schemas/artifact-manifest-check.input.json",
        "output": "/reference/schemas/artifact-manifest-check.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "retry-schedule-plan",
      "name": "Bounded Retry Schedule Plan",
      "description": "Produce a deterministic hypothetical retry wait plan from explicit replay-safety assertions, HTTP status, backoff limits and waiting budget. Supports delta-seconds/IMF-fixdate Retry-After with explicit reference time. Stops for payment uncertainty and unknown/unsafe replay; never sends requests or authorizes repayment.",
      "category": "workflow-assurance",
      "intents": [
        "Calculate capped retry backoff under a fixed waiting budget",
        "Respect Retry-After without clipping the server's minimum wait"
      ],
      "whenToUse": [
        "Calculate capped retry backoff under a fixed waiting budget",
        "Respect Retry-After without clipping the server's minimum wait"
      ],
      "whenNotToUse": [
        "Automatically retrying payment uncertainty or assuming idempotency",
        "Live scheduling, random jitter, traffic synchronization prevention, or complete HTTP-date parsing"
      ],
      "capabilities": [
        "Caller-established replay safety is mandatory",
        "Retry-After profile grounded in https://www.rfc-editor.org/rfc/rfc9110.html#name-retry-after"
      ],
      "related": [
        "workflow-dag-analyze",
        "workflow-transition-check"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 8000,
        "depth": 20,
        "findings": 200,
        "quoteSearchCharacters": 4000000,
        "quoteOccurrenceEvaluations": 200000,
        "maxRetries": 10,
        "maxDelayMs": 3600000,
        "budgetMs": 86400000
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "UNSAFE_KEY",
        "DUPLICATE_ID",
        "EDGE_LIMIT",
        "EVALUATION_LIMIT",
        "INVALID_UNICODE",
        "INVALID_RETRY_AFTER",
        "INVALID_RETRY_INPUT"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/retry-schedule-plan",
      "contract": "/reference/services/retry-schedule-plan.json",
      "schemas": {
        "input": "/reference/schemas/retry-schedule-plan.input.json",
        "output": "/reference/schemas/retry-schedule-plan.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "context-budget-pack",
      "name": "Evidence Context Budget Pack",
      "description": "Greedily select exact source spans by required status, priority and stable ID within caller-supplied integer cost units. Keeps provenance, rejects broken spans, protects required candidates and deduplicates optional identical text. Does not tokenize, summarize, infer semantic relevance, or guarantee an optimal packing.",
      "category": "workflow-assurance",
      "intents": [
        "Pack RAG evidence spans into a caller-defined context budget",
        "Keep mandatory excerpts while removing duplicate optional context"
      ],
      "whenToUse": [
        "Pack RAG evidence spans into a caller-defined context budget",
        "Keep mandatory excerpts while removing duplicate optional context"
      ],
      "whenNotToUse": [
        "Tokenizer-accurate model limits or semantic retrieval",
        "Optimal knapsack solutions or verifying caller-provided cost estimates"
      ],
      "capabilities": [
        "Exact source slices with UTF-16 provenance offsets",
        "Required set over budget returns no packed content and an explicit finding"
      ],
      "related": [
        "evidence-quote-check",
        "citation-coverage-audit",
        "text-chunk"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 8000,
        "depth": 20,
        "findings": 200,
        "quoteSearchCharacters": 4000000,
        "quoteOccurrenceEvaluations": 200000,
        "sources": 100,
        "candidates": 200,
        "budgetUnits": 1000000,
        "candidateSpanCharacters": 2000000,
        "packedTextJsonBytes": 200000
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "UNSAFE_KEY",
        "DUPLICATE_ID",
        "EDGE_LIMIT",
        "EVALUATION_LIMIT",
        "INVALID_UNICODE",
        "INVALID_RETRY_AFTER",
        "INVALID_RETRY_INPUT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/context-budget-pack",
      "contract": "/reference/services/context-budget-pack.json",
      "schemas": {
        "input": "/reference/schemas/context-budget-pack.input.json",
        "output": "/reference/schemas/context-budget-pack.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "causal-log-check",
      "name": "Causal event log check",
      "description": "Check a supplied multi-agent log against vector clocks, actor sequence continuity, baseline history and explicit parents; report unobserved dependencies and concurrent-clock pairs. Does not execute or authenticate history.",
      "category": "workflow-assurance",
      "intents": [
        "Detect missing causal history in a multi-agent event log",
        "Check vector clock regressions and out-of-order agent messages before offline replay"
      ],
      "whenToUse": [
        "Detect missing causal history in a multi-agent event log",
        "Check vector clock regressions and out-of-order agent messages before offline replay"
      ],
      "whenNotToUse": [
        "Executing tools, sending messages, retrying effects, restoring state, or contacting live services",
        "Authenticating evidence, verifying signatures or identities, granting permission, or enforcing authorization",
        "Inferring facts omitted from the supplied artifact snapshot or guaranteeing exactly-once execution"
      ],
      "capabilities": [
        "causal-log-v1 profile",
        "Baseline continuation, per-actor counters and explicit parent clock dominance",
        "Missing inferred dependencies and bounded concurrent-clock evidence",
        "Advisory only; authorizationGranted=false; identityVerified=false; execution=false; externalRequests=0"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "findings": 200,
        "events": 256,
        "actors": 32,
        "traceSteps": 128,
        "observations": 256,
        "parentReferencesPerEvent": 32,
        "concurrentPairs": 64,
        "causalPairChecks": 32640
      },
      "related": [
        "replay-divergence-check",
        "checkpoint-handoff-check"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "ACTOR_LIMIT"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/causal-log-check",
      "contract": "/reference/services/causal-log-check.json",
      "schemas": {
        "input": "/reference/schemas/causal-log-check.input.json",
        "output": "/reference/schemas/causal-log-check.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "replay-divergence-check",
      "name": "Replay trace divergence check",
      "description": "Align two supplied execution traces by stable step ID, distinguish reordered/missing/extra steps and compare operation, canonical JSON requests, outcomes and result presence. Returns digest evidence without executing a replay.",
      "category": "workflow-assurance",
      "intents": [
        "Locate deterministic replay divergence between recorded agent runs",
        "Compare step-level requests and outputs after a tool or prompt upgrade"
      ],
      "whenToUse": [
        "Locate deterministic replay divergence between recorded agent runs",
        "Compare step-level requests and outputs after a tool or prompt upgrade"
      ],
      "whenNotToUse": [
        "Executing tools, sending messages, retrying effects, restoring state, or contacting live services",
        "Authenticating evidence, verifying signatures or identities, granting permission, or enforcing authorization",
        "Inferring facts omitted from the supplied artifact snapshot or guaranteeing exactly-once execution"
      ],
      "capabilities": [
        "replay-divergence-v1 profile",
        "Stable-ID alignment, exact common-step order and matching prefix",
        "Presence-aware result hashes using sorted-json-sha256-v1",
        "Advisory only; authorizationGranted=false; identityVerified=false; execution=false; externalRequests=0"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "findings": 200,
        "events": 256,
        "actors": 32,
        "traceSteps": 128,
        "observations": 256,
        "stepsPerTrace": 128
      },
      "related": [
        "causal-log-check",
        "idempotency-conflict-check"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "ACTOR_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/replay-divergence-check",
      "contract": "/reference/services/replay-divergence-check.json",
      "schemas": {
        "input": "/reference/schemas/replay-divergence-check.input.json",
        "output": "/reference/schemas/replay-divergence-check.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "idempotency-conflict-check",
      "name": "Idempotency observation conflict check",
      "description": "Group supplied attempts by exact scope and idempotency key; find conflicting operation/request or success-result fingerprints and unresolved/stale pending outcomes. Advisory reconciliation only, never retry permission.",
      "category": "workflow-assurance",
      "intents": [
        "Find conflicting idempotency keys before retrying an uncertain agent tool call",
        "Triage duplicate success receipts and stale pending attempt logs"
      ],
      "whenToUse": [
        "Find conflicting idempotency keys before retrying an uncertain agent tool call",
        "Triage duplicate success receipts and stale pending attempt logs"
      ],
      "whenNotToUse": [
        "Executing tools, sending messages, retrying effects, restoring state, or contacting live services",
        "Authenticating evidence, verifying signatures or identities, granting permission, or enforcing authorization",
        "Inferring facts omitted from the supplied artifact snapshot or guaranteeing exactly-once execution"
      ],
      "capabilities": [
        "idempotency-conflict-v1 profile",
        "Exact (scope,key) grouping and operation/request fingerprints",
        "Conflicting successful responses and unresolved outcome review dispositions",
        "Advisory only; authorizationGranted=false; identityVerified=false; execution=false; externalRequests=0"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "findings": 200,
        "events": 256,
        "actors": 32,
        "traceSteps": 128,
        "observations": 256,
        "pendingTimeoutMaxMs": 604800000
      },
      "related": [
        "checkpoint-handoff-check",
        "retry-schedule-plan",
        "replay-divergence-check"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "ACTOR_LIMIT"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/idempotency-conflict-check",
      "contract": "/reference/services/idempotency-conflict-check.json",
      "schemas": {
        "input": "/reference/schemas/idempotency-conflict-check.input.json",
        "output": "/reference/schemas/idempotency-conflict-check.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "approval-scope-check",
      "name": "Supplied approval scope comparison",
      "description": "Compare a structured caller-supplied approval receipt to a proposed action: exact actor and scope, declared data-class subset, payload digest, caller time window, revocation and use count. Does not authenticate or grant authorization.",
      "category": "workflow-assurance",
      "intents": [
        "Detect scope drift or expiry in an offline human-approval receipt",
        "Compare a proposed action with an exact structured approval artifact before human review"
      ],
      "whenToUse": [
        "Detect scope drift or expiry in an offline human-approval receipt",
        "Compare a proposed action with an exact structured approval artifact before human review"
      ],
      "whenNotToUse": [
        "Executing tools, sending messages, retrying effects, restoring state, or contacting live services",
        "Authenticating evidence, verifying signatures or identities, granting permission, or enforcing authorization",
        "Inferring facts omitted from the supplied artifact snapshot or guaranteeing exactly-once execution"
      ],
      "capabilities": [
        "approval-scope-v1 profile",
        "Exact scope and payload digest comparison with declared data-class subset",
        "Exclusive expiry and usage-count assertions; authorizationGranted=false and identityVerified=false",
        "Advisory only; authorizationGranted=false; identityVerified=false; execution=false; externalRequests=0"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "findings": 200,
        "events": 256,
        "actors": 32,
        "traceSteps": 128,
        "observations": 256,
        "dataClassesPerScope": 16,
        "scopeMatching": "exact case-sensitive strings; no wildcards"
      },
      "related": [
        "checkpoint-handoff-check",
        "json-canonicalize"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "ACTOR_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/approval-scope-check",
      "contract": "/reference/services/approval-scope-check.json",
      "schemas": {
        "input": "/reference/schemas/approval-scope-check.input.json",
        "output": "/reference/schemas/approval-scope-check.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "checkpoint-handoff-check",
      "name": "Checkpoint handoff consistency check",
      "description": "Compare a checkpoint with a proposed resume packet: workflow/consumer/revision, JSON state digest, required artifact manifests, exact stream cursors and pending-effect receipts. Reports reconciliation blockers; never restores or dispatches anything.",
      "category": "workflow-assurance",
      "intents": [
        "Check an agent checkpoint handoff before resuming after interruption",
        "Find missing artifacts, cursor gaps and uncertain side effects in a recovery packet"
      ],
      "whenToUse": [
        "Check an agent checkpoint handoff before resuming after interruption",
        "Find missing artifacts, cursor gaps and uncertain side effects in a recovery packet"
      ],
      "whenNotToUse": [
        "Executing tools, sending messages, retrying effects, restoring state, or contacting live services",
        "Authenticating evidence, verifying signatures or identities, granting permission, or enforcing authorization",
        "Inferring facts omitted from the supplied artifact snapshot or guaranteeing exactly-once execution"
      ],
      "capabilities": [
        "checkpoint-handoff-v1 profile",
        "State digest, required manifest and exact cursor cross-reference checks",
        "Prepared/submitted/acknowledged effect receipt reconciliation; authorizationGranted=false",
        "Advisory only; authorizationGranted=false; identityVerified=false; execution=false; externalRequests=0"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "findings": 200,
        "events": 256,
        "actors": 32,
        "traceSteps": 128,
        "observations": 256,
        "artifacts": 128,
        "cursors": 128,
        "effects": 128,
        "receipts": 128
      },
      "related": [
        "causal-log-check",
        "idempotency-conflict-check",
        "approval-scope-check"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "ACTOR_LIMIT"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/checkpoint-handoff-check",
      "contract": "/reference/services/checkpoint-handoff-check.json",
      "schemas": {
        "input": "/reference/schemas/checkpoint-handoff-check.input.json",
        "output": "/reference/schemas/checkpoint-handoff-check.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "contract-capability-negotiate",
      "name": "Contract capability intersection",
      "description": "Intersect 2–8 supplied capability offers, exact protocol/version/media identifiers and bounded size intervals. Return a deterministic common proposal or explicit conflicts; no negotiation, schema compatibility proof or authorization occurs.",
      "category": "workflow-assurance",
      "intents": [
        "Find a common contract version and declared capabilities between agents",
        "Compare message and batch limits before exchanging artifacts"
      ],
      "whenToUse": [
        "Find a common contract version and declared capabilities between agents",
        "Compare message and batch limits before exchanging artifacts"
      ],
      "whenNotToUse": [
        "Live negotiation, message delivery, queue consumption, remote pagination, artifact fetching or migration execution",
        "Authentication, signed provenance, authorization, schema compatibility proofs, or exactly-once guarantees",
        "Inferring absent versions, server state, missing history, semantic equivalence, or market uniqueness"
      ],
      "capabilities": [
        "Exact set intersection and required-capability union",
        "Inclusive integer size intervals; lexicographic choice is not newest-version selection",
        "Supplied declarations only; advisoryOnly=true; authorizationGranted=false; execution=false; externalRequests=0"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "findings": 200,
        "parties": 8,
        "versionsPerParty": 32,
        "capabilitiesPerParty": 32
      },
      "related": [
        "json-schema-compatibility",
        "contract-version-route"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "VERSION_LIMIT",
        "ITEM_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/contract-capability-negotiate",
      "contract": "/reference/services/contract-capability-negotiate.json",
      "schemas": {
        "input": "/reference/schemas/contract-capability-negotiate.input.json",
        "output": "/reference/schemas/contract-capability-negotiate.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "contract-version-route",
      "name": "Declared contract migration route",
      "description": "Choose a bounded minimum-cost route through a supplied directed version-migration manifest, respecting explicit lossy-step, cost and step limits. Version IDs are opaque; no migrations run and declared compatibility is not independently verified.",
      "category": "workflow-assurance",
      "intents": [
        "Plan a declared contract migration path between agent versions",
        "Find a lowest-cost adapter chain without allowing declared data loss"
      ],
      "whenToUse": [
        "Plan a declared contract migration path between agent versions",
        "Find a lowest-cost adapter chain without allowing declared data loss"
      ],
      "whenNotToUse": [
        "Live negotiation, message delivery, queue consumption, remote pagination, artifact fetching or migration execution",
        "Authentication, signed provenance, authorization, schema compatibility proofs, or exactly-once guarantees",
        "Inferring absent versions, server state, missing history, semantic equivalence, or market uniqueness"
      ],
      "capabilities": [
        "Bounded dynamic programming over supplied directed edges, including cycles",
        "Lowest cost, then fewest steps, then exact lexicographic migration IDs",
        "Supplied declarations only; advisoryOnly=true; authorizationGranted=false; execution=false; externalRequests=0"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "findings": 200,
        "migrations": 256,
        "distinctVersions": 128,
        "maximumSteps": 32
      },
      "related": [
        "contract-capability-negotiate",
        "json-schema-compatibility"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "VERSION_LIMIT",
        "ITEM_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/contract-version-route",
      "contract": "/reference/services/contract-version-route.json",
      "schemas": {
        "input": "/reference/schemas/contract-version-route.input.json",
        "output": "/reference/schemas/contract-version-route.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "message-batch-plan",
      "name": "Message batch contiguous-prefix plan",
      "description": "Inspect up to 256 supplied message envelopes against stream checkpoints, explicit duplicate rules and sequence-slot identity. Propose a contiguous ordered prefix per stream, stopping at gaps and withholding every plan on structural conflicts. No messages are delivered or consumed.",
      "category": "workflow-assurance",
      "intents": [
        "Order an agent message batch without skipping missing sequence numbers",
        "Deduplicate identical message envelopes under an explicit policy"
      ],
      "whenToUse": [
        "Order an agent message batch without skipping missing sequence numbers",
        "Deduplicate identical message envelopes under an explicit policy"
      ],
      "whenNotToUse": [
        "Live negotiation, message delivery, queue consumption, remote pagination, artifact fetching or migration execution",
        "Authentication, signed provenance, authorization, schema compatibility proofs, or exactly-once guarantees",
        "Inferring absent versions, server state, missing history, semantic equivalence, or market uniqueness"
      ],
      "capabilities": [
        "Exact message-ID and stream-sequence conflict detection",
        "All-or-nothing conflict handling; independent stream prefixes stop at gaps",
        "Supplied declarations only; advisoryOnly=true; authorizationGranted=false; execution=false; externalRequests=0"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "findings": 200,
        "streams": 32,
        "messages": 256
      },
      "related": [
        "causal-log-check",
        "checkpoint-handoff-check"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "VERSION_LIMIT",
        "ITEM_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/message-batch-plan",
      "contract": "/reference/services/message-batch-plan.json",
      "schemas": {
        "input": "/reference/schemas/message-batch-plan.input.json",
        "output": "/reference/schemas/message-batch-plan.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "pagination-chain-check",
      "name": "Pagination snapshot-chain check",
      "description": "Validate a supplied page chain for consecutive numbers, cursor continuity and cycles, fixed snapshot/query digests, and item-ID/content conflicts. Return a checkpoint only for a consistent chain. A terminal marker is not proof of a complete live dataset.",
      "category": "workflow-assurance",
      "intents": [
        "Check pagination cursor continuity before handing a checkpoint to another agent",
        "Detect snapshot drift and repeated records in captured API pages"
      ],
      "whenToUse": [
        "Check pagination cursor continuity before handing a checkpoint to another agent",
        "Detect snapshot drift and repeated records in captured API pages"
      ],
      "whenNotToUse": [
        "Live negotiation, message delivery, queue consumption, remote pagination, artifact fetching or migration execution",
        "Authentication, signed provenance, authorization, schema compatibility proofs, or exactly-once guarantees",
        "Inferring absent versions, server state, missing history, semantic equivalence, or market uniqueness"
      ],
      "capabilities": [
        "Exact opaque cursor chaining with explicit null terminal markers",
        "Supplied item digests and explicit duplicate-item policy; no page fetching",
        "Supplied declarations only; advisoryOnly=true; authorizationGranted=false; execution=false; externalRequests=0"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "findings": 200,
        "pages": 128,
        "itemsPerPage": 256,
        "totalItems": 512,
        "cursorCharacters": 256
      },
      "related": [
        "checkpoint-handoff-check",
        "http-link-parse"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "VERSION_LIMIT",
        "ITEM_LIMIT"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/pagination-chain-check",
      "contract": "/reference/services/pagination-chain-check.json",
      "schemas": {
        "input": "/reference/schemas/pagination-chain-check.input.json",
        "output": "/reference/schemas/pagination-chain-check.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "artifact-lineage-check",
      "name": "Artifact derivation lineage check",
      "description": "Check a supplied artifact derivation graph for parent-digest and media-type agreement, missing or cyclic ancestry, and required/forbidden ancestor or depth constraints. Inspect only supplied manifests; no artifact bytes, derivations, identities or source authenticity are verified.",
      "category": "workflow-assurance",
      "intents": [
        "Validate artifact parent digests and transformation media contracts",
        "Check required or forbidden source ancestry before accepting an agent artifact"
      ],
      "whenToUse": [
        "Validate artifact parent digests and transformation media contracts",
        "Check required or forbidden source ancestry before accepting an agent artifact"
      ],
      "whenNotToUse": [
        "Live negotiation, message delivery, queue consumption, remote pagination, artifact fetching or migration execution",
        "Authentication, signed provenance, authorization, schema compatibility proofs, or exactly-once guarantees",
        "Inferring absent versions, server state, missing history, semantic equivalence, or market uniqueness"
      ],
      "capabilities": [
        "Derived/source distinction and exact digest/type checks across edges",
        "Transitive ancestor constraints, roots and longest chain depth on valid graphs",
        "Supplied declarations only; advisoryOnly=true; authorizationGranted=false; execution=false; externalRequests=0"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "findings": 200,
        "artifacts": 128,
        "parentsPerArtifact": 16,
        "targets": 32,
        "ancestorsPerConstraint": 32
      },
      "related": [
        "artifact-manifest-check",
        "workflow-dag-analyze"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "VERSION_LIMIT",
        "ITEM_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/artifact-lineage-check",
      "contract": "/reference/services/artifact-lineage-check.json",
      "schemas": {
        "input": "/reference/schemas/artifact-lineage-check.input.json",
        "output": "/reference/schemas/artifact-lineage-check.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "numeric-rounding-check",
      "name": "Exact numeric rounding check",
      "description": "Check explicitly supplied decimal claims against five declared decimal-place rounding rules. Returns exact expected text, tie evidence and rational errors; no number extraction, unit inference or fact verification.",
      "category": "data-assurance",
      "intents": [
        "Check rounding consistency in an agent-generated numeric report",
        "Audit exact decimal tie handling without binary floating-point artifacts"
      ],
      "whenToUse": [
        "Check rounding consistency in an agent-generated numeric report",
        "Audit exact decimal tie handling without binary floating-point artifacts"
      ],
      "whenNotToUse": [
        "Extracting facts or judging truth, semantic correctness, evidence authenticity, causal effects, or production readiness",
        "Fetching data, executing models or user code, changing datasets, authorizing actions, or contacting live services",
        "Inferring population quality, statistical significance, uncertainty intervals, or generalization from a supplied sample"
      ],
      "capabilities": [
        "exact-decimal-rounding-v1 profile",
        "Exact decimal strings; half-even, half-away-from-zero, toward-zero, floor and ceiling",
        "Claim equality is numeric, not formatting equality; rational signed discrepancy and absolute rounding error",
        "Networkless supplied-evidence computation; externalRequests=0; semanticValidityVerified=false"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "findings": 200,
        "decimalIntegerDigits": 24,
        "decimalFractionDigits": 18,
        "rationalDigits": 2048,
        "claims": 200,
        "decimalPlaces": "0–18",
        "claimedIntegerDigits": 25
      },
      "related": [
        "units-convert",
        "interval-analyze"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_RULE",
        "DUPLICATE_ID",
        "UNKNOWN_CRITERION",
        "RECORD_LIMIT",
        "NUMERIC_COMPLEXITY"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/numeric-rounding-check",
      "contract": "/reference/services/numeric-rounding-check.json",
      "schemas": {
        "input": "/reference/schemas/numeric-rounding-check.input.json",
        "output": "/reference/schemas/numeric-rounding-check.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "rubric-score-aggregate",
      "name": "Missingness-aware rubric aggregation",
      "description": "Aggregate supplied weighted rubric scores with exact normalized fractions and conservative lower/upper bounds for missing ratings. Optional threshold reports certain pass, certain fail or unknown; does not assign ratings or renormalize away missing criteria.",
      "category": "data-assurance",
      "intents": [
        "Aggregate an explicit agent evaluation rubric without hiding missing scores",
        "Determine whether omitted rubric ratings can change a supplied pass threshold"
      ],
      "whenToUse": [
        "Aggregate an explicit agent evaluation rubric without hiding missing scores",
        "Determine whether omitted rubric ratings can change a supplied pass threshold"
      ],
      "whenNotToUse": [
        "Extracting facts or judging truth, semantic correctness, evidence authenticity, causal effects, or production readiness",
        "Fetching data, executing models or user code, changing datasets, authorizing actions, or contacting live services",
        "Inferring population quality, statistical significance, uncertainty intervals, or generalization from a supplied sample"
      ],
      "capabilities": [
        "bounded-rubric-aggregation-v1 profile",
        "Positive exact weights; score/maxScore normalization; full-weight denominator",
        "Missing scores span zero to maximum; exact score remains null until complete",
        "Networkless supplied-evidence computation; externalRequests=0; semanticValidityVerified=false"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "findings": 200,
        "decimalIntegerDigits": 24,
        "decimalFractionDigits": 18,
        "rationalDigits": 2048,
        "criteria": 100,
        "ratings": 100,
        "maxScore": "positive safe integer at most 1,000,000"
      },
      "related": [
        "classification-evaluate",
        "metric-regression-check"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_RULE",
        "DUPLICATE_ID",
        "UNKNOWN_CRITERION",
        "RECORD_LIMIT",
        "NUMERIC_COMPLEXITY"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/rubric-score-aggregate",
      "contract": "/reference/services/rubric-score-aggregate.json",
      "schemas": {
        "input": "/reference/schemas/rubric-score-aggregate.input.json",
        "output": "/reference/schemas/rubric-score-aggregate.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "dataset-split-audit",
      "name": "Declared dataset split overlap audit",
      "description": "Find exact item ID, group ID and supplied SHA-256 fingerprint overlaps across caller-declared dataset partitions. Reports missing identity coverage and capped locations; no data fetching, hash verification, near-duplicate detection or proof of leakage-free evaluation.",
      "category": "data-assurance",
      "intents": [
        "Find exact train validation test overlap from supplied IDs and group keys",
        "Audit group leakage candidates before an agent evaluation run"
      ],
      "whenToUse": [
        "Find exact train validation test overlap from supplied IDs and group keys",
        "Audit group leakage candidates before an agent evaluation run"
      ],
      "whenNotToUse": [
        "Extracting facts or judging truth, semantic correctness, evidence authenticity, causal effects, or production readiness",
        "Fetching data, executing models or user code, changing datasets, authorizing actions, or contacting live services",
        "Inferring population quality, statistical significance, uncertainty intervals, or generalization from a supplied sample"
      ],
      "capabilities": [
        "declared-dataset-split-v1 profile",
        "Exact case-sensitive item/group/fingerprint equality across named partitions",
        "Counts retain full bounded evidence totals; at most 200 evidence groups and eight locations each",
        "Networkless supplied-evidence computation; externalRequests=0; semanticValidityVerified=false"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "findings": 200,
        "decimalIntegerDigits": 24,
        "decimalFractionDigits": 18,
        "rationalDigits": 2048,
        "partitions": 16,
        "totalRecords": 1000,
        "locationsPerEvidence": 8
      },
      "related": [
        "record-relations",
        "record-profile"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_RULE",
        "DUPLICATE_ID",
        "UNKNOWN_CRITERION",
        "RECORD_LIMIT",
        "NUMERIC_COMPLEXITY"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/dataset-split-audit",
      "contract": "/reference/services/dataset-split-audit.json",
      "schemas": {
        "input": "/reference/schemas/dataset-split-audit.input.json",
        "output": "/reference/schemas/dataset-split-audit.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "metric-regression-check",
      "name": "Exact metric regression budget check",
      "description": "Compare supplied baseline/candidate decimal measurements against explicit directional absolute and relative regression budgets. Missing values stay unknown; every configured budget must pass. No benchmarking, unit conversion, noise model or significance test.",
      "category": "data-assurance",
      "intents": [
        "Gate supplied agent benchmark changes against explicit regression budgets",
        "Compare baseline and candidate measurements while preserving missing evidence"
      ],
      "whenToUse": [
        "Gate supplied agent benchmark changes against explicit regression budgets",
        "Compare baseline and candidate measurements while preserving missing evidence"
      ],
      "whenNotToUse": [
        "Extracting facts or judging truth, semantic correctness, evidence authenticity, causal effects, or production readiness",
        "Fetching data, executing models or user code, changing datasets, authorizing actions, or contacting live services",
        "Inferring population quality, statistical significance, uncertainty intervals, or generalization from a supplied sample"
      ],
      "capabilities": [
        "exact-metric-regression-v1 profile",
        "All configured budgets must hold; relative limit is abs(baseline) times ratio",
        "Zero baseline yields null relative ratio and zero relative allowance; improvements have zero degradation",
        "Networkless supplied-evidence computation; externalRequests=0; semanticValidityVerified=false"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "findings": 200,
        "decimalIntegerDigits": 24,
        "decimalFractionDigits": 18,
        "rationalDigits": 2048,
        "metrics": 200
      },
      "related": [
        "rubric-score-aggregate",
        "replay-divergence-check"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_RULE",
        "DUPLICATE_ID",
        "UNKNOWN_CRITERION",
        "RECORD_LIMIT",
        "NUMERIC_COMPLEXITY"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/metric-regression-check",
      "contract": "/reference/services/metric-regression-check.json",
      "schemas": {
        "input": "/reference/schemas/metric-regression-check.input.json",
        "output": "/reference/schemas/metric-regression-check.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "prediction-calibration-check",
      "name": "Supplied binary probability calibration",
      "description": "Compute exact binary Brier score and uniform-bin calibration diagnostics from supplied probabilities and nullable Boolean outcomes. Reports label coverage and per-row errors; no learned calibration, confidence intervals, forecast validity or population-quality claim.",
      "category": "data-assurance",
      "intents": [
        "Evaluate supplied agent confidence probabilities against binary outcomes",
        "Inspect Brier error and reliability bins without dropping unknown labels silently"
      ],
      "whenToUse": [
        "Evaluate supplied agent confidence probabilities against binary outcomes",
        "Inspect Brier error and reliability bins without dropping unknown labels silently"
      ],
      "whenNotToUse": [
        "Extracting facts or judging truth, semantic correctness, evidence authenticity, causal effects, or production readiness",
        "Fetching data, executing models or user code, changing datasets, authorizing actions, or contacting live services",
        "Inferring population quality, statistical significance, uncertainty intervals, or generalization from a supplied sample"
      ],
      "capabilities": [
        "binary-probability-calibration-v1 profile",
        "Binary Brier mean (p-y)^2, count-weighted absolute bin gap and maximum nonempty-bin gap",
        "Uniform [lower,upper) bins with final upper inclusive; labeled-only metrics and explicit unknown counts",
        "Networkless supplied-evidence computation; externalRequests=0; semanticValidityVerified=false"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "findings": 200,
        "decimalIntegerDigits": 24,
        "decimalFractionDigits": 18,
        "rationalDigits": 2048,
        "predictions": 1000,
        "binCount": "1–20"
      },
      "related": [
        "classification-evaluate",
        "metric-regression-check"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_RULE",
        "DUPLICATE_ID",
        "UNKNOWN_CRITERION",
        "RECORD_LIMIT",
        "NUMERIC_COMPLEXITY"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/prediction-calibration-check",
      "contract": "/reference/services/prediction-calibration-check.json",
      "schemas": {
        "input": "/reference/schemas/prediction-calibration-check.input.json",
        "output": "/reference/schemas/prediction-calibration-check.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "record-profile",
      "name": "Record field observations",
      "description": "Profile caller-selected JSON Pointer fields across up to 500 records: missing/null/type counts, typed distinct values, numeric bounds/median, UTF-16 string lengths and bounded duplicate-row evidence. Observations only; no inferred schema guarantee or population extrapolation.",
      "category": "data-assurance",
      "intents": [
        "profile missing null fields in JSON records",
        "inspect dataset types cardinality duplicates before validation",
        "measure field completeness and mixed types"
      ],
      "whenToUse": [
        "profile missing null fields in JSON records",
        "inspect dataset types cardinality duplicates before validation",
        "measure field completeness and mixed types"
      ],
      "whenNotToUse": [
        "Infer a guaranteed schema or population distribution",
        "Fuzzy entity matching or CSV file comparison"
      ],
      "capabilities": [
        "JSON Pointer field observations",
        "missing/null separation",
        "typed structural cardinality",
        "duplicate evidence",
        "numeric median"
      ],
      "related": [
        "record-constraints",
        "record-relations"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "evidence": 200,
        "keyWorkBytes": 3000000,
        "matchingSteps": 2000000,
        "records": 500,
        "fields": 32,
        "duplicateGroupsPerField": 5
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "UNSAFE_KEY",
        "INVALID_NUMBER",
        "INVALID_POINTER",
        "DUPLICATE_ID",
        "DUPLICATE_FIELD",
        "INVALID_RULE",
        "KEY_WORK_LIMIT",
        "LABEL_LIMIT",
        "UNJUDGED_DOCUMENT",
        "INVALID_SPAN",
        "DUPLICATE_SPAN",
        "INVALID_UNICODE",
        "MATCHING_LIMIT",
        "INVALID_CADENCE",
        "INVALID_INTERVAL",
        "NUMERIC_OVERFLOW"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/record-profile",
      "contract": "/reference/services/record-profile.json",
      "schemas": {
        "input": "/reference/schemas/record-profile.input.json",
        "output": "/reference/schemas/record-profile.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "record-constraints",
      "name": "Declarative record constraints",
      "description": "Evaluate up to 40 bounded rules across 500 supplied records: presence, JSON type, inclusive numeric bounds, string/array length, typed allowed values and composite uniqueness. Returns per-rule counts and row-addressed violations. No expressions, regex or automatic repair.",
      "category": "data-assurance",
      "intents": [
        "validate dataset quality rules and composite uniqueness",
        "find records violating required fields ranges enums lengths",
        "return machine-readable row violations for data quality gates"
      ],
      "whenToUse": [
        "validate dataset quality rules and composite uniqueness",
        "find records violating required fields ranges enums lengths",
        "return machine-readable row violations for data quality gates"
      ],
      "whenNotToUse": [
        "Arbitrary JSON Schema conformance",
        "Evaluate code SQL regex or repair data automatically"
      ],
      "capabilities": [
        "declarative data quality rules",
        "composite unique keys",
        "row-level violation evidence",
        "complete counts with bounded findings"
      ],
      "related": [
        "record-profile",
        "record-relations",
        "json-schema-check"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "evidence": 200,
        "keyWorkBytes": 3000000,
        "matchingSteps": 2000000,
        "records": 500,
        "rules": 40,
        "compositeFields": 5
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "UNSAFE_KEY",
        "INVALID_NUMBER",
        "INVALID_POINTER",
        "DUPLICATE_ID",
        "DUPLICATE_FIELD",
        "INVALID_RULE",
        "KEY_WORK_LIMIT",
        "LABEL_LIMIT",
        "UNJUDGED_DOCUMENT",
        "INVALID_SPAN",
        "DUPLICATE_SPAN",
        "INVALID_UNICODE",
        "MATCHING_LIMIT",
        "INVALID_CADENCE",
        "INVALID_INTERVAL",
        "NUMERIC_OVERFLOW"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/record-constraints",
      "contract": "/reference/services/record-constraints.json",
      "schemas": {
        "input": "/reference/schemas/record-constraints.input.json",
        "output": "/reference/schemas/record-constraints.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "record-relations",
      "name": "Record referential integrity",
      "description": "Check typed scalar composite foreign keys between supplied parent and child records. Reports orphan, invalid and ambiguous child links, duplicate parent keys, optional null-child skipping and unreferenced parent rows. No database connection, coercion or guessed matches.",
      "category": "data-assurance",
      "intents": [
        "validate foreign keys between supplied JSON tables",
        "find orphan child records and ambiguous duplicate parent keys",
        "check composite referential integrity without a database"
      ],
      "whenToUse": [
        "validate foreign keys between supplied JSON tables",
        "find orphan child records and ambiguous duplicate parent keys",
        "check composite referential integrity without a database"
      ],
      "whenNotToUse": [
        "Query or mutate a live database",
        "Fuzzy entity resolution or automatic record joins"
      ],
      "capabilities": [
        "typed scalar composite keys",
        "orphan and ambiguity evidence",
        "null child policy",
        "unreferenced parent inventory"
      ],
      "related": [
        "record-constraints",
        "record-profile"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "evidence": 200,
        "keyWorkBytes": 3000000,
        "matchingSteps": 2000000,
        "parents": 500,
        "children": 500,
        "compositeFields": 5,
        "retainedParentMatchesPerChild": 10
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "UNSAFE_KEY",
        "INVALID_NUMBER",
        "INVALID_POINTER",
        "DUPLICATE_ID",
        "DUPLICATE_FIELD",
        "INVALID_RULE",
        "KEY_WORK_LIMIT",
        "LABEL_LIMIT",
        "UNJUDGED_DOCUMENT",
        "INVALID_SPAN",
        "DUPLICATE_SPAN",
        "INVALID_UNICODE",
        "MATCHING_LIMIT",
        "INVALID_CADENCE",
        "INVALID_INTERVAL",
        "NUMERIC_OVERFLOW"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/record-relations",
      "contract": "/reference/services/record-relations.json",
      "schemas": {
        "input": "/reference/schemas/record-relations.input.json",
        "output": "/reference/schemas/record-relations.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "classification-evaluate",
      "name": "Classification evaluation evidence",
      "description": "Evaluate up to 1,000 caller-supplied single-label expected/predicted pairs: confusion matrix, per-label precision/recall/F1/support, macro/weighted/micro summaries, balanced accuracy and mismatch evidence. Undefined per-label values use zero with explicit flags; labels are not verified ground truth.",
      "category": "data-assurance",
      "intents": [
        "calculate confusion matrix precision recall f1 from evaluation labels",
        "score agent routing classification predictions against supplied labels",
        "inspect macro micro weighted metrics and error samples"
      ],
      "whenToUse": [
        "calculate confusion matrix precision recall f1 from evaluation labels",
        "score agent routing classification predictions against supplied labels",
        "inspect macro micro weighted metrics and error samples"
      ],
      "whenNotToUse": [
        "Train or execute a model or infer factual ground truth",
        "Multilabel classification probability calibration or deployment certification"
      ],
      "capabilities": [
        "single-label classification metrics",
        "confusion matrix evidence",
        "undefined metric flags",
        "bounded mismatch samples"
      ],
      "related": [
        "ranking-evaluate",
        "span-evaluate"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "evidence": 200,
        "keyWorkBytes": 3000000,
        "matchingSteps": 2000000,
        "samples": 1000,
        "labels": 50
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "UNSAFE_KEY",
        "INVALID_NUMBER",
        "INVALID_POINTER",
        "DUPLICATE_ID",
        "DUPLICATE_FIELD",
        "INVALID_RULE",
        "KEY_WORK_LIMIT",
        "LABEL_LIMIT",
        "UNJUDGED_DOCUMENT",
        "INVALID_SPAN",
        "DUPLICATE_SPAN",
        "INVALID_UNICODE",
        "MATCHING_LIMIT",
        "INVALID_CADENCE",
        "INVALID_INTERVAL",
        "NUMERIC_OVERFLOW"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/classification-evaluate",
      "contract": "/reference/services/classification-evaluate.json",
      "schemas": {
        "input": "/reference/schemas/classification-evaluate.input.json",
        "output": "/reference/schemas/classification-evaluate.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "ranking-evaluate",
      "name": "Supplied ranking evaluation",
      "description": "Score ranked document IDs against caller-supplied graded judgments for up to 50 queries: precision/recall, reciprocal rank, truncated average precision and NDCG at k. Explicit gain, unjudged and zero-denominator conventions; evidence lists ranked judgments and missed relevant IDs. No search or relevance inference.",
      "category": "data-assurance",
      "intents": [
        "evaluate retrieval ranking ndcg map mrr precision recall at k",
        "score search results against supplied relevance judgments",
        "compare RAG retrieval quality using judged document ids"
      ],
      "whenToUse": [
        "evaluate retrieval ranking ndcg map mrr precision recall at k",
        "score search results against supplied relevance judgments",
        "compare RAG retrieval quality using judged document ids"
      ],
      "whenNotToUse": [
        "Search the web or determine semantic document relevance",
        "Claim benchmark completeness from partial judgments"
      ],
      "capabilities": [
        "graded ranking metrics",
        "explicit unjudged handling",
        "linear or exponential gain",
        "query-level metric evidence"
      ],
      "related": [
        "classification-evaluate",
        "span-evaluate"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "evidence": 200,
        "keyWorkBytes": 3000000,
        "matchingSteps": 2000000,
        "queries": 50,
        "retrievedPerQuery": 100,
        "judgmentsPerQuery": 100,
        "maximumK": 100
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "UNSAFE_KEY",
        "INVALID_NUMBER",
        "INVALID_POINTER",
        "DUPLICATE_ID",
        "DUPLICATE_FIELD",
        "INVALID_RULE",
        "KEY_WORK_LIMIT",
        "LABEL_LIMIT",
        "UNJUDGED_DOCUMENT",
        "INVALID_SPAN",
        "DUPLICATE_SPAN",
        "INVALID_UNICODE",
        "MATCHING_LIMIT",
        "INVALID_CADENCE",
        "INVALID_INTERVAL",
        "NUMERIC_OVERFLOW"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/ranking-evaluate",
      "contract": "/reference/services/ranking-evaluate.json",
      "schemas": {
        "input": "/reference/schemas/ranking-evaluate.input.json",
        "output": "/reference/schemas/ranking-evaluate.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "span-evaluate",
      "name": "Annotation span evaluation",
      "description": "Evaluate supplied labeled text spans with exact boundaries or thresholded intersection-over-union. Bounded deterministic maximum-cardinality one-to-one matching returns precision/recall/F1, matches and unmatched IDs. UTF-16 half-open offsets are validated; labels and text meaning are not judged.",
      "category": "data-assurance",
      "intents": [
        "evaluate named entity extraction annotation spans",
        "match predicted and reference text spans using exact offsets or iou",
        "calculate one-to-one span precision recall and unmatched evidence"
      ],
      "whenToUse": [
        "evaluate named entity extraction annotation spans",
        "match predicted and reference text spans using exact offsets or iou",
        "calculate one-to-one span precision recall and unmatched evidence"
      ],
      "whenNotToUse": [
        "Semantic factuality or entailment checking",
        "Tokenization byte offsets or globally maximum total IoU matching"
      ],
      "capabilities": [
        "exact or overlap span evaluation",
        "maximum-cardinality matching",
        "surrogate-safe UTF-16 boundaries",
        "per-label metrics and unmatched evidence"
      ],
      "related": [
        "classification-evaluate",
        "evidence-quote-check"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "evidence": 200,
        "keyWorkBytes": 3000000,
        "matchingSteps": 2000000,
        "textUtf16Units": 50000,
        "references": 100,
        "predictions": 100
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "UNSAFE_KEY",
        "INVALID_NUMBER",
        "INVALID_POINTER",
        "DUPLICATE_ID",
        "DUPLICATE_FIELD",
        "INVALID_RULE",
        "KEY_WORK_LIMIT",
        "LABEL_LIMIT",
        "UNJUDGED_DOCUMENT",
        "INVALID_SPAN",
        "DUPLICATE_SPAN",
        "INVALID_UNICODE",
        "MATCHING_LIMIT",
        "INVALID_CADENCE",
        "INVALID_INTERVAL",
        "NUMERIC_OVERFLOW"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/span-evaluate",
      "contract": "/reference/services/span-evaluate.json",
      "schemas": {
        "input": "/reference/schemas/span-evaluate.input.json",
        "output": "/reference/schemas/span-evaluate.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "time-series-inspect",
      "name": "Time-series cadence inspection",
      "description": "Inspect up to 1,000 supplied timestamp/value points for ordering, duplicate timestamps, null values and optional cadence deviations. Returns bounded interval evidence, aligned missing-point estimates and descriptive numeric summaries. No clock, interpolation, anomaly prediction or forecasting.",
      "category": "data-assurance",
      "intents": [
        "inspect time series cadence gaps duplicate timestamps and null readings",
        "validate chronological telemetry points before analysis",
        "find irregular intervals and missing observations in supplied data"
      ],
      "whenToUse": [
        "inspect time series cadence gaps duplicate timestamps and null readings",
        "validate chronological telemetry points before analysis",
        "find irregular intervals and missing observations in supplied data"
      ],
      "whenNotToUse": [
        "Forecast prices predict anomalies or make trading decisions",
        "Fetch live telemetry or infer wall-clock freshness"
      ],
      "capabilities": [
        "chronological ordering evidence",
        "duplicate timestamp groups",
        "cadence deviation evidence",
        "bounded descriptive summaries"
      ],
      "related": [
        "interval-analyze",
        "timestamp-convert"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "evidence": 200,
        "keyWorkBytes": 3000000,
        "matchingSteps": 2000000,
        "points": 1000,
        "timestampUnit": "Unix milliseconds",
        "numericAbsoluteMaximum": 1e+100
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "UNSAFE_KEY",
        "INVALID_NUMBER",
        "INVALID_POINTER",
        "DUPLICATE_ID",
        "DUPLICATE_FIELD",
        "INVALID_RULE",
        "KEY_WORK_LIMIT",
        "LABEL_LIMIT",
        "UNJUDGED_DOCUMENT",
        "INVALID_SPAN",
        "DUPLICATE_SPAN",
        "INVALID_UNICODE",
        "MATCHING_LIMIT",
        "INVALID_CADENCE",
        "INVALID_INTERVAL",
        "NUMERIC_OVERFLOW"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/time-series-inspect",
      "contract": "/reference/services/time-series-inspect.json",
      "schemas": {
        "input": "/reference/schemas/time-series-inspect.input.json",
        "output": "/reference/schemas/time-series-inspect.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "interval-analyze",
      "name": "Interval coverage and overlaps",
      "description": "Analyze up to 300 integer half-open intervals inside an explicit window: clipped union, gaps, covered/multiply-covered duration, concurrency segments and overlap-pair evidence. Touching endpoints do not overlap. No calendar access, reservations or scheduling actions.",
      "category": "data-assurance",
      "intents": [
        "calculate interval coverage union gaps overlaps and concurrency",
        "inspect execution windows for overlaps and uncovered time",
        "find coverage gaps in supplied numeric ranges"
      ],
      "whenToUse": [
        "calculate interval coverage union gaps overlaps and concurrency",
        "inspect execution windows for overlaps and uncovered time",
        "find coverage gaps in supplied numeric ranges"
      ],
      "whenNotToUse": [
        "Book meetings mutate calendars or schedule execution",
        "Interpret timezone recurrences or continuous noninteger geometry"
      ],
      "capabilities": [
        "half-open interval union",
        "window clipping and gap analysis",
        "maximum concurrency",
        "complete overlap counts with bounded evidence"
      ],
      "related": [
        "time-series-inspect",
        "workflow-dag-analyze"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "evidence": 200,
        "keyWorkBytes": 3000000,
        "matchingSteps": 2000000,
        "intervals": 300,
        "endpointAbsoluteMaximum": 1000000000000
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "UNSAFE_KEY",
        "INVALID_NUMBER",
        "INVALID_POINTER",
        "DUPLICATE_ID",
        "DUPLICATE_FIELD",
        "INVALID_RULE",
        "KEY_WORK_LIMIT",
        "LABEL_LIMIT",
        "UNJUDGED_DOCUMENT",
        "INVALID_SPAN",
        "DUPLICATE_SPAN",
        "INVALID_UNICODE",
        "MATCHING_LIMIT",
        "INVALID_CADENCE",
        "INVALID_INTERVAL",
        "NUMERIC_OVERFLOW"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/interval-analyze",
      "contract": "/reference/services/interval-analyze.json",
      "schemas": {
        "input": "/reference/schemas/interval-analyze.input.json",
        "output": "/reference/schemas/interval-analyze.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "openapi-response-check",
      "name": "OpenAPI Response Contract Check",
      "description": "Check one supplied OpenAPI 3.1 inline response against status, explicit JSON media type, parsed JSON body and deserialized headers. Exact status precedes class and default; unsupported references and schemas are explicit. Not full OpenAPI validation, wire decoding, authentication or request execution.",
      "category": "protocol-assurance",
      "intents": [
        "Validate supplied API response body and response headers against OpenAPI",
        "Select exact status, response class or default before checking JSON output"
      ],
      "whenToUse": [
        "Validate supplied API response body and response headers against OpenAPI",
        "Select exact status, response class or default before checking JSON output"
      ],
      "whenNotToUse": [
        "Full OpenAPI conformance, reference resolution, parameter serialization, wire parsing or live API tests",
        "Proving absence of body is an error solely because content is documented"
      ],
      "capabilities": [
        "Exact status > class > default; exact media type > type wildcard > global wildcard",
        "Reuses the bounded safe-json-schema-subset-v1 evaluator",
        "Source: https://spec.openapis.org/oas/v3.1.1.html#responses-object"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "findings": 150,
        "findingJsonBytes": 300000,
        "declaredHeaders": 40,
        "schemaEvaluationsPerValue": 50000
      },
      "related": [
        "openapi-request-check",
        "openapi-lint",
        "json-schema-check"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_TEMPLATE",
        "UNSUPPORTED_TEMPLATE",
        "INVALID_HEADER",
        "INVALID_ETAG",
        "INVALID_REPRESENTATION",
        "OPERATION_NOT_FOUND",
        "LINE_LIMIT",
        "EVENT_LIMIT",
        "LINK_LIMIT"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/openapi-response-check",
      "contract": "/reference/services/openapi-response-check.json",
      "schemas": {
        "input": "/reference/schemas/openapi-response-check.input.json",
        "output": "/reference/schemas/openapi-response-check.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "mcp-result-check",
      "name": "MCP Tool Result Check",
      "description": "Inspect a supplied MCP CallToolResult text/structured-content envelope and optional object-root output schema. Separates tool execution errors, missing structured output, invalid text blocks and unsupported content/schema features. Does not invoke tools or prove MCP interoperability, provenance, or trust.",
      "category": "protocol-assurance",
      "intents": [
        "Validate MCP tool result structuredContent against outputSchema",
        "Distinguish tool execution error from malformed tool result envelope"
      ],
      "whenToUse": [
        "Validate MCP tool result structuredContent against outputSchema",
        "Distinguish tool execution error from malformed tool result envelope"
      ],
      "whenNotToUse": [
        "MCP lifecycle, JSON-RPC correlation, binary/media/resources, annotation validation or security verdicts",
        "Full JSON Schema or trusting tool output because its shape passes"
      ],
      "capabilities": [
        "Text and structured-content subset with explicit unsupported coverage",
        "Source: https://modelcontextprotocol.io/specification/2025-11-25/server/tools"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "findings": 150,
        "findingJsonBytes": 300000,
        "contentBlocks": 200,
        "schemaEvaluations": 50000
      },
      "related": [
        "mcp-tool-lint",
        "jsonrpc-exchange-check",
        "json-schema-check"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_TEMPLATE",
        "UNSUPPORTED_TEMPLATE",
        "INVALID_HEADER",
        "INVALID_ETAG",
        "INVALID_REPRESENTATION",
        "OPERATION_NOT_FOUND",
        "LINE_LIMIT",
        "EVENT_LIMIT",
        "LINK_LIMIT"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/mcp-result-check",
      "contract": "/reference/services/mcp-result-check.json",
      "schemas": {
        "input": "/reference/schemas/mcp-result-check.input.json",
        "output": "/reference/schemas/mcp-result-check.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "sse-stream-parse",
      "name": "SSE Snapshot Event Parser",
      "description": "Parse a completed, already-decoded server-sent-event text snapshot into dispatched events, committed last-event ID, exact decimal retry milliseconds and ignored-field count. Handles CR/LF/CRLF, one leading BOM, blank dispatch and incomplete EOF discard. No live connection, resumption or provider-specific event semantics.",
      "category": "protocol-assurance",
      "intents": [
        "Parse saved SSE event stream and inspect last event ID",
        "Diagnose missing events caused by incomplete final blank line"
      ],
      "whenToUse": [
        "Parse saved SSE event stream and inspect last event ID",
        "Diagnose missing events caused by incomplete final blank line"
      ],
      "whenNotToUse": [
        "Opening an SSE stream, joining arbitrary incremental chunks or retrying connections",
        "Raw-byte UTF-8 decoding, provider completion markers or JSON-RPC protocol validation"
      ],
      "capabilities": [
        "Committed ID is distinct from an EOF-only pending ID buffer",
        "Retry decimal string avoids unsafe integer rounding",
        "Source: https://html.spec.whatwg.org/multipage/server-sent-events.html#parsing-an-event-stream"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "findings": 150,
        "findingJsonBytes": 300000,
        "lines": 5000,
        "events": 500,
        "eventJsonBytes": 300000
      },
      "related": [
        "jsonrpc-exchange-check",
        "ndjson-inspect",
        "retry-schedule-plan"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_TEMPLATE",
        "UNSUPPORTED_TEMPLATE",
        "INVALID_HEADER",
        "INVALID_ETAG",
        "INVALID_REPRESENTATION",
        "OPERATION_NOT_FOUND",
        "LINE_LIMIT",
        "EVENT_LIMIT",
        "LINK_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/sse-stream-parse",
      "contract": "/reference/services/sse-stream-parse.json",
      "schemas": {
        "input": "/reference/schemas/sse-stream-parse.input.json",
        "output": "/reference/schemas/sse-stream-parse.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "ndjson-inspect",
      "name": "NDJSON Artifact Inspector",
      "description": "Inspect supplied newline-delimited JSON text into parsed records with line numbers and exact UTF-16 spans, bounded per-line diagnostics, explicit empty-line policy and optional final-newline requirement. Rejects bare CR, unsafe keys, nonfinite numbers and excessive structure; no lossless number or duplicate-key preservation.",
      "category": "protocol-assurance",
      "intents": [
        "Validate JSON Lines or NDJSON batch artifacts with exact failing line numbers",
        "Parse newline JSON tool logs while keeping source offsets and malformed-line diagnostics"
      ],
      "whenToUse": [
        "Validate JSON Lines or NDJSON batch artifacts with exact failing line numbers",
        "Parse newline JSON tool logs while keeping source offsets and malformed-line diagnostics"
      ],
      "whenNotToUse": [
        "Streaming network ingestion, arbitrary log formats or multiline JSON documents",
        "Lossless large numbers, duplicate-key detection or implicit repair"
      ],
      "capabilities": [
        "LF and CRLF framing; strict NDJSON final newline enabled by default",
        "Source: https://github.com/ndjson/ndjson-spec"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "findings": 150,
        "findingJsonBytes": 300000,
        "lines": 500,
        "aggregateParsedNodes": 12000
      },
      "related": [
        "json-schema-check",
        "record-profile",
        "sse-stream-parse"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_TEMPLATE",
        "UNSUPPORTED_TEMPLATE",
        "INVALID_HEADER",
        "INVALID_ETAG",
        "INVALID_REPRESENTATION",
        "OPERATION_NOT_FOUND",
        "LINE_LIMIT",
        "EVENT_LIMIT",
        "LINK_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/ndjson-inspect",
      "contract": "/reference/services/ndjson-inspect.json",
      "schemas": {
        "input": "/reference/schemas/ndjson-inspect.input.json",
        "output": "/reference/schemas/ndjson-inspect.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "uri-template-expand",
      "name": "Scalar URI Template Expansion",
      "description": "Expand RFC6570 scalar string variables with simple, reserved, fragment, label, path, path-parameter and query operators. Explicitly rejects prefix/explode modifiers, lists/maps and non-ASCII variable names/literals. Missing/null variables are omitted with an audit list; no URL fetch, safety verdict or encoding guesswork.",
      "category": "protocol-assurance",
      "intents": [
        "Expand scalar RFC6570 API URL templates without accidental slash or query injection",
        "Construct path and query expressions with explicit reserved expansion"
      ],
      "whenToUse": [
        "Expand scalar RFC6570 API URL templates without accidental slash or query injection",
        "Construct path and query expressions with explicit reserved expansion"
      ],
      "whenNotToUse": [
        "Full RFC6570 level 4, prefix/explode/list/map expansions or arbitrary Unicode template literals",
        "URL authorization, host allowlisting, SSRF safety or fetching"
      ],
      "capabilities": [
        "All eight operators for scalar strings; explicit null/undefined omission",
        "Source: https://www.rfc-editor.org/rfc/rfc6570.html"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "findings": 150,
        "findingJsonBytes": 300000,
        "variables": 100,
        "expressions": 100,
        "templateCharacters": 10000,
        "expandedCharacters": 200000
      },
      "related": [
        "url-inspect",
        "querystring-convert",
        "openapi-request-check"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_TEMPLATE",
        "UNSUPPORTED_TEMPLATE",
        "INVALID_HEADER",
        "INVALID_ETAG",
        "INVALID_REPRESENTATION",
        "OPERATION_NOT_FOUND",
        "LINE_LIMIT",
        "EVENT_LIMIT",
        "LINK_LIMIT"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/uri-template-expand",
      "contract": "/reference/services/uri-template-expand.json",
      "schemas": {
        "input": "/reference/schemas/uri-template-expand.input.json",
        "output": "/reference/schemas/uri-template-expand.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "cloudevents-envelope-check",
      "name": "CloudEvents JSON Envelope Check",
      "description": "Inspect one structured CloudEvents 1.0 JSON artifact for required attributes, string restrictions, time/calendar profile, data/data_base64 conflicts, canonical Base64 and primary extension mappings. URI checks are ASCII lexical only. No webhook signatures, transport binding, extension semantics or event authenticity checks.",
      "category": "protocol-assurance",
      "intents": [
        "Validate a supplied CloudEvents structured webhook envelope before ingestion",
        "Detect conflicting CloudEvents payload modes and invalid extension attributes"
      ],
      "whenToUse": [
        "Validate a supplied CloudEvents structured webhook envelope before ingestion",
        "Detect conflicting CloudEvents payload modes and invalid extension attributes"
      ],
      "whenNotToUse": [
        "Authenticating webhook senders, binary HTTP bindings, schema fetching or complete URI conformance",
        "Leap-second validation or secondary structured extension mappings"
      ],
      "capabilities": [
        "Null attributes mean unset; explicit null data remains data",
        "Source: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/formats/json-format.md"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "findings": 150,
        "findingJsonBytes": 300000,
        "events": 1,
        "extensionIntegerMinimum": -2147483648,
        "extensionIntegerMaximum": 2147483647
      },
      "related": [
        "json-schema-check",
        "content-digest",
        "jsonrpc-exchange-check"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_TEMPLATE",
        "UNSUPPORTED_TEMPLATE",
        "INVALID_HEADER",
        "INVALID_ETAG",
        "INVALID_REPRESENTATION",
        "OPERATION_NOT_FOUND",
        "LINE_LIMIT",
        "EVENT_LIMIT",
        "LINK_LIMIT"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/cloudevents-envelope-check",
      "contract": "/reference/services/cloudevents-envelope-check.json",
      "schemas": {
        "input": "/reference/schemas/cloudevents-envelope-check.input.json",
        "output": "/reference/schemas/cloudevents-envelope-check.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "http-link-parse",
      "name": "HTTP Link Header Parser",
      "description": "Parse supplied HTTP Link field values with quote-aware commas, escaped quoted parameters, relations and anchor context. Preserves raw URI references/parameters and first-rel semantics; flags unsupported extended parameters. Does not resolve/fetch links, apply anchors, inspect live pagination or certify full RFC8288 conformance.",
      "category": "protocol-assurance",
      "intents": [
        "Extract pagination next and last relations from supplied HTTP Link headers",
        "Parse quoted comma parameters and detect anchor-dependent links"
      ],
      "whenToUse": [
        "Extract pagination next and last relations from supplied HTTP Link headers",
        "Parse quoted comma parameters and detect anchor-dependent links"
      ],
      "whenNotToUse": [
        "Following pagination links, URL resolution, link safety or decoding extended title parameters",
        "Treating an anchored link as if it belonged to the original response context"
      ],
      "capabilities": [
        "Raw target and anchor preserved with usableWithoutAnchor flag",
        "Source: https://www.rfc-editor.org/rfc/rfc8288.html"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "findings": 150,
        "findingJsonBytes": 300000,
        "headerFields": 20,
        "fieldCharacters": 16000,
        "links": 200,
        "parametersPerLink": 50
      },
      "related": [
        "http-headers-normalize",
        "url-inspect",
        "openapi-response-check"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_TEMPLATE",
        "UNSUPPORTED_TEMPLATE",
        "INVALID_HEADER",
        "INVALID_ETAG",
        "INVALID_REPRESENTATION",
        "OPERATION_NOT_FOUND",
        "LINE_LIMIT",
        "EVENT_LIMIT",
        "LINK_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/http-link-parse",
      "contract": "/reference/services/http-link-parse.json",
      "schemas": {
        "input": "/reference/schemas/http-link-parse.input.json",
        "output": "/reference/schemas/http-link-parse.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "http-etag-evaluate",
      "name": "HTTP Entity-Tag Preconditions",
      "description": "Evaluate supplied If-Match and If-None-Match against caller-asserted representation existence/current ETag, preserving strong/weak comparison and precondition order. Gives conditional 304/412 or proceed guidance only. Excludes date/range/freshness, duplicate-write exceptions, permission decisions and live requests.",
      "category": "protocol-assurance",
      "intents": [
        "Evaluate conditional HTTP ETag cache validation and optimistic concurrency preconditions",
        "Distinguish weak If-None-Match from strong If-Match and wildcard existence"
      ],
      "whenToUse": [
        "Evaluate conditional HTTP ETag cache validation and optimistic concurrency preconditions",
        "Distinguish weak If-None-Match from strong If-Match and wildcard existence"
      ],
      "whenNotToUse": [
        "Cache freshness, date validators, HTTP ranges, fetching resources or deciding replay authorization",
        "Guaranteed success status or inferring current representation from an ETag alone"
      ],
      "capabilities": [
        "Method tokens are case-sensitive; only uppercase GET/HEAD yield 304",
        "Source: https://www.rfc-editor.org/rfc/rfc9110.html#name-preconditions"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "findings": 150,
        "findingJsonBytes": 300000,
        "tagsPerField": 200,
        "fieldCharacters": 16000
      },
      "related": [
        "http-headers-normalize",
        "retry-schedule-plan",
        "openapi-request-check"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_TEMPLATE",
        "UNSUPPORTED_TEMPLATE",
        "INVALID_HEADER",
        "INVALID_ETAG",
        "INVALID_REPRESENTATION",
        "OPERATION_NOT_FOUND",
        "LINE_LIMIT",
        "EVENT_LIMIT",
        "LINK_LIMIT"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/http-etag-evaluate",
      "contract": "/reference/services/http-etag-evaluate.json",
      "schemas": {
        "input": "/reference/schemas/http-etag-evaluate.input.json",
        "output": "/reference/schemas/http-etag-evaluate.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "json-structural-diff",
      "name": "JSON Structural Patch Generator",
      "description": "Generate deterministic RFC 6902 add/remove/replace operations between supplied JSON values, with recursive object comparison, atomic arrays, escaped pointers and source/target digests. Does not infer moves or produce a minimal edit script.",
      "category": "document-assurance",
      "intents": [
        "Generate JSON Patch from two document versions",
        "Find changed nested fields and produce machine-applicable operations"
      ],
      "whenToUse": [
        "Generate JSON Patch from two document versions",
        "Find changed nested fields and produce machine-applicable operations"
      ],
      "whenNotToUse": [
        "Minimal array edit scripts, move detection, or arbitrary-precision JSON numbers",
        "Applying changes to remote files or APIs"
      ],
      "capabilities": [
        "RFC 6902 add/remove/replace output with RFC 6901 pointers",
        "Arrays replaced atomically; object property order ignored",
        "SHA-256 of deterministic sorted-object serialization; not RFC 8785"
      ],
      "related": [
        "json-patch",
        "json-three-way-merge"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 8000,
        "depth": 20,
        "findings": 200,
        "patchOperations": 500,
        "pointerCodeUnits": 2048,
        "patchPayloadBytes": 380000,
        "arrayPolicy": "atomic",
        "digestProfile": "sorted-object-json-utf8-v1"
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "UNSAFE_KEY",
        "INVALID_UNICODE",
        "INVALID_NUMBER",
        "PATCH_LIMIT",
        "POINTER_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/json-structural-diff",
      "contract": "/reference/services/json-structural-diff.json",
      "schemas": {
        "input": "/reference/schemas/json-structural-diff.input.json",
        "output": "/reference/schemas/json-structural-diff.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "json-three-way-merge",
      "name": "JSON Three-Way Merge",
      "description": "Merge two supplied JSON document branches against an explicit base. Recursively merges object members, treats arrays atomically, distinguishes deletion from null, and returns no merged document when any conflict exists. Does not resolve semantic or textual conflicts.",
      "category": "document-assurance",
      "intents": [
        "Merge independent JSON document edits against a common base",
        "Detect delete-versus-modify conflicts before combining agent results"
      ],
      "whenToUse": [
        "Merge independent JSON document edits against a common base",
        "Detect delete-versus-modify conflicts before combining agent results"
      ],
      "whenNotToUse": [
        "CRDT synchronization, line-based text merging or semantic conflict resolution",
        "Element-wise merging of arrays or applying partial conflict results"
      ],
      "capabilities": [
        "Presence-aware conflict snapshots and escaped JSON Pointer paths",
        "Disjoint additions to a new object can merge",
        "Any conflict makes merged and mergedSha256 null; clean distinguishes a legitimate null document"
      ],
      "related": [
        "json-structural-diff",
        "json-patch"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 8000,
        "depth": 20,
        "findings": 200,
        "conflicts": 200,
        "pointerCodeUnits": 2048,
        "conflictPayloadBytes": 380000,
        "arrayPolicy": "atomic",
        "conflictPolicy": "no-partial-result"
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "UNSAFE_KEY",
        "INVALID_UNICODE",
        "INVALID_NUMBER",
        "CONFLICT_LIMIT",
        "POINTER_LIMIT"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/json-three-way-merge",
      "contract": "/reference/services/json-three-way-merge.json",
      "schemas": {
        "input": "/reference/schemas/json-three-way-merge.input.json",
        "output": "/reference/schemas/json-three-way-merge.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "text-edits-apply",
      "name": "Checked Text Edit Application",
      "description": "Atomically apply explicit nonoverlapping UTF-16 text edits after exact expected-slice and optional SHA-256 checks. Returns edited text, applied IDs and unchanged/replacement source mappings. Rejects split Unicode scalars and ambiguous insertion boundaries.",
      "category": "document-assurance",
      "intents": [
        "Apply agent-proposed document edits with exact source assertions",
        "Produce source-to-result offset evidence for controlled text transformations"
      ],
      "whenToUse": [
        "Apply agent-proposed document edits with exact source assertions",
        "Produce source-to-result offset evidence for controlled text transformations"
      ],
      "whenNotToUse": [
        "Fuzzy matching, natural-language revision or edits to files on disk",
        "Mapping semantic annotations inside replacement text"
      ],
      "capabilities": [
        "Atomic original-source coordinates and expected text on every edit",
        "SHA-256 source/result provenance and explicit mapping segments",
        "No Unicode normalization or newline rewriting"
      ],
      "related": [
        "text-offset-map",
        "document-chunk-audit"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 8000,
        "depth": 20,
        "findings": 200,
        "edits": 200,
        "resultCodeUnits": 200000,
        "offsetUnit": "utf16-code-units"
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "UNSAFE_KEY",
        "INVALID_UNICODE",
        "INVALID_NUMBER",
        "DUPLICATE_ID",
        "INVALID_SPAN",
        "INVALID_BOUNDARY",
        "OVERLAPPING_EDITS",
        "EDIT_EXPECTATION_MISMATCH",
        "SOURCE_DIGEST_MISMATCH"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/text-edits-apply",
      "contract": "/reference/services/text-edits-apply.json",
      "schemas": {
        "input": "/reference/schemas/text-edits-apply.input.json",
        "output": "/reference/schemas/text-edits-apply.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "text-offset-map",
      "name": "Unicode Evidence Offset Mapping",
      "description": "Translate caller-supplied UTF-8 byte, UTF-16 code-unit or Unicode code-point offsets into all three coordinate systems and LF-based line/column positions. Only exact scalar boundaries are valid; text is never normalized or rewritten.",
      "category": "document-assurance",
      "intents": [
        "Reconcile byte and character offsets from different extraction tools",
        "Convert annotation spans between UTF-8 UTF-16 and code-point systems"
      ],
      "whenToUse": [
        "Reconcile byte and character offsets from different extraction tools",
        "Convert annotation spans between UTF-8 UTF-16 and code-point systems"
      ],
      "whenNotToUse": [
        "Grapheme cluster, display-width, tokenizer or normalization mapping",
        "Offsets into binary files or malformed Unicode"
      ],
      "capabilities": [
        "Rejects offsets inside multibyte UTF-8 sequences or surrogate pairs",
        "Line and column are 1-based; LF starts a new line and CR counts as a scalar",
        "Duplicate offsets preserve caller order"
      ],
      "related": [
        "evidence-quote-check",
        "text-edits-apply"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 8000,
        "depth": 20,
        "findings": 200,
        "offsets": 1000,
        "textCodeUnits": 90000,
        "lineConvention": "1-based-LF-lines-codepoint-columns"
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "UNSAFE_KEY",
        "INVALID_UNICODE",
        "INVALID_NUMBER",
        "OFFSET_OUT_OF_RANGE",
        "INVALID_BOUNDARY"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/text-offset-map",
      "contract": "/reference/services/text-offset-map.json",
      "schemas": {
        "input": "/reference/schemas/text-offset-map.input.json",
        "output": "/reference/schemas/text-offset-map.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "unified-diff-apply",
      "name": "Exact Unified Patch Application",
      "description": "Apply a single-file supplied unified diff to supplied LF text with exact old/new hunk positions, exact context matching, final-newline markers and optional source digest/label assertions. Labels are inert metadata. No fuzzy offsets, Git prelude, filesystem writes or external content.",
      "category": "document-assurance",
      "intents": [
        "Validate and apply a model-generated unified patch to supplied document text",
        "Reject stale patch context before accepting a document revision"
      ],
      "whenToUse": [
        "Validate and apply a model-generated unified patch to supplied document text",
        "Reject stale patch context before accepting a document revision"
      ],
      "whenNotToUse": [
        "Multi-file patches, Git binary patches, rename metadata, fuzz or CRLF text",
        "Filesystem access, path safety validation, or applying a patch to a repository"
      ],
      "capabilities": [
        "Single ---/+++ header pair and at most 200 exact-position hunks",
        "LF-only text with GNU no-newline markers",
        "New hunk positions must match accumulated line deltas"
      ],
      "related": [
        "lines-diff",
        "text-edits-apply"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 8000,
        "depth": 20,
        "findings": 200,
        "hunks": 200,
        "sourceLines": 10000,
        "resultLines": 10000,
        "patchLines": 20000,
        "lineEndings": "LF-only"
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "UNSAFE_KEY",
        "INVALID_UNICODE",
        "INVALID_NUMBER",
        "UNSUPPORTED_LINE_ENDING",
        "INVALID_PATCH",
        "LINE_LIMIT",
        "HUNK_LIMIT",
        "HUNK_RANGE_MISMATCH",
        "PATCH_CONTEXT_MISMATCH",
        "PATCH_LABEL_MISMATCH",
        "SOURCE_DIGEST_MISMATCH"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/unified-diff-apply",
      "contract": "/reference/services/unified-diff-apply.json",
      "schemas": {
        "input": "/reference/schemas/unified-diff-apply.input.json",
        "output": "/reference/schemas/unified-diff-apply.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "markdown-table-extract",
      "name": "Markdown Pipe Table Extraction",
      "description": "Extract top-level pipe tables from supplied Markdown into bounded cell arrays with exact source offsets, alignment and width findings. Uses an explicit line-based subset: table starts at document start or after a blank line, three-hyphen delimiters, fences excluded, inline markup preserved.",
      "category": "document-assurance",
      "intents": [
        "Extract structured rows and cell provenance from Markdown reports",
        "Check pipe table widths without silently dropping or padding cells"
      ],
      "whenToUse": [
        "Extract structured rows and cell provenance from Markdown reports",
        "Check pipe table widths without silently dropping or padding cells"
      ],
      "whenNotToUse": [
        "Full CommonMark or GFM parsing, nested containers, HTML tables or inline rendering",
        "Automatic schema inference, typed values or ambiguous one-hyphen delimiters"
      ],
      "capabilities": [
        "Backslash-escaped pipes and optional outer pipes",
        "Fenced code is excluded; inline backticks do not protect an unescaped pipe",
        "Raw cell slices preserved with UTF-16 offsets; malformed row widths remain visible"
      ],
      "related": [
        "csv-serialize",
        "record-constraints"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 8000,
        "depth": 20,
        "findings": 200,
        "tables": 50,
        "rowsPerTable": 500,
        "columns": 50,
        "cells": 5000,
        "lines": 10000,
        "profile": "top-level-pipe-tables-v1"
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "UNSAFE_KEY",
        "INVALID_UNICODE",
        "INVALID_NUMBER",
        "LINE_LIMIT",
        "TABLE_LIMIT",
        "ROW_LIMIT",
        "CELL_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/markdown-table-extract",
      "contract": "/reference/services/markdown-table-extract.json",
      "schemas": {
        "input": "/reference/schemas/markdown-table-extract.input.json",
        "output": "/reference/schemas/markdown-table-extract.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "document-chunk-audit",
      "name": "Document Chunk Integrity Audit",
      "description": "Audit supplied retrieval/document chunks against their exact source spans and compute verified coverage, uncovered ranges, overlap depth and policy findings. Invalid chunks never contribute coverage. Checks identity and coverage only, not retrieval quality or semantic relevance.",
      "category": "document-assurance",
      "intents": [
        "Verify exported RAG chunks reconstruct and cover their source document",
        "Find stale chunk text, gaps or forbidden overlaps before indexing"
      ],
      "whenToUse": [
        "Verify exported RAG chunks reconstruct and cover their source document",
        "Find stale chunk text, gaps or forbidden overlaps before indexing"
      ],
      "whenNotToUse": [
        "Semantic chunk quality, source authenticity, OCR correction or embedding validation",
        "Comparing independent ground-truth annotation datasets"
      ],
      "capabilities": [
        "Only exact nonempty scalar-aligned UTF-16 spans count toward coverage",
        "Sweep-line union, gap and overlap-depth evidence",
        "Full coverage and overlap policies supplied explicitly; defaults require full coverage and permit overlap"
      ],
      "related": [
        "text-chunk",
        "text-offset-map",
        "evidence-quote-check"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 8000,
        "depth": 20,
        "findings": 200,
        "chunks": 200,
        "offsetUnit": "utf16-code-units",
        "coverageUnit": "utf16-code-units"
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "UNSAFE_KEY",
        "INVALID_UNICODE",
        "INVALID_NUMBER",
        "DUPLICATE_ID"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/document-chunk-audit",
      "contract": "/reference/services/document-chunk-audit.json",
      "schemas": {
        "input": "/reference/schemas/document-chunk-audit.input.json",
        "output": "/reference/schemas/document-chunk-audit.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "json-document-extract",
      "name": "Strict JSON Artifact Extraction",
      "description": "Extract exact JSON object/array candidates from caller-supplied text using explicit json-fence or balanced-container mode. Selects only one unambiguous valid candidate, rejects duplicate decoded keys and nonfinite numbers, and never repairs invalid JSON or executes content.",
      "category": "document-assurance",
      "intents": [
        "Recover a strict JSON object from a model response with source-span evidence",
        "Reject ambiguous structured outputs instead of choosing the first JSON block"
      ],
      "whenToUse": [
        "Recover a strict JSON object from a model response with source-span evidence",
        "Reject ambiguous structured outputs instead of choosing the first JSON block"
      ],
      "whenNotToUse": [
        "JSON repair, JSON5, primitive JSON roots, schema validation or interpreting prose",
        "Guaranteed distinction between literal braces in prose and intended JSON in balanced mode"
      ],
      "capabilities": [
        "Case-sensitive json-labelled backtick/tilde fences; other fenced languages ignored",
        "Balanced mode respects JSON strings inside candidate containers",
        "Any malformed candidate or unmatched close blocks selection; multiple valid candidates are ambiguous",
        "Duplicate decoded keys, unsafe keys, unpaired surrogates and nonfinite numbers rejected"
      ],
      "related": [
        "json-schema-check",
        "mcp-result-check"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 8000,
        "depth": 20,
        "findings": 200,
        "candidates": 20,
        "parsedJsonNodes": 8000,
        "lines": 10000,
        "jsonRepair": "none",
        "primitiveRoots": "unsupported"
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "UNSAFE_KEY",
        "INVALID_UNICODE",
        "INVALID_NUMBER",
        "CANDIDATE_LIMIT",
        "LINE_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/json-document-extract",
      "contract": "/reference/services/json-document-extract.json",
      "schemas": {
        "input": "/reference/schemas/json-document-extract.input.json",
        "output": "/reference/schemas/json-document-extract.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "email-domain-readiness",
      "name": "Public email-domain DNS readiness",
      "description": "Inspect one public ASCII domain's live MX, null MX, or implicit A/AAAA fallback with resolver/time/TTL evidence. Domain only; no email address, mailbox, deliverability, disposable/free-provider or role classification. x402 only.",
      "category": "standards",
      "intents": [
        "check email domain DNS readiness",
        "live MX record lookup",
        "detect null MX domain",
        "check implicit mail A AAAA fallback"
      ],
      "whenToUse": [
        "Inspect public-domain mail-routing DNS records with bounded live resolver evidence."
      ],
      "whenNotToUse": [
        "Full email validation, mailbox existence, SMTP delivery tests, disposable/free-provider/role classification, MX-host reachability, arbitrary DNS record types, private DNS, internationalized Unicode input, or guaranteed DNS freshness."
      ],
      "capabilities": [
        "email-domain-readiness",
        "public DNS MX",
        "null MX",
        "implicit A AAAA fallback",
        "NXDOMAIN",
        "resolver timestamp TTL"
      ],
      "related": [
        "url-inspect"
      ],
      "limits": {
        "queries": 3,
        "queryTimeoutMs": 1500,
        "totalTimeoutMs": 5000,
        "resolverResponseBytes": 32768,
        "recordsPerQuery": 64,
        "outputBytes": 32768
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INVALID_DOMAIN",
        "UNSUPPORTED_DOMAIN",
        "DNS_BUSY",
        "DNS_TIMEOUT",
        "DNS_SERVFAIL",
        "DNS_UNAVAILABLE",
        "DNS_HTTP_ERROR",
        "DNS_TRUNCATED",
        "DNS_INVALID_RESPONSE",
        "DNS_INCONSISTENT_RESPONSE"
      ],
      "proposedNominalUsd": "0.002",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402"
      ],
      "html": "/discover/tools/email-domain-readiness",
      "contract": "/reference/services/email-domain-readiness.json",
      "schemas": {
        "input": "/reference/schemas/email-domain-readiness.input.json",
        "output": "/reference/schemas/email-domain-readiness.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "timezone-convert",
      "name": "UTC instant to IANA time zones",
      "description": "Convert one explicit UTC instant into 1–10 IANA zone local times and exact UTC offsets, including the runtime's daylight-saving transitions. No wall-time guessing, current-clock lookup, recurrence or DST boolean. Runtime tzdb version is not exposed.",
      "category": "standards",
      "intents": [
        "convert UTC instant to IANA time zones",
        "batch timezone conversion",
        "UTC local time daylight saving offset",
        "format instant in multiple zones"
      ],
      "whenToUse": [
        "Convert one supplied UTC instant to 1–10 local representations with second-accurate offsets under the installed runtime IANA data."
      ],
      "whenNotToUse": [
        "Resolve an ambiguous or nonexistent local wall time, infer a city or abbreviation, fetch current time, classify DST with a boolean, schedule recurring events, or guarantee historical/future political time-zone rules."
      ],
      "capabilities": [
        "UTC instant",
        "IANA time zones",
        "batch zone conversion",
        "local date and time",
        "daylight-saving offset transitions",
        "fractional-hour offsets"
      ],
      "related": [
        "timestamp-convert",
        "duration-convert"
      ],
      "limits": {
        "zones": 10,
        "zoneCodeUnits": 64,
        "outputBytes": 16000,
        "earliestUtc": "1970-01-01T00:00:00.000Z",
        "latestUtc": "2100-12-31T23:59:59.999Z",
        "precision": "milliseconds",
        "tzdbVersion": "not exposed; depends on runtime"
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INVALID_INSTANT",
        "DUPLICATE_TIME_ZONE",
        "UNSUPPORTED_TIME_ZONE",
        "TIME_ZONE_RUNTIME_ERROR"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/timezone-convert",
      "contract": "/reference/services/timezone-convert.json",
      "schemas": {
        "input": "/reference/schemas/timezone-convert.input.json",
        "output": "/reference/schemas/timezone-convert.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "blob-decode",
      "name": "Bounded compressed blob batch decoding",
      "description": "Decode 1–10 inline canonical Base64 gzip or zlib-wrapped deflate blobs to strict UTF-8 or Base64 bytes. Streaming aggregate input/output and per-item expansion caps. No Brotli, archive extraction, remote fetch, nested decoding or content interpretation.",
      "category": "standards",
      "intents": [
        "batch decode compressed blobs",
        "decompress gzip Base64 payload",
        "decode zlib deflate data",
        "bounded binary payload decompression"
      ],
      "whenToUse": [
        "Decode 1–10 supplied gzip or zlib-wrapped deflate blobs under a combined 32 KiB compressed / 64 KiB decoded budget, retaining strict text or binary bytes."
      ],
      "whenNotToUse": [
        "Brotli, raw deflate, ZIP/TAR archives, multiple gzip members, compression autodetection, external files or URLs, dictionaries, nested decoding, JSON parsing, code execution or large/high-ratio payloads."
      ],
      "capabilities": [
        "gzip decompression",
        "zlib deflate decompression",
        "canonical Base64 input",
        "strict UTF-8",
        "binary Base64 output",
        "batch decoding",
        "streaming output limits"
      ],
      "related": [
        "base64-convert",
        "content-digest",
        "json-repair"
      ],
      "limits": {
        "items": 10,
        "compressedBytes": 32768,
        "decodedBytes": 65536,
        "expansionRatio": 100,
        "inputChunkBytes": 256,
        "base64CodeUnitsPerItem": 43692,
        "outputBytes": 410000,
        "outputLimitScope": "aggregate across all batch items",
        "ratioLimitScope": "per item, decompressed bytes / total compressed bytes",
        "codecs": "gzip single member; zlib-wrapped deflate"
      },
      "errorCodes": [
        "INVALID_INPUT",
        "DUPLICATE_ID",
        "NONCANONICAL_BASE64",
        "COMPRESSED_INPUT_LIMIT",
        "DECOMPRESSION_LIMIT",
        "INVALID_COMPRESSED_DATA",
        "INVALID_UTF8",
        "OUTPUT_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/blob-decode",
      "contract": "/reference/services/blob-decode.json",
      "schemas": {
        "input": "/reference/schemas/blob-decode.input.json",
        "output": "/reference/schemas/blob-decode.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "dockerfile-audit",
      "name": "Bounded Dockerfile static audit",
      "description": "Inspect one supplied Dockerfile for 14 bounded static risk and hygiene signals with line ranges, rule IDs, redacted evidence and remediation. Understands continuations, escape directives, literal stage inheritance and JSON forms. No execution, image/CVE scan, fetch, variable evaluation or safe-image verdict; heredocs, ONBUILD and custom frontends are rejected.",
      "category": "supply-chain",
      "intents": [
        "audit supplied Dockerfile text",
        "Dockerfile static risk analysis",
        "lint Dockerfile build hygiene",
        "review Dockerfile base image pinning and runtime user"
      ],
      "whenToUse": [
        "Get bounded static observations about one supplied Dockerfile's literal image references, stage/user configuration, COPY/ADD sources, secret-like names and instruction forms."
      ],
      "whenNotToUse": [
        "Build or execute a Dockerfile, inspect an image or registry, find CVEs, certify security, analyze Compose/Kubernetes, evaluate shell commands or ARG values, or parse heredocs, ONBUILD or custom syntax frontends."
      ],
      "capabilities": [
        "supplied Dockerfile",
        "line-numbered findings",
        "static audit",
        "multi-stage build",
        "base image digest pinning",
        "root USER signal",
        "secret-like variable names",
        "redacted evidence",
        "COPY ADD review"
      ],
      "limits": {
        "inputCodeUnits": 65536,
        "dockerfileUtf8Bytes": 65536,
        "physicalLines": 2048,
        "instructions": 512,
        "instructionCodeUnits": 8192,
        "stages": 64,
        "findings": 128,
        "outputBytes": 180000,
        "rules": 14,
        "variableEvaluation": "none",
        "sourceEcho": "none",
        "externalRequests": 0,
        "shellAnalysis": "none"
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INVALID_DOCKERFILE",
        "UNSUPPORTED_DOCKERFILE_SYNTAX",
        "DOCKERFILE_LIMIT"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/dockerfile-audit",
      "contract": "/reference/services/dockerfile-audit.json",
      "schemas": {
        "input": "/reference/schemas/dockerfile-audit.input.json",
        "output": "/reference/schemas/dockerfile-audit.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "records-join",
      "name": "Typed guarded record join",
      "description": "WHEN TO USE: Produce actual inner, left or full joined row pairs from two supplied tables using typed scalar JSON Pointer keys. Enforces declared cardinality over both complete inputs before matching; duplicate null-containing keys count for uniqueness even when nullKeys=never-match. Preserves provenance and order, rejects fanout overruns without partial output. No coercion, fuzzy matching, database access or semantic relationship verification.",
      "category": "structured",
      "intents": [
        "Join two tables while retaining source rows and indexes",
        "Enrich records with a typed lookup and guard duplicate keys",
        "Build inner left or full joins with explicit many-to-many fanout"
      ],
      "whenToUse": [
        "Join two tables while retaining source rows and indexes",
        "Enrich records with a typed lookup and guard duplicate keys",
        "Build inner left or full joins with explicit many-to-many fanout"
      ],
      "whenNotToUse": [
        "Fuzzy or semantic entity matching, coercing scalar keys, or proving a business relationship",
        "Silently combining colliding columns or truncating a join to fit a cap",
        "Fetching data, executing caller code, contacting agents, transmitting a payload, or changing remote state",
        "Verifying semantic truth, source authenticity, identity, permissions, or business relationships"
      ],
      "capabilities": [
        "Typed composite scalar keys distinguish number, string, boolean and null",
        "Checks declared uniqueness over entire inputs including unmatched and null-containing keys",
        "Preflights all output row cardinality; stable left/right provenance pairs",
        "Networkless deterministic transforms; externalRequests=0; semanticValidityVerified=false"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "maxRowsPerSide": 500,
        "maxKeyPairs": 5,
        "maxPointerSegments": 20,
        "maxOutputRows": 2000,
        "nullUniqueness": "null-containing keys count toward uniqueness"
      },
      "related": [
        "record-relations",
        "records-project",
        "records-filter"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_POINTER",
        "MISSING_KEY",
        "INVALID_KEY",
        "CARDINALITY_VIOLATION",
        "OUTPUT_ROW_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/records-join",
      "contract": "/reference/services/records-join.json",
      "schemas": {
        "input": "/reference/schemas/records-join.input.json",
        "output": "/reference/schemas/records-join.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "localized-number-parse",
      "name": "Explicit localized number parser",
      "description": "WHEN TO USE: Convert supplied localized numeric spellings into exact ASCII decimal strings using a declared digit alphabet, symbols and primary/secondary grouping. Validates the entire spelling with per-item rejections; preserves fractional digit count and negative-zero evidence. No locale inference, floating-point numeric conversion, exponent/currency parsing or full CLDR claim. Maximum 200 items and 128 Unicode code points each.",
      "category": "structured",
      "intents": [
        "Parse localized decimal strings with an explicit digit and separator profile",
        "Convert grouped Arabic-Indic or comma-decimal numbers without floating-point loss",
        "Reject partially parsed numbers and retain negative zero and fractional precision evidence"
      ],
      "whenToUse": [
        "Parse localized decimal strings with an explicit digit and separator profile",
        "Convert grouped Arabic-Indic or comma-decimal numbers without floating-point loss",
        "Reject partially parsed numbers and retain negative zero and fractional precision evidence"
      ],
      "whenNotToUse": [
        "Inferring a locale, full CLDR/ICU conformance, currency or percentage conversion, exponent notation or accounting parentheses",
        "Normalizing Unicode or repairing malformed numeric spellings",
        "Fetching data, executing caller code, contacting agents, transmitting a payload, or changing remote state",
        "Verifying semantic truth, source authenticity, identity, permissions, or business relationships"
      ],
      "capabilities": [
        "Exact ASCII decimal output, without JSON floating-point conversion",
        "Optional grouping with strict primary/secondary group widths and whole-string matching",
        "Item-level syntax rejection; invalid or ambiguous profiles reject the entire batch",
        "Networkless deterministic transforms; externalRequests=0; semanticValidityVerified=false"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "maxItems": 200,
        "maxTextCodePoints": 128,
        "digitAlphabetCodePoints": 10,
        "maxGroupWidth": 9,
        "trim": "none or leading/trailing U+0020 only",
        "numericOutput": "canonical ASCII decimal string"
      },
      "related": [
        "numeric-rounding-check",
        "csv-parse",
        "integer-apportion"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_PROFILE",
        "DUPLICATE_ID"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/localized-number-parse",
      "contract": "/reference/services/localized-number-parse.json",
      "schemas": {
        "input": "/reference/schemas/localized-number-parse.input.json",
        "output": "/reference/schemas/localized-number-parse.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "json-batch-encode",
      "name": "Exact UTF-8 JSON batch encoder",
      "description": "WHEN TO USE: Produce contiguous, greedy, byte-bounded JSON-array or LF-terminated NDJSON wire bodies from supplied JSON values. Counts actual UTF-8 bodies including framing and escaping; optional SHA-256 hashes those unchanged bytes. Uses recursive key sorting plus JSON.stringify, not RFC 8785; rejects malformed Unicode and oversized records without partial batches. No transmission, endpoint-limit verification, compression or token accounting.",
      "category": "structured",
      "intents": [
        "Encode exact byte-limited JSON array or NDJSON request payload batches",
        "Pack JSON records into contiguous UTF-8-sized bodies without splitting records",
        "Measure escaped JSON framing and hash unchanged batch wire bytes"
      ],
      "whenToUse": [
        "Encode exact byte-limited JSON array or NDJSON request payload batches",
        "Pack JSON records into contiguous UTF-8-sized bodies without splitting records",
        "Measure escaped JSON framing and hash unchanged batch wire bytes"
      ],
      "whenNotToUse": [
        "Sending requests, validating target endpoint schemas or actual server limits, sizing headers, HTTP framing, compression or tokenization",
        "Arbitrary-precision JSON numbers or RFC 8785 cryptographic canonicalization",
        "Fetching data, executing caller code, contacting agents, transmitting a payload, or changing remote state",
        "Verifying semantic truth, source authenticity, identity, permissions, or business relationships"
      ],
      "capabilities": [
        "Actual body UTF-8 byte counts, not the result wrapper representation",
        "Greedy contiguous record-preserving batches with hard item and byte caps",
        "Recursive sorted-key JSON.stringify profile; array order retained and final LF required for NDJSON",
        "Single oversized record rejects all output; optional SHA-256 hashes exact body bytes",
        "Networkless deterministic transforms; externalRequests=0; semanticValidityVerified=false"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "maxRecords": 500,
        "maxUtf8Bytes": 100000,
        "maxItemsPerBatch": 500,
        "maxBatches": 500,
        "serialization": "recursive sorted-key JSON.stringify; integer-index keys first numerically",
        "ndjsonFinalLf": "always on nonempty batches"
      },
      "related": [
        "json-canonicalize",
        "ndjson-inspect",
        "message-batch-plan"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "RECORD_TOO_LARGE"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/json-batch-encode",
      "contract": "/reference/services/json-batch-encode.json",
      "schemas": {
        "input": "/reference/schemas/json-batch-encode.input.json",
        "output": "/reference/schemas/json-batch-encode.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "integer-apportion",
      "name": "Apportion exact integer units",
      "description": "Allocate a declared integer total among exact nonnegative decimal weights using floors and largest remainders. Conserves units with exact quota evidence and ID tie breaks; no minima, caps, fairness certification, payments or monotonicity guarantee.",
      "category": "data-assurance",
      "intents": [
        "Divide a fixed total of indivisible units among weighted categories",
        "Produce integer weighted allocations whose sum equals the declared total"
      ],
      "whenToUse": [
        "Divide a fixed total of indivisible units among weighted categories",
        "Produce integer weighted allocations whose sum equals the declared total"
      ],
      "whenNotToUse": [
        "Fairness certification, eligibility decisions about people, payments, or resource reservations",
        "Monotonic allocation as total changes, recipient minimums or maximums",
        "Live execution, network lookups, payments, reservation, or inferring factual correctness of supplied data"
      ],
      "capabilities": [
        "largest-remainder-v1 profile; exact BigInt decimal scaling and reduced quota/remainder fractions",
        "Largest fractional remainder first; ties and output order use exact UTF-16 ID ordering independent of input order",
        "Networkless supplied-input computation; advisoryOnly=true; externalRequests=0"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "findings": 200,
        "recipients": 128,
        "totalIntegerDigits": 24,
        "weightIntegerDigits": 24,
        "weightFractionDigits": 18
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "DUPLICATE_ID",
        "ZERO_WEIGHT_TOTAL"
      ],
      "related": [
        "rubric-score-aggregate",
        "numeric-rounding-check"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/integer-apportion",
      "contract": "/reference/services/integer-apportion.json",
      "schemas": {
        "input": "/reference/schemas/integer-apportion.input.json",
        "output": "/reference/schemas/integer-apportion.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "business-calendar-shift",
      "name": "Shift explicit business dates",
      "description": "Shift date-only Gregorian values by working days under supplied weekly closures and explicit closed dates. Roll an initially closed anchor explicitly, then count open dates strictly after or before it. No holiday lookup, clock, timezone or legal deadline verification.",
      "category": "standards",
      "intents": [
        "Add or subtract business days on an explicit supplied closure calendar",
        "Roll a closed starting date before a date-only working-day offset"
      ],
      "whenToUse": [
        "Add or subtract business days on an explicit supplied closure calendar",
        "Roll a closed starting date before a date-only working-day offset"
      ],
      "whenNotToUse": [
        "National holiday discovery, bank settlement or legal deadline advice",
        "Working-hour arithmetic, timezone conversion, recurring event scheduling or real organization calendar verification",
        "Live execution, network lookups, payments, reservation, or inferring factual correctness of supplied data"
      ],
      "capabilities": [
        "explicit-business-calendar-v1; Gregorian years 1900–2199 and Monday=1 through Sunday=7",
        "First roll anchor; offset zero returns anchor; calendarDays is signed result minus original start",
        "Atomic call: any invalid date, closed error anchor, range or traversal failure withholds all results",
        "Skipped evidence is in traversal order and includes rolled closed anchors; repeated visits are counted; first 100 retained per item",
        "Networkless supplied-input computation; advisoryOnly=true; externalRequests=0"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "findings": 200,
        "items": 128,
        "closedDates": 500,
        "workingDays": "-366..366",
        "minYear": 1900,
        "maxYear": 2199,
        "itemDateVisits": 10000,
        "totalDateVisits": 100000,
        "skippedEvidencePerItem": 100
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "DUPLICATE_ID",
        "INVALID_DATE",
        "INVALID_CALENDAR",
        "CLOSED_START",
        "DATE_RANGE_EXHAUSTED",
        "TRAVERSAL_LIMIT"
      ],
      "related": [
        "timestamp-convert",
        "duration-convert",
        "timezone-convert"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/business-calendar-shift",
      "contract": "/reference/services/business-calendar-shift.json",
      "schemas": {
        "input": "/reference/schemas/business-calendar-shift.input.json",
        "output": "/reference/schemas/business-calendar-shift.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "localization-bundle-build",
      "name": "Build literal localization bundles",
      "description": "Produce an atomic source-ordered localization bundle after exact key coverage and repeated {{name}} placeholder checks. Explicit source fallback provenance; malformed double braces or mismatches block the bundle. No translation, language verification, rendering or escaping.",
      "category": "text",
      "intents": [
        "Build a source-ordered target localization dictionary with explicit fallback provenance",
        "Check literal translated placeholder names and repeated counts before releasing a bundle"
      ],
      "whenToUse": [
        "Build a source-ordered target localization dictionary with explicit fallback provenance",
        "Check literal translated placeholder names and repeated counts before releasing a bundle"
      ],
      "whenNotToUse": [
        "Generate or evaluate translations, detect language or verify semantic quality",
        "ICU/MessageFormat plural rules, printf, HTML/Markdown interpretation, sanitization or locale fallback chains",
        "Live execution, network lookups, payments, reservation, or inferring factual correctness of supplied data"
      ],
      "capabilities": [
        "double-brace-literal-v1 requires ASCII [A-Za-z_][A-Za-z0-9_.-]{0,63} names; reserved __proto__/constructor/prototype names block; single braces are literal",
        "Placeholder multisets must match including repeats; order may differ; texts remain unchanged",
        "Duplicate/unknown/missing keys, malformed double braces or mismatch yield blocked with bundle:null; no partially validated bundle",
        "Missing mode is required: error or source-fallback; output entries follow source input order",
        "Networkless supplied-input computation; advisoryOnly=true; externalRequests=0"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "findings": 200,
        "sourceEntries": 1000,
        "targetEntries": 1000,
        "entryTextCodeUnits": 10000,
        "totalTextCodeUnits": 60000,
        "placeholderNameCodeUnits": 64
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "TEXT_LIMIT"
      ],
      "related": [
        "template-render",
        "records-project"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/localization-bundle-build",
      "contract": "/reference/services/localization-bundle-build.json",
      "schemas": {
        "input": "/reference/schemas/localization-bundle-build.input.json",
        "output": "/reference/schemas/localization-bundle-build.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "workflow-resource-plan",
      "name": "Renewable Resource Workflow Planner",
      "description": "Build a deterministic capacity-feasible candidate task schedule with dependencies, release times and renewable resource demands; no optimality or live availability guarantee.",
      "category": "workflow-assurance",
      "intents": [
        "Schedule dependent tasks against supplied concurrent worker or renewable resource capacities",
        "Return earliest-insertion candidate start and end times when unlimited-worker DAG timing is insufficient"
      ],
      "whenToUse": [
        "Schedule dependent tasks against supplied concurrent worker or renewable resource capacities",
        "Return earliest-insertion candidate start and end times when unlimited-worker DAG timing is insufficient"
      ],
      "whenNotToUse": [
        "Optimal makespan, execution, resource reservations, observed worker availability or runtime prediction",
        "Token-bucket dispatch quotas or retry timing",
        "Proof that no schedule can fit a caller horizon"
      ],
      "capabilities": [
        "Nonpreemptive serial schedule generation; ready-task order is priority descending then exact UTF-16 ID ascending",
        "Earliest feasible integer insertion; half-open execution intervals; prior placements never move",
        "Complete resource-usage evidence and complete candidate even when the reporting horizon is exceeded",
        "All input durations, capacities and availability are assumptions; no external requests or execution"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "tasks": 64,
        "resources": 8,
        "dependencyEdges": 256,
        "resourceUnits": 1000000000,
        "duration": 1000000000,
        "release": 1000000000000,
        "scheduleTime": 1064000000000,
        "usageSegments": 128,
        "buckets": 8,
        "jobs": 200,
        "tokenUnits": 1000000000,
        "refillPeriodMs": 1000000000,
        "horizonMs": 1000000000000
      },
      "related": [
        "workflow-dag-analyze",
        "quota-dispatch-plan"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "DUPLICATE_ID",
        "EDGE_LIMIT",
        "DUPLICATE_DEPENDENCY",
        "MISSING_DEPENDENCY",
        "UNKNOWN_RESOURCE",
        "DEMAND_EXCEEDS_CAPACITY",
        "DEPENDENCY_CYCLE",
        "TIME_LIMIT",
        "INTERNAL_PLANNING_ERROR"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/workflow-resource-plan",
      "contract": "/reference/services/workflow-resource-plan.json",
      "schemas": {
        "input": "/reference/schemas/workflow-resource-plan.input.json",
        "output": "/reference/schemas/workflow-resource-plan.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "quota-dispatch-plan",
      "name": "FIFO Token Bucket Dispatch Planner",
      "description": "Plan FIFO not-before times from supplied continuous-refill token buckets, with exact rational balance evidence and an explicitly partial horizon prefix; no requests are sent.",
      "category": "workflow-assurance",
      "intents": [
        "Plan FIFO API job dispatch against supplied token bucket capacity and refill assumptions",
        "Return exact not-before millisecond times and rational before/after quota balances"
      ],
      "whenToUse": [
        "Plan FIFO API job dispatch against supplied token bucket capacity and refill assumptions",
        "Return exact not-before millisecond times and rational before/after quota balances"
      ],
      "whenNotToUse": [
        "Live quota discovery, provider conformance, request sending, retry permission or guaranteed server acceptance",
        "Persistent quota reservations or synchronization across workers",
        "Renewable resources held for execution durations or optimal job reordering"
      ],
      "capabilities": [
        "Strict token buckets; continuous capped refill; exact BigInt scaled balances and ceiling waits",
        "Supplied FIFO order, head-of-line waiting, simultaneous integer-millisecond dispatch and atomic costs",
        "Horizon-limited prefix is explicitly partial; zero-refill exhaustion withholds every dispatch",
        "All balances are hypothetical; final state is at the last returned dispatch, or time zero for an empty prefix"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "tasks": 64,
        "resources": 8,
        "dependencyEdges": 256,
        "resourceUnits": 1000000000,
        "duration": 1000000000,
        "release": 1000000000000,
        "scheduleTime": 1064000000000,
        "usageSegments": 128,
        "buckets": 8,
        "jobs": 200,
        "tokenUnits": 1000000000,
        "refillPeriodMs": 1000000000,
        "horizonMs": 1000000000000
      },
      "related": [
        "retry-schedule-plan",
        "workflow-resource-plan"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "DUPLICATE_ID",
        "INVALID_INITIAL_BALANCE",
        "UNKNOWN_BUCKET",
        "IMPOSSIBLE_COST"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/quota-dispatch-plan",
      "contract": "/reference/services/quota-dispatch-plan.json",
      "schemas": {
        "input": "/reference/schemas/quota-dispatch-plan.input.json",
        "output": "/reference/schemas/quota-dispatch-plan.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "jsonc-values-rewrite",
      "name": "Guarded JSONC scalar rewriter",
      "description": "WHEN TO USE: Rewrite existing supplied JSONC scalar values by guarded RFC 6901 pointers while preserving every source character outside the selected value tokens. Strict object-root JSON plus comments and explicit trailing-comma mode; duplicate decoded keys, malformed untouched regions and unsafe integer-valued numbers fail atomically. No general JSON5, structural edits, configuration security checks or filesystem writes.",
      "category": "structured",
      "intents": [
        "Change guarded scalar configuration values while preserving JSONC comments and untouched formatting",
        "Resolve scalar JSON pointers to source spans before an exact configuration edit"
      ],
      "whenToUse": [
        "Change guarded scalar configuration values while preserving JSONC comments and untouched formatting",
        "Resolve scalar JSON pointers to source spans before an exact configuration edit"
      ],
      "whenNotToUse": [
        "JSON5 syntax, root arrays, duplicate object names, unsafe integers, scalar type changes, insertions, deletions or structure changes",
        "General formatting, schema validation, semantic config safety, arbitrary-precision decimal preservation or file writes",
        "Uploading, executing artifacts, contacting agents or registries, publishing, or changing remote state",
        "Verifying semantic truth, source authenticity, permissions, target API acceptance or signatures"
      ],
      "capabilities": [
        "Profile jsonc-guarded-scalars-v1; entire source parses without recovery",
        "Original-document guards, unique paths and atomic same-type scalar edits",
        "Untouched source characters and scalar spellings preserved; appliedPaths ordered by source position",
        "Result reparsed and compared to an independently constructed intended document; numeric equality identifies negative zero with zero",
        "Deterministic supplied-input-only artifact; zero external requests and no current-time dependence"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "profile": "jsonc-guarded-scalars-v1",
        "sourceBytes": 60000,
        "syntaxNodes": 5000,
        "parsedDepth": 20,
        "rewrites": 100,
        "pointerUnits": 512,
        "resultTextBytes": 100000,
        "syntaxNodeCounting": "all JSON values plus member-name tokens; root depth zero",
        "lineCommentEnd": "CR, LF or EOF"
      },
      "related": [
        "text-edits-apply",
        "json-patch",
        "json-schema-check"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "SOURCE_LIMIT",
        "JSONC_SYNTAX",
        "JSONC_ROOT",
        "JSONC_COMPLEXITY",
        "UNSAFE_NUMBER",
        "DUPLICATE_KEY",
        "INVALID_POINTER",
        "DUPLICATE_PATH",
        "MISSING_PATH",
        "NONSCALAR_TARGET",
        "EXPECTED_MISMATCH",
        "SCALAR_TYPE_CHANGE",
        "RESULT_TEXT_LIMIT",
        "REWRITE_VERIFICATION"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/jsonc-values-rewrite",
      "contract": "/reference/services/jsonc-values-rewrite.json",
      "schemas": {
        "input": "/reference/schemas/jsonc-values-rewrite.input.json",
        "output": "/reference/schemas/jsonc-values-rewrite.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "multipart-form-encode",
      "name": "Exact multipart form body encoder",
      "description": "WHEN TO USE: Construct exact inert multipart/form-data bytes from ordered supplied text or binary file parts, preserving repeated field names. Caller supplies a collision-checked boundary; explicit utf8 or canonical padded Base64 output and decoded wire byte count. Strict ASCII names prevent header injection; no upload, custom headers, nested multipart, automatic field flattening or API acceptance claim.",
      "category": "structured",
      "intents": [
        "Encode ordered multipart form-data upload bodies with binary files and repeated field names",
        "Measure exact multipart request bytes with deterministic collision-checked boundaries"
      ],
      "whenToUse": [
        "Encode ordered multipart form-data upload bodies with binary files and repeated field names",
        "Measure exact multipart request bytes with deterministic collision-checked boundaries"
      ],
      "whenNotToUse": [
        "Performing HTTP requests or uploads, headers beyond Content-Disposition and Content-Type, nested multipart or endpoint compatibility",
        "Non-ASCII field names or filenames, path filenames, filename*, or implicit charset guessing",
        "Uploading, executing artifacts, contacting agents or registries, publishing, or changing remote state",
        "Verifying semantic truth, source authenticity, permissions, target API acceptance or signatures"
      ],
      "capabilities": [
        "Profile rfc7578-bounded-body-v1; exact CRLF framing and one final closing delimiter",
        "Boundary token rejected anywhere in decoded payload; linear byte scanning",
        "Filename-free fields require text/plain, valid UTF-8 and charset=UTF-8; file media types retain caller casing",
        "Canonical padded standard Base64 with zero padding bits; utf8 output requires valid full-body UTF-8",
        "Deterministic supplied-input-only artifact; zero external requests and no current-time dependence"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "profile": "rfc7578-bounded-body-v1",
        "parts": 32,
        "nameBytes": 64,
        "filenameBytes": 128,
        "mediaTypeBytes": 127,
        "boundaryBytes": 60,
        "payloadBytes": 60000,
        "wireBytes": 100000,
        "mediaTypeProfile": "RFC6838 restricted ASCII type/subtype; no parameters"
      },
      "related": [
        "json-batch-encode",
        "base64-convert",
        "content-digest"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_BASE64",
        "PAYLOAD_LIMIT",
        "NESTED_MULTIPART",
        "TEXT_MEDIA_TYPE",
        "INVALID_UTF8",
        "BOUNDARY_COLLISION",
        "WIRE_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/multipart-form-encode",
      "contract": "/reference/services/multipart-form-encode.json",
      "schemas": {
        "input": "/reference/schemas/multipart-form-encode.input.json",
        "output": "/reference/schemas/multipart-form-encode.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "oci-artifact-compose",
      "name": "Inline OCI artifact manifest composer",
      "description": "WHEN TO USE: Build a supplied-input OCI 1.1.1 artifact manifest with SHA-256 digests, exact decoded sizes and inline Base64 bytes for every ordered file layer. Caller declares artifactType and media types; fixed empty JSON config and title-only annotations. No enclosing manifest digest, image build, filesystem layout, registry contact, upload, signature or authenticity guarantee.",
      "category": "structured",
      "intents": [
        "Compose an OCI 1.1.1 artifact manifest from supplied binary or UTF-8 evidence files",
        "Compute content-addressed inline layer descriptors with exact file bytes and source mapping"
      ],
      "whenToUse": [
        "Compose an OCI 1.1.1 artifact manifest from supplied binary or UTF-8 evidence files",
        "Compute content-addressed inline layer descriptors with exact file bytes and source mapping"
      ],
      "whenNotToUse": [
        "OCI image building, registry access, pushing or pulling, tar/layout generation, signatures, provenance truth or publisher authenticity",
        "Enclosing manifest digest without exact serialized bytes, inferred timestamps, executable config, platform or subject",
        "Uploading, executing artifacts, contacting agents or registries, publishing, or changing remote state",
        "Verifying semantic truth, source authenticity, permissions, target API acceptance or signatures"
      ],
      "capabilities": [
        "Profile oci-1.1-inline-artifact-v1; OCI Image Specification 1.1.1 artifact guidance",
        "SHA-256 and size computed from exact decoded file bytes; standard data fields embed canonical Base64",
        "Fixed empty JSON config hashes exact UTF-8 {}; layer order and input-to-layer source map retained",
        "Only standard title annotations; duplicate names rejected, equal bytes under distinct names preserved",
        "Deterministic supplied-input-only artifact; zero external requests and no current-time dependence"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "profile": "oci-1.1-inline-artifact-v1",
        "files": 32,
        "nameUnits": 128,
        "mediaTypeBytes": 127,
        "payloadBytes": 60000,
        "manifestBytes": 100000,
        "enclosingManifestDigest": "not returned",
        "mediaTypeProfile": "RFC6838 restricted ASCII type/subtype; no parameters"
      },
      "related": [
        "artifact-manifest-check",
        "content-digest",
        "json-canonicalize"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_BASE64",
        "PAYLOAD_LIMIT",
        "INVALID_FILENAME",
        "DUPLICATE_FILENAME",
        "MANIFEST_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/oci-artifact-compose",
      "contract": "/reference/services/oci-artifact-compose.json",
      "schemas": {
        "input": "/reference/schemas/oci-artifact-compose.input.json",
        "output": "/reference/schemas/oci-artifact-compose.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "gitignore-path-select",
      "name": "Git-ignore Path Selection",
      "description": "Select supplied untracked file paths under a strict root-only ASCII Git-ignore subset with excluded-ancestor and final-rule evidence.",
      "category": "structured",
      "intents": [
        "Select supplied release files using root Git-ignore rules",
        "Explain excluded ancestors and negated file patterns"
      ],
      "whenToUse": [
        "Select supplied release files using root Git-ignore rules",
        "Explain excluded ancestors and negated file patterns"
      ],
      "whenNotToUse": [
        "Full Git-ignore syntax, bracket classes, escapes, nested ignore files, Git index/tracked state, symlinks, repository discovery or secret detection",
        "Fetching files, reading a repository, executing code or tests, contacting agents, publishing releases, or changing remote state"
      ],
      "capabilities": [
        "Declared profile: gitignore-root-ascii-v1",
        "Last matching root rule with explicit directory evaluation; excluded parents block child re-inclusion",
        "Literal segments, *, ?, supported positional **, root anchors, directory-only patterns and negation",
        "Preserves candidate input order; no matching rule gives null evidence; work-cap failure returns no selection",
        "Deterministic supplied-input-only operation; no network, filesystem, shell or current-time dependence"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "profile": "gitignore-root-ascii-v1",
        "paths": 500,
        "activeRules": 128,
        "pathBytes": 256,
        "ruleBytes": 256,
        "pathDepth": 16,
        "inferredNodes": 10000,
        "patternStateTransitions": 5000000
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "UNSUPPORTED_PATTERN",
        "INVALID_PATH",
        "DUPLICATE_PATH",
        "PATH_COLLISION"
      ],
      "related": [
        "oci-artifact-compose",
        "multipart-form-encode",
        "artifact-manifest-check"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/gitignore-path-select",
      "contract": "/reference/services/gitignore-path-select.json",
      "schemas": {
        "input": "/reference/schemas/gitignore-path-select.input.json",
        "output": "/reference/schemas/gitignore-path-select.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "conventional-release-plan",
      "name": "Conventional Release Proposal",
      "description": "Propose a stable numeric version and escaped release notes from supplied commits under an explicit bounded Conventional Commit footer grammar and pre-1.0 policy.",
      "category": "structured",
      "intents": [
        "Create release notes and a version proposal from supplied Conventional Commits",
        "Apply an explicit breaking-change policy before version 1.0"
      ],
      "whenToUse": [
        "Create release notes and a version proposal from supplied Conventional Commits",
        "Apply an explicit breaking-change policy before version 1.0"
      ],
      "whenNotToUse": [
        "Full SemVer/prerelease calculation, all Conventional Commit footer layouts, code-level breaking-change detection, commit-range discovery or revert cancellation",
        "Fetching files, reading a repository, executing code or tests, contacting agents, publishing releases, or changing remote state"
      ],
      "capabilities": [
        "Declared profile: conventional-release-explicit-policy-v1",
        "Case-insensitive type classification; ! and uppercase BREAKING CHANGE/BREAKING-CHANGE colon-space footers",
        "Strict final contiguous footer block with multiline nonblank values; ambiguous layouts fail with sourceIndex",
        "Fix means patch, feat means minor, breaking marker means declared major/pre-1.0 policy; highest effect wins",
        "Deterministic escaped Markdown; no dates, fabricated links, tags, commits, pushes or publishing",
        "Deterministic supplied-input-only operation; no network, filesystem, shell or current-time dependence"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "profile": "conventional-release-explicit-policy-v1",
        "commits": 200,
        "messageBytes": 8000,
        "aggregateMessageBytes": 60000,
        "physicalLines": 100,
        "footerEntries": 20,
        "idCharacters": 64,
        "typeScopeCharacters": 64,
        "versionComponent": 1000000000,
        "releaseOutputBytes": 150000
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_VERSION",
        "INVALID_COMMIT",
        "INVALID_ID",
        "DUPLICATE_ID",
        "VERSION_OVERFLOW"
      ],
      "related": [
        "semver-evaluate",
        "jsonc-values-rewrite",
        "oci-artifact-compose"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/conventional-release-plan",
      "contract": "/reference/services/conventional-release-plan.json",
      "schemas": {
        "input": "/reference/schemas/conventional-release-plan.input.json",
        "output": "/reference/schemas/conventional-release-plan.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "coverage-set-optimize",
      "name": "Exact Declared Coverage Set",
      "description": "Find a proved minimum-cost subset covering up to 12 supplied requirement labels, then minimize cardinality and UTF-16 lexicographic IDs across at most 48 declared candidates.",
      "category": "structured",
      "intents": [
        "Find minimum-cost declared checks covering all supplied requirement labels",
        "Choose an exact small weighted set cover with deterministic tie-breaking"
      ],
      "whenToUse": [
        "Find minimum-cost declared checks covering all supplied requirement labels",
        "Choose an exact small weighted set cover with deterministic tie-breaking"
      ],
      "whenNotToUse": [
        "Real test coverage, code impact, reliability, scheduling, inferred capabilities, personnel selection or high-impact decisions about people",
        "Large or approximate optimization, negative/zero costs, repeated candidates or extra constraints",
        "Fetching files, reading a repository, executing code or tests, contacting agents, publishing releases, or changing remote state"
      ],
      "capabilities": [
        "Declared profile: exact-declared-set-cover-v1",
        "Exact 0/1 bitmask dynamic programming; objective is cost, cardinality, then sorted UTF-16 candidate IDs",
        "Positive integer costs and bounded safe-integer sum; input-order-independent optimum",
        "Infeasible only when union coverage misses requirements; reports sorted missing labels; empty universe has zero-cost optimum",
        "Deterministic supplied-input-only operation; no network, filesystem, shell or current-time dependence"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "profile": "exact-declared-set-cover-v1",
        "requirements": 12,
        "candidates": 48,
        "costUnits": 1000000000,
        "totalCostUnits": 48000000000,
        "idUnits": 64,
        "candidateStateTransitions": 196608,
        "candidateRankComparisons": 9437184
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "DUPLICATE_REQUIREMENT",
        "DUPLICATE_ID",
        "DUPLICATE_COVERAGE",
        "UNKNOWN_REQUIREMENT"
      ],
      "related": [
        "context-budget-pack",
        "workflow-resource-plan",
        "workflow-dag-analyze"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/coverage-set-optimize",
      "contract": "/reference/services/coverage-set-optimize.json",
      "schemas": {
        "input": "/reference/schemas/coverage-set-optimize.input.json",
        "output": "/reference/schemas/coverage-set-optimize.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "icalendar-compose",
      "name": "Standalone iCalendar Artifact Composer",
      "description": "Create exact UTF-8 iCalendar text for up to 64 supplied standalone date-only or UTC events, with caller UIDs/stamps, escaped literal text and byte-bounded folding; no account changes or invitations.",
      "category": "structured",
      "intents": [
        "Create an ICS file from supplied standalone events",
        "Encode all-day or UTC calendar events with exact literal text and caller identifiers"
      ],
      "whenToUse": [
        "Create an ICS file from supplied standalone events",
        "Encode all-day or UTC calendar events with exact literal text and caller identifiers"
      ],
      "whenNotToUse": [
        "Calendar booking, finding free time, sending invitations or proving import success",
        "Recurrence, attendees, organizers, alarms, URLs, attachments, custom properties, time zones or floating local time",
        "Uploading artifacts, executing database statements, sending invitations, accessing calendars or changing remote state"
      ],
      "capabilities": [
        "Declared profile: rfc5545-standalone-events-v1",
        "Strict Gregorian years 1900–2199; explicit exclusive end, unique caller UID and UTC DTSTAMP",
        "TEXT escaping, fixed property order, final CRLF and Unicode-scalar-safe folding at 75 UTF-8 octets including continuation space",
        "Empty supplied optional text emitted; absent fields omitted; no generated identifiers or timestamps",
        "Deterministic supplied-input-only artifact; no network, filesystem, database, shell, clock or randomness"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "events": 64,
        "summaryCodePoints": 1000,
        "locationCodePoints": 1000,
        "descriptionCodePoints": 8000,
        "textBytes": 60000,
        "wireBytes": 120000,
        "physicalLines": 4096,
        "uidBytes": 128,
        "years": "1900–2199",
        "profile": "rfc5545-standalone-events-v1"
      },
      "related": [
        "recurrence-dates-expand",
        "timezone-convert",
        "timestamp-convert"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "DUPLICATE_UID",
        "INVALID_CALENDAR_DATE",
        "INVALID_UTC_TIME",
        "INVALID_INTERVAL",
        "INVALID_TEXT_CONTROL",
        "TEXT_LIMIT",
        "CALENDAR_OUTPUT_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/icalendar-compose",
      "contract": "/reference/services/icalendar-compose.json",
      "schemas": {
        "input": "/reference/schemas/icalendar-compose.input.json",
        "output": "/reference/schemas/icalendar-compose.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "sql-select-compile",
      "name": "Bound Single-table SELECT Compiler",
      "description": "Compile one strict single-table SELECT AST for SQLite3 or PostgreSQL18 into quoted SQL, ordered bindings and source paths, with bounded predicates and explicit pagination; never execute SQL.",
      "category": "structured",
      "intents": [
        "Compile a bounded SELECT query and parameter bindings from a structured plan",
        "Build a single-table SQLite3 or PostgreSQL18 query handoff without interpolating literal values"
      ],
      "whenToUse": [
        "Compile a bounded SELECT query and parameter bindings from a structured plan",
        "Build a single-table SQLite3 or PostgreSQL18 query handoff without interpolating literal values"
      ],
      "whenNotToUse": [
        "Running SQL, database access, schema/type/permission checks or certifying safe execution",
        "Raw SQL, writes, joins, wildcard, aliases, expressions, functions, subqueries, arbitrary SQL dialects, floats or inferred types",
        "Uploading artifacts, executing database statements, sending invitations, accessing calendars or changing remote state"
      ],
      "capabilities": [
        "Declared profile: single-table-bound-select-v1",
        "Always double-quoted conservative identifiers; strings and safe integers bound separately from SQL",
        "Compare, IN, null checks, nested ALL/ANY/NOT; depth-first ordered binding paths including LIMIT/OFFSET",
        "Explicit SQLite3 ?N or PostgreSQL18 $N placeholders; no terminal semicolon or value interpolation",
        "Query syntax artifacts only; database collation, type affinity, cost and permissions are unverified",
        "Deterministic supplied-input-only artifact; no network, filesystem, database, shell, clock or randomness"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "columns": 64,
        "orderBy": 8,
        "identifierBytes": 63,
        "predicateNodes": 128,
        "predicateDepth": 8,
        "membershipValues": 64,
        "parameters": 256,
        "bindingTextBytes": 60000,
        "sqlBytes": 16000,
        "limit": 10000,
        "offset": 1000000,
        "profile": "single-table-bound-select-v1"
      },
      "related": [
        "records-filter",
        "records-project",
        "json-schema-check"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_IDENTIFIER",
        "DUPLICATE_COLUMN",
        "INVALID_PARAMETER",
        "EMPTY_PREDICATE",
        "PARAMETER_LIMIT",
        "PARAMETER_TEXT_LIMIT",
        "PREDICATE_LIMIT",
        "SQL_OUTPUT_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/sql-select-compile",
      "contract": "/reference/services/sql-select-compile.json",
      "schemas": {
        "input": "/reference/schemas/sql-select-compile.input.json",
        "output": "/reference/schemas/sql-select-compile.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "recurrence-dates-expand",
      "name": "Bounded Date Recurrence Expansion",
      "description": "Expand a strict date-only daily, weekly or monthly rule into a complete bounded window, with COUNT/UNTIL, explicit inclusion/exclusion dates and normalized supported RRULE text; no timezone or account access.",
      "category": "structured",
      "intents": [
        "Expand supplied date-only recurrence rules into explicit occurrence dates",
        "Generate complete daily, weekly or monthly dates inside a bounded window with exclusions"
      ],
      "whenToUse": [
        "Expand supplied date-only recurrence rules into explicit occurrence dates",
        "Generate complete daily, weekly or monthly dates inside a bounded window with exclusions"
      ],
      "whenNotToUse": [
        "General RRULE/ICS parsing, time zones, local times, DST, business calendars or finding free appointment slots",
        "Unbounded history, unsupported recurrence selectors, holiday guessing or scheduling account changes",
        "Uploading artifacts, executing database statements, sending invitations, accessing calendars or changing remote state"
      ],
      "capabilities": [
        "Declared profile: rfc5545-date-recurrence-subset-v1",
        "1900–2199 Gregorian dates; DAILY/WEEKLY/MONTHLY, explicit interval and exactly one COUNT or inclusive UNTIL",
        "Weekly selectors use explicit weekStart; monthly invalid dates skip rather than roll; DTSTART must match selectors",
        "COUNT counts valid rule instances before exclusions/window filtering; explicit inclusions union before exclusions",
        "Separate windowComplete and ruleFullyExpanded facts; capped expansion fails atomically instead of returning a truncated prefix",
        "Deterministic supplied-input-only artifact; no network, filesystem, database, shell, clock or randomness"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "originToWindowDays": 3660,
        "visitedDates": 3661,
        "ruleCandidates": 3661,
        "count": 512,
        "outputDates": 512,
        "rdates": 256,
        "exdates": 256,
        "interval": 120,
        "years": "1900–2199",
        "profile": "rfc5545-date-recurrence-subset-v1"
      },
      "related": [
        "icalendar-compose",
        "business-calendar-shift",
        "timezone-convert"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_DATE",
        "INVALID_WINDOW",
        "UNSUPPORTED_RULE",
        "UNSYNCHRONIZED_START",
        "RECURRENCE_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/recurrence-dates-expand",
      "contract": "/reference/services/recurrence-dates-expand.json",
      "schemas": {
        "input": "/reference/schemas/recurrence-dates-expand.input.json",
        "output": "/reference/schemas/recurrence-dates-expand.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "corpus-bm25-search",
      "name": "Search a supplied text corpus",
      "description": "Rank supplied documents with fixed-parameter lexical BM25 and exact original UTF-16 token spans. Scores are binary64 logarithm approximations ordered at 12 decimal places, with exact ID ties. No embeddings, persistent index, web search or semantic relevance guarantee.",
      "category": "text",
      "intents": [
        "Rank my supplied documents by lexical BM25",
        "Retrieve matching passages from caller-supplied text with exact token offsets"
      ],
      "whenToUse": [
        "Rank my supplied documents by lexical BM25",
        "Retrieve matching passages from caller-supplied text with exact token offsets"
      ],
      "whenNotToUse": [
        "Web search, semantic/vector search, linguistic segmentation, relevance certification or verifying whether a passage supports a claim",
        "Network calls, external actions, supplied-evidence authenticity or factual correctness certification"
      ],
      "capabilities": [
        "128 supplied documents and 16 queries; k1=1.2, b=0.75; distinct sorted query terms",
        "Unicode Letter/Number followed by Letter/Mark/Number runs, locale-independent lowercase, no normalization",
        "12-decimal approximate scores, exact ID tie-breaks, omitted-candidate and omitted-span evidence",
        "Networkless bounded computation; advisoryOnly=true; externalRequests=0"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "documents": 128,
        "queries": 16,
        "corpusBytes": 60000,
        "documentBytes": 20000,
        "corpusTokens": 12000,
        "corpusTerms": 4096,
        "queryTerms": 64,
        "queryCodePoints": 512,
        "tokenCodePoints": 128,
        "topK": 20,
        "hitSpans": 20,
        "contributionChecks": 131072
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "DUPLICATE_ID",
        "TEXT_LIMIT",
        "TOKEN_LIMIT",
        "TERM_LIMIT",
        "TOKEN_LENGTH_LIMIT"
      ],
      "related": [
        "text-chunk",
        "ranking-evaluate",
        "context-budget-pack"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/corpus-bm25-search",
      "contract": "/reference/services/corpus-bm25-search.json",
      "schemas": {
        "input": "/reference/schemas/corpus-bm25-search.input.json",
        "output": "/reference/schemas/corpus-bm25-search.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "decimal-distribution-summarize",
      "name": "Summarize exact decimal observations",
      "description": "Compute exact reduced-rational descriptive statistics and R type-7 quantiles from supplied decimal strings. Explicit null/error-or-omit policy, empty and singleton results, exact population/sample variance. No square roots, weighting, units, uncertainty or population inference.",
      "category": "data-assurance",
      "intents": [
        "Compute exact descriptive mean, variance, median and R7 percentiles from supplied decimal measurements",
        "Summarize decimal observations with explicit missing-value omission evidence"
      ],
      "whenToUse": [
        "Compute exact descriptive mean, variance, median and R7 percentiles from supplied decimal measurements",
        "Summarize decimal observations with explicit missing-value omission evidence"
      ],
      "whenNotToUse": [
        "Significance testing, confidence intervals, population estimates, verified measurements, standard deviation or automatic missing-value imputation",
        "Network calls, external actions, supplied-evidence authenticity or factual correctness certification"
      ],
      "capabilities": [
        "Exact decimal strings up to 24 integer and 18 fraction digits, reduced rational results",
        "R type-7 interpolation only; probability order retained and numerical duplicates reject",
        "Missing indexes explicit; empty observations return zero sum and null other statistics",
        "Networkless bounded computation; advisoryOnly=true; externalRequests=0"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "values": 1000,
        "quantiles": 21,
        "decimalIntegerDigits": 24,
        "decimalFractionDigits": 18,
        "rationalDigits": 2048,
        "arithmeticWorkSteps": 100000,
        "quantileMethod": "R7"
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "MISSING_VALUE",
        "INVALID_PROBABILITY",
        "DUPLICATE_PROBABILITY",
        "NUMERIC_COMPLEXITY"
      ],
      "related": [
        "localized-number-parse",
        "records-aggregate",
        "numeric-rounding-check"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/decimal-distribution-summarize",
      "contract": "/reference/services/decimal-distribution-summarize.json",
      "schemas": {
        "input": "/reference/schemas/decimal-distribution-summarize.input.json",
        "output": "/reference/schemas/decimal-distribution-summarize.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "message-variants-render",
      "name": "Render supplied message variants",
      "description": "Render bounded literal/argument/select/plural message trees for explicit cases using fixed CLDR47 integer cardinal rules for en/de/ja/ar/pt-BR/pt-PT. Exact branches precede categories; other is required. Returns selected branches and finite case coverage. No translation, escaping, ICU syntax or runtime Intl dependency.",
      "category": "text",
      "intents": [
        "Render supplied plural/select messages into concrete localized preview strings",
        "Preview fixed integer cardinal branches and finite case coverage for supplied message trees"
      ],
      "whenToUse": [
        "Render supplied plural/select messages into concrete localized preview strings",
        "Preview fixed integer cardinal branches and finite case coverage for supplied message trees"
      ],
      "whenNotToUse": [
        "Translate or verify language quality; parse full ICU MessageFormat; decimal/ordinal plurals; format dates/numbers; send messages; escape HTML or SQL",
        "Network calls, external actions, supplied-evidence authenticity or factual correctness certification"
      ],
      "capabilities": [
        "Flat unique-ownership fully reachable trees with all branches and variables validated before rendering",
        "CLDR47-derived integer-only en/de/ja/ar/pt-BR/pt-PT cardinal rules, no locale fallback or runtime Intl",
        "Exact-value overrides and required other branches, literal substitution, branch coverage over supplied cases only",
        "Networkless bounded computation; advisoryOnly=true; externalRequests=0"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "nodes": 512,
        "branchDepth": 8,
        "branchesPerChoice": 16,
        "variables": 128,
        "cases": 128,
        "literalValueBytes": 60000,
        "caseTextBytes": 20000,
        "totalTextBytes": 200000,
        "renderNodeVisits": 65536,
        "pluralCountMaximum": 1000000000,
        "cldrVersion": "47"
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "DUPLICATE_ID",
        "INVALID_MESSAGE_TREE",
        "DUPLICATE_BRANCH",
        "MISSING_OTHER",
        "VARIABLE_TYPE_CONFLICT",
        "MISSING_VARIABLE",
        "EXTRA_VARIABLE",
        "INVALID_COUNT",
        "TEXT_LIMIT",
        "RENDER_LIMIT"
      ],
      "related": [
        "localization-bundle-build",
        "template-render"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/message-variants-render",
      "contract": "/reference/services/message-variants-render.json",
      "schemas": {
        "input": "/reference/schemas/message-variants-render.input.json",
        "output": "/reference/schemas/message-variants-render.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "svg-bar-chart-compose",
      "name": "Compose a fixed SVG bar chart",
      "description": "Turn 1–24 supplied labeled nonnegative integer values and an explicit domain into an inert accessible horizontal bar-chart SVG, plain-text alternative and exact geometry.",
      "category": "structured",
      "intents": [
        "Generate a standalone SVG bar chart from computed counts",
        "Create a deterministic horizontal chart and text alternative"
      ],
      "whenToUse": [
        "Already-computed nonnegative integer rows with a caller-selected zero-based domain"
      ],
      "whenNotToUse": [
        "Aggregating data, inferring domains, negative/fractional values, log scales, stacked bars or time axes",
        "Rendering, printing, writing files, uploading, publishing, or changing remote state",
        "Supplying custom SVG, HTML, CSS, fonts, images, links, scripts or external resources",
        "Guaranteeing font appearance, printer alignment, source authenticity or accessibility compliance"
      ],
      "capabilities": [
        "Ordered fixed geometry, visible exact values, title/description and caller-prefixed accessible IDs",
        "Escaped literal text in an original fixed inert SVG serializer",
        "Deterministic supplied-input-only artifact with no network, clock or randomness"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "profile": "svg-nonnegative-horizontal-bars-v1",
        "rows": 24,
        "labelAsciiCharacters": 16,
        "titleScalars": 80,
        "idPrefixCharacters": 32,
        "maximumValue": 1000000000,
        "widthPixels": 720,
        "maximumProjectedResultBytes": 30560
      },
      "related": [
        "decimal-distribution-summarize",
        "records-aggregate",
        "label-sheet-compose"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "TITLE_LIMIT",
        "EMPTY_TITLE",
        "INVALID_TEXT_CONTROL",
        "VALUE_OUTSIDE_DOMAIN"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/svg-bar-chart-compose",
      "contract": "/reference/services/svg-bar-chart-compose.json",
      "schemas": {
        "input": "/reference/schemas/svg-bar-chart-compose.input.json",
        "output": "/reference/schemas/svg-bar-chart-compose.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "label-sheet-compose",
      "name": "Compose printable SVG label sheets",
      "description": "Fit 1–100 short ASCII labels onto supplied integer-micrometre stock, skip first-page used slots and return deterministic row-major placements and up to 20 inert printable SVG sheets.",
      "category": "structured",
      "intents": [
        "Generate printable vector inventory label sheets",
        "Paginate short labels into a physical stock grid with used first-page slots"
      ],
      "whenToUse": [
        "Explicit micrometre page, margin, gap and cell dimensions with one short line per label"
      ],
      "whenNotToUse": [
        "Printer control, barcode generation, postal verification, rotation, optimal nesting, supplied fonts or automatic text fitting",
        "Rendering, printing, writing files, uploading, publishing, or changing remote state",
        "Supplying custom SVG, HTML, CSS, fonts, images, links, scripts or external resources",
        "Guaranteeing font appearance, printer alignment, source authenticity or accessibility compliance"
      ],
      "capabilities": [
        "Exact integer grid, physical millimetre SVG sizes, occupied-cell outlines and ordered placement manifest",
        "Explicit 3/5-em text advance, quarter-em descent reserve and fixed 2,000 micrometre padding",
        "Escaped literal text in an original fixed inert SVG serializer",
        "Deterministic supplied-input-only artifact with no network, clock or randomness"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "profile": "micrometre-grid-labels-v1",
        "labels": 100,
        "labelAsciiCharacters": 16,
        "pages": 20,
        "pageDimensionUm": 1000000,
        "minimumMarginUm": 50,
        "outlineStrokeUm": 100,
        "paddingUm": 2000,
        "descentReserve": "ceil(fontSizeUm / 4)",
        "maximumProjectedResultBytes": 111000
      },
      "related": [
        "svg-bar-chart-compose"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "LABEL_WHITESPACE",
        "LABEL_TEXT_FIT",
        "NO_LABEL_CAPACITY",
        "START_SLOT_OUTSIDE_GRID",
        "PAGE_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/label-sheet-compose",
      "contract": "/reference/services/label-sheet-compose.json",
      "schemas": {
        "input": "/reference/schemas/label-sheet-compose.input.json",
        "output": "/reference/schemas/label-sheet-compose.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "ustar-bundle-compose",
      "name": "Reproducible portable USTAR bundle composer",
      "description": "WHEN TO USE: Package 1–32 supplied named UTF-8 or binary artifacts into exact reproducible regular-file USTAR bytes, canonical Base64, SHA-256 and a sorted source-index/offset manifest. Restricted portable ASCII relative paths, fixed nonexecutable metadata, no compression, archive extraction, filesystem reads/writes or universal safe-extraction claim.",
      "category": "structured",
      "intents": [
        "Package supplied named artifacts as an exact reproducible tar archive",
        "Create a byte-addressed bundle with content hashes and source indexes"
      ],
      "whenToUse": [
        "Package supplied named artifacts as an exact reproducible tar archive",
        "Create a byte-addressed bundle with content hashes and source indexes"
      ],
      "whenNotToUse": [
        "ZIP, gzip, compression, directories, links, devices, executable modes, permissions or ownership preservation",
        "Reading paths, extracting archives, PAX/GNU extensions or universal cross-platform extraction safety",
        "Sending, uploading, extracting archives, writing files, authenticating identities, or changing external state"
      ],
      "capabilities": [
        "Profile portable-regular-ustar-v1; ASCII-byte path ordering with case-insensitive collision rejection",
        "Fixed 0644 regular files; zero uid/gid/mtime, empty owner names; exact two-block terminator",
        "SHA-256 over decoded bytes; sidecar manifest is not an archive member",
        "Deterministic supplied-input-only artifact; zero external requests and no current-time dependence"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "profile": "portable-regular-ustar-v1",
        "files": 32,
        "pathBytes": 100,
        "segmentBytes": 64,
        "payloadBytes": 60000,
        "archiveBytes": 93696,
        "extraction": "never performed; consumers still require safe extraction"
      },
      "related": [
        "oci-artifact-compose",
        "multipart-form-encode",
        "content-digest"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_PATH",
        "DUPLICATE_PATH",
        "PATH_COLLISION",
        "INVALID_BASE64",
        "PAYLOAD_LIMIT",
        "ARCHIVE_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/ustar-bundle-compose",
      "contract": "/reference/services/ustar-bundle-compose.json",
      "schemas": {
        "input": "/reference/schemas/ustar-bundle-compose.input.json",
        "output": "/reference/schemas/ustar-bundle-compose.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "mime-email-compose",
      "name": "Inert RFC email message composer",
      "description": "WHEN TO USE: Create exact inert .eml message text from caller-supplied From, ordered To, UTC timestamp, Message-ID, subject and text. Restricted ASCII mailboxes, deterministic MIME Base64 UTF-8 body and safe folded encoded subjects. Does not send email, create mailbox drafts, authenticate identities, look up domains or promise delivery.",
      "category": "structured",
      "intents": [
        "Compose a complete deterministic .eml draft artifact for later caller-controlled import or transport",
        "Encode explicit sender, recipients, timestamp, message ID and plain text as an RFC MIME message"
      ],
      "whenToUse": [
        "Compose a complete deterministic .eml draft artifact for later caller-controlled import or transport",
        "Encode explicit sender, recipients, timestamp, message ID and plain text as an RFC MIME message"
      ],
      "whenNotToUse": [
        "Sending email, mailbox access, deliverability checks, DNS or authenticated sender identity",
        "HTML, attachments, display names, quoted mailboxes, groups, SMTPUTF8, Cc/Bcc, custom headers or DKIM",
        "Sending, uploading, extracting archives, writing files, authenticating identities, or changing external state"
      ],
      "capabilities": [
        "Profile rfc5322-text-message-v1; eight fixed headers and Base64 text/plain UTF-8",
        "Supplied whole-second UTC date and message ID; exact CRLF body normalization without adding decoded newlines",
        "Subject encoded words split only at scalar boundaries; literal encoded-word-looking text cannot become MIME syntax",
        "Deterministic supplied-input-only artifact; zero external requests and no current-time dependence"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "profile": "rfc5322-text-message-v1",
        "recipients": 10,
        "mailboxBytes": 254,
        "localPartBytes": 64,
        "subjectScalars": 200,
        "subjectBytes": 600,
        "sourceBodyBytes": 40000,
        "canonicalBodyBytes": 40000,
        "wireBytes": 70000,
        "headerLineBytes": 998,
        "encodedWordSourceBytes": 42,
        "identities": "caller claims, not authenticated"
      },
      "related": [
        "multipart-form-encode",
        "icalendar-compose",
        "email-domain-readiness"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_MAILBOX",
        "INVALID_TIMESTAMP",
        "HEADER_CONTROL",
        "DUPLICATE_RECIPIENT",
        "SUBJECT_LIMIT",
        "SUBJECT_WHITESPACE",
        "BODY_CONTROL",
        "TEXT_LIMIT",
        "HEADER_LIMIT",
        "WIRE_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/mime-email-compose",
      "contract": "/reference/services/mime-email-compose.json",
      "schemas": {
        "input": "/reference/schemas/mime-email-compose.input.json",
        "output": "/reference/schemas/mime-email-compose.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "gfm-table-compose",
      "name": "Literal-cell GFM table composer",
      "description": "WHEN TO USE: Turn an explicit rectangular string matrix into a paste-ready GitHub Flavored Markdown table with exact literal-cell escaping and supplied column alignments. Escapes every ASCII punctuation character, preserving cell text in the declared GFM profile. ASCII @ is rejected to prevent GFM email autolinks. No raw Markdown, HTML, links, newline substitution, display-width padding or non-GFM rendering guarantee.",
      "category": "structured",
      "intents": [
        "Compose paste-ready literal-cell GFM tables from supplied rows",
        "Serialize a rectangular string matrix as Markdown with explicit column alignments"
      ],
      "whenToUse": [
        "Compose paste-ready literal-cell GFM tables from supplied rows",
        "Serialize a rectangular string matrix as Markdown with explicit column alignments"
      ],
      "whenNotToUse": [
        "ASCII @ or email-address cells; GFM email autolinking cannot be suppressed with punctuation escapes",
        "Parsing tables, CSV conversion, raw Markdown or HTML cells, links, code spans or multiline cells",
        "Pixel alignment, display-width padding or exact behavior on non-GFM renderers; browsers may collapse repeated spaces",
        "Sending, uploading, extracting archives, writing files, authenticating identities, or changing external state"
      ],
      "capabilities": [
        "Profile gfm-literal-table-v1; ASCII @ is rejected; every other CommonMark ASCII punctuation character is backslash-escaped",
        "Exact rectangular dimensions, explicit left/center/right alignment and final LF",
        "Empty cells and duplicate headers remain strings, without implicit object conversion",
        "Deterministic supplied-input-only artifact; zero external requests and no current-time dependence"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "profile": "gfm-literal-table-v1",
        "columns": 20,
        "rows": 100,
        "cellScalars": 200,
        "aggregateCellBytes": 20000,
        "atSign": "rejected to prevent unavoidable GFM email autolinking",
        "renderedSpaces": "browser layout may collapse repeated spaces"
      },
      "related": [
        "markdown-table-extract",
        "csv-serialize",
        "record-relations"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "TABLE_SHAPE",
        "CELL_AUTOLINK",
        "CELL_LIMIT",
        "CELL_CONTROL",
        "CELL_WHITESPACE",
        "TABLE_LIMIT"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/gfm-table-compose",
      "contract": "/reference/services/gfm-table-compose.json",
      "schemas": {
        "input": "/reference/schemas/gfm-table-compose.input.json",
        "output": "/reference/schemas/gfm-table-compose.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "qr-code-compose",
      "name": "Compose an ASCII QR matrix or SVG",
      "description": "Encode 1–64 supplied printable ASCII bytes as a bounded Model 2 QR code using explicit version, error correction and mask; return unbordered module rows or inert black-and-white SVG with a four-module quiet zone.",
      "category": "structured",
      "intents": [
        "Generate a reproducible QR handoff label from ASCII text",
        "Create a decodable QR SVG or raw module matrix with explicit settings"
      ],
      "whenToUse": [
        "Caller-selected version 1–5, ECC and mask for a short printable ASCII payload"
      ],
      "whenNotToUse": [
        "Opening or judging encoded URLs, verifying destination safety, authenticating payloads or transferring funds",
        "Unicode/ECI, arbitrary binary, automatic segmentation/version/ECC, Kanji, micro-QR, logos, colors or camera/print reliability guarantees",
        "Rendering, printing, writing files, uploading, publishing, or changing remote state",
        "Supplying custom SVG, HTML, CSS, fonts, images, links, scripts or external resources",
        "Guaranteeing font appearance, printer alignment, source authenticity or accessibility compliance"
      ],
      "capabilities": [
        "Pinned maintained qr@0.7.2 byte-mode encoder, no handwritten QR engine",
        "Independent synthetic ZXing decoder verification; deterministic module matrix and original escaped SVG serialization",
        "Escaped literal text in an original fixed inert SVG serializer",
        "Deterministic supplied-input-only artifact with no network, clock or randomness"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "profile": "qr-model2-ascii-byte-v1",
        "payloadAsciiBytes": 64,
        "minimumVersion": 1,
        "maximumVersion": 5,
        "maximumModuleCount": 37,
        "quietZoneModules": 4,
        "maximumProjectedResultBytes": 20000
      },
      "related": [
        "label-sheet-compose",
        "svg-bar-chart-compose",
        "url-inspect"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "CAPACITY_EXCEEDED",
        "ENCODER_FAILURE"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/qr-code-compose",
      "contract": "/reference/services/qr-code-compose.json",
      "schemas": {
        "input": "/reference/schemas/qr-code-compose.input.json",
        "output": "/reference/schemas/qr-code-compose.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "zip-store-compose",
      "name": "Reproducible portable ZIP STORE composer",
      "description": "WHEN TO USE: Package 1–32 supplied files as exact deterministic ZIP STORE bytes, CRC32, SHA-256 and member offsets for ZIP consumers. Restricted portable ASCII paths, fixed metadata, no compression, extraction, ZIP64, encryption, links or executable permissions. Does not create office-document formats or guarantee safe consumer extraction.",
      "category": "structured",
      "intents": [
        "Package supplied files as a reproducible uncompressed ZIP archive",
        "Create a ZIP container for a consumer that does not accept TAR"
      ],
      "whenToUse": [
        "Need exact classic ZIP STORE bytes from explicit named file data"
      ],
      "whenNotToUse": [
        "Reading or extracting ZIP, compression, encryption, signing, ZIP64 or filesystem paths",
        "Creating DOCX, XLSX or EPUB semantic package formats",
        "Extracting archives, writing files, uploading, publishing, or changing external state"
      ],
      "capabilities": [
        "Profile portable-store-zip-v1; exact ASCII path ordering, no name or ancestor collisions",
        "Fixed DOS 1980-01-01 00:00:00, creator 0, versions 10, flags 0 and archive attribute 0x20",
        "CRC32 and SHA-256 of each payload plus archive SHA-256; integrity is not authenticity",
        "Deterministic supplied-input-only bytes; no network, clock, randomness or decompression"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "profile": "portable-store-zip-v1",
        "files": 32,
        "pathBytes": 100,
        "segmentBytes": 64,
        "payloadBytes": 60000,
        "archiveBytes": 68854
      },
      "related": [
        "ustar-bundle-compose",
        "content-digest",
        "multipart-form-encode"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_BASE64",
        "PAYLOAD_LIMIT",
        "INVALID_PATH",
        "DUPLICATE_PATH",
        "PATH_COLLISION",
        "ARCHIVE_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/zip-store-compose",
      "contract": "/reference/services/zip-store-compose.json",
      "schemas": {
        "input": "/reference/schemas/zip-store-compose.input.json",
        "output": "/reference/schemas/zip-store-compose.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "text-bytes-transcode",
      "name": "Strict explicit Unicode and Latin1 byte transcoder",
      "description": "WHEN TO USE: Convert caller-supplied Base64 text-file bytes between explicit UTF-8, UTF-16LE, UTF-16BE and reversible Latin1 byte mapping with strict BOM rules. Rejects malformed sequences and unrepresentable scalars without replacements. No charset detection, Windows-1252 aliases, normalization, newline conversion or plaintext echo.",
      "category": "structured",
      "intents": [
        "Convert supplied file bytes to an explicitly declared importer encoding",
        "Strictly transcode UTF-8 UTF-16 and true Latin1 byte-map data"
      ],
      "whenToUse": [
        "Know both source and target encoding and explicit initial-BOM policy"
      ],
      "whenNotToUse": [
        "Guessing encodings, repairing mojibake, lossy replacement, newline conversion or Unicode normalization",
        "Windows-1252, ASCII aliases, ISO-8859-1 WHATWG label handling or arbitrary legacy code pages",
        "Blind transcoding of fixed byte-column files whose layout depends on original encoding",
        "Extracting archives, writing files, uploading, publishing, or changing external state"
      ],
      "capabilities": [
        "Profile strict-unicode-latin1-bytes-v1; byte N maps exactly to U+00NN including 0x80–0x9F",
        "Remove at most one declared initial BOM; preserve subsequent U+FEFF; opposite UTF-16 BOM rejected",
        "Strict scalar validation and exact target-size preflight before output allocation",
        "Deterministic supplied-input-only bytes; no network, clock, randomness or decompression"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "profile": "strict-unicode-latin1-bytes-v1",
        "decodedInputBytes": 60000,
        "scalars": 60000,
        "encodedOutputBytes": 120003
      },
      "related": [
        "base64-convert",
        "blob-decode",
        "multipart-form-encode"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_BASE64",
        "PAYLOAD_LIMIT",
        "BOM_POLICY",
        "BOM_MISMATCH",
        "BOM_FORBIDDEN",
        "BOM_REQUIRED",
        "INVALID_TEXT_BYTES",
        "SCALAR_LIMIT",
        "UNREPRESENTABLE_SCALAR",
        "TEXT_OUTPUT_LIMIT"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/text-bytes-transcode",
      "contract": "/reference/services/text-bytes-transcode.json",
      "schemas": {
        "input": "/reference/schemas/text-bytes-transcode.input.json",
        "output": "/reference/schemas/text-bytes-transcode.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "png-selected-chunks-remove",
      "name": "PNG framed selected-chunk removal",
      "description": "WHEN TO USE: Remove every PNG chunk of explicitly selected tEXt, zTXt, iTXt, eXIf or tIME types while retaining other bytes exactly. Checks CRC/framing and restricted static 8-bit RGB/RGBA headers only. Does not decode IDAT, guarantee valid images, sanitize all metadata, anonymize pixels or guarantee unchanged visual interpretation; EXIF removal may change orientation.",
      "category": "structured",
      "intents": [
        "Remove explicitly selected PNG text EXIF or time chunks from supplied bytes",
        "Keep PNG critical and unselected ancillary byte ranges unchanged while deleting selected chunk types"
      ],
      "whenToUse": [
        "Need bounded chunk-type removal under a container-framing-only guarantee"
      ],
      "whenNotToUse": [
        "Complete metadata scrubbing, privacy sanitization, anonymization, valid-image certification or guaranteed visual equivalence",
        "JPEG, WebP, HEIC, TIFF, palettes, transparency keys, APNG, interlacing or unsupported PNG headers",
        "Decoding pixels, validating compressed image data, decompressing embedded text or parsing EXIF/ICC semantics",
        "Extracting archives, writing files, uploading, publishing, or changing external state"
      ],
      "capabilities": [
        "Profile png-framed-selected-removal-v1; verify signature, CRCs, first IHDR, contiguous nonempty IDAT and terminal IEND",
        "Retain unselected chunks byte-for-byte and in order; removed audit contains types and offsets only",
        "Unselected ancillary chunks and visible pixels may still carry identifying information; EXIF removal can change interpretation",
        "Deterministic supplied-input-only bytes; no network, clock, randomness or decompression"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "profile": "png-framed-selected-removal-v1",
        "decodedInputBytes": 60000,
        "outputPngBytes": 60000,
        "chunks": 128,
        "dimension": 4096,
        "pixels": 1000000,
        "verification": "container-framing-only"
      },
      "related": [
        "content-digest",
        "base64-convert",
        "zip-store-compose"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_BASE64",
        "PAYLOAD_LIMIT",
        "DUPLICATE_SELECTION",
        "PNG_SIGNATURE",
        "PNG_CHUNK_LIMIT",
        "PNG_LENGTH",
        "PNG_CHUNK_TYPE",
        "PNG_CRC",
        "PNG_STRUCTURE",
        "PNG_DIMENSIONS",
        "PNG_PROFILE",
        "PNG_CRITICAL_CHUNK"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/png-selected-chunks-remove",
      "contract": "/reference/services/png-selected-chunks-remove.json",
      "schemas": {
        "input": "/reference/schemas/png-selected-chunks-remove.input.json",
        "output": "/reference/schemas/png-selected-chunks-remove.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "captions-retime-convert",
      "name": "Retime and convert literal captions",
      "description": "Convert a strict plain SRT/WebVTT caption file with caller-supplied rational time scaling and offset, returning canonical caption text and an exact cue timing map.",
      "category": "text",
      "intents": [
        "Convert supplied plain SRT subtitles to WebVTT or WebVTT to SRT",
        "Shift subtitle cue times by a known offset or correct constant drift using explicit rational scaling"
      ],
      "whenToUse": [
        "Supplied literal caption text with explicit hour timestamps and a known affine millisecond transform"
      ],
      "whenNotToUse": [
        "Transcription, translation, speaker identification, media access, inferred sync anchors or guaranteed audiovisual alignment",
        "Rich captions, markup, entities, whitespace-only cue lines, cue settings, STYLE, REGION, NOTE or arbitrary WebVTT identifiers",
        "Fetching, uploading, sending, writing files, accessing media or changing external state"
      ],
      "capabilities": [
        "Exact BigInt rational endpoint transformation with one nearest-ties-even millisecond rounding",
        "Canonical LF timestamps and cue indexes, preserved literal text and source/output timing map",
        "Atomic rejection of unsupported grammar, unordered starts, range violations or collapsed durations",
        "Deterministic supplied-input-only inert artifact with no network, clock or randomness"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "profile": "literal-captions-affine-ms-v1",
        "sourceBytes": 60000,
        "cues": 1000,
        "totalCueTextBytes": 40000,
        "linesPerCue": 20,
        "captionOutputBytes": 100000,
        "maximumTimeMs": 359999999,
        "maximumScalePart": 1000000,
        "scaleRange": "1/1000 through 1000",
        "webvttIds": "all absent or all contiguous numeric 1..N"
      },
      "related": [
        "text-bytes-transcode",
        "zip-store-compose",
        "timestamp-convert"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "CAPTION_SOURCE_LIMIT",
        "CAPTION_SCALE_RANGE",
        "CAPTION_SYNTAX",
        "CAPTION_TEXT_PROFILE",
        "CAPTION_CUE_LIMIT",
        "CAPTION_DURATION",
        "CAPTION_ORDER",
        "CAPTION_TEXT_LIMIT",
        "CAPTION_TIME_RANGE",
        "CAPTION_OUTPUT_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/captions-retime-convert",
      "contract": "/reference/services/captions-retime-convert.json",
      "schemas": {
        "input": "/reference/schemas/captions-retime-convert.input.json",
        "output": "/reference/schemas/captions-retime-convert.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "fixed-width-records-compose",
      "name": "Compose UTF-8 byte-column records",
      "description": "Write a real fixed-width UTF-8 import artifact from caller-declared byte columns and string records, with explicit ASCII padding, strict overflow rejection and byte offset manifest.",
      "category": "text",
      "intents": [
        "Create fixed-width UTF-8 record files with exact byte column positions",
        "Pad string fields to supplied byte widths for a fixed-width importer"
      ],
      "whenToUse": [
        "Explicit UTF-8 byte column layout, ASCII pad characters and exact-key string records"
      ],
      "whenNotToUse": [
        "Terminal display width, glyph alignment, packed decimals, spreadsheet formatting or named bank/government formats",
        "Truncation, numeric coercion, parsing fixed-width input or CSV comparison",
        "Blind transcoding after layout; changing encoding can invalidate UTF-8 byte widths",
        "Fetching, uploading, sending, writing files, accessing media or changing external state"
      ],
      "capabilities": [
        "Exact UTF-8 byte widths, caller-selected left/right ASCII padding and LF/CRLF framing",
        "Ordered records and columns, zero-based end-exclusive per-record column offsets and row byte offsets",
        "Atomic rejection of overflow or mismatched row keys without truncation",
        "Deterministic supplied-input-only inert artifact with no network, clock or randomness"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "profile": "utf8-byte-column-records-v1",
        "encoding": "UTF-8",
        "columns": 32,
        "maximumColumnBytes": 256,
        "maximumRecordBytes": 4096,
        "rows": 1000,
        "textOutputBytes": 100000
      },
      "related": [
        "csv-serialize",
        "template-render",
        "zip-store-compose"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "RECORD_COLUMN_NAME",
        "RECORD_DUPLICATE_COLUMN",
        "RECORD_WIDTH_LIMIT",
        "RECORD_OUTPUT_LIMIT",
        "RECORD_ROW_KEYS",
        "RECORD_TEXT_PROFILE",
        "RECORD_OVERFLOW"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/fixed-width-records-compose",
      "contract": "/reference/services/fixed-width-records-compose.json",
      "schemas": {
        "input": "/reference/schemas/fixed-width-records-compose.input.json",
        "output": "/reference/schemas/fixed-width-records-compose.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "json-selector-redact",
      "name": "Explicit structural JSON redaction",
      "description": "Remove object members or replace selected JSON subtrees with caller-supplied scalars using bounded typed selectors. Original-snapshot matching, expected-count guards and overlap rejection make edits atomic. Optional audit omission; no secret discovery, PII inference, anonymization or safe-to-share guarantee.",
      "category": "structured",
      "intents": [
        "redact explicit JSON fields across repeated records",
        "remove selected object members with expected match counts",
        "replace structured JSON subtrees with explicit scalar placeholders"
      ],
      "whenToUse": [
        "Caller knows which structural fields must be removed or replaced",
        "Guard a repeated-record cleanup with exact match counts and simultaneous edits"
      ],
      "whenNotToUse": [
        "Discover secrets or infer personal information from meaning",
        "Guarantee anonymity or that remaining data is safe to share",
        "Apply arbitrary JSONPath, regex, recursive descent or scripts",
        "Remove array elements or reorder their identity",
        "Known exact-pointer edits already fit JSON Patch",
        "Read files, send documents, fetch data or change external state"
      ],
      "capabilities": [
        "Declared profile: explicit-structural-redaction-v1",
        "Typed key/index/anyKey/anyIndex selectors with exact own-property matching",
        "Resolve against the original snapshot, guard match counts, reject duplicate and ancestor targets, then clone",
        "Audit contains only caller rule IDs, escaped JSON Pointer paths, action names and counts; includeAudit=false omits both audit and counts",
        "Audit paths/counts and the retained document can expose sensitive structure; callers control replacement values",
        "Deterministic input-only result; no network, clock, randomness, filesystem or runtime dependencies"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "rules": 64,
        "selectorTokens": 20,
        "selectedTargets": 2000,
        "selectorVisits": 250000,
        "profile": "explicit-structural-redaction-v1",
        "ruleIdScalars": 64,
        "selectorIndexMaximum": 9007199254740991
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_INPUT",
        "DUPLICATE_RULE_ID",
        "INVALID_MATCH_BOUNDS",
        "SELECTOR_VISIT_LIMIT",
        "MATCH_COUNT",
        "TARGET_LIMIT",
        "INVALID_REMOVE_TARGET",
        "TARGET_CONFLICT"
      ],
      "related": [
        "json-patch",
        "pii-redact",
        "json-batch-encode"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/json-selector-redact",
      "contract": "/reference/services/json-selector-redact.json",
      "schemas": {
        "input": "/reference/schemas/json-selector-redact.input.json",
        "output": "/reference/schemas/json-selector-redact.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "records-map-transform",
      "name": "Nested record mapping with guarded patches",
      "description": "Construct nested destination records from explicit copy, literal and exact-string lookup rules. Return bounded provenance and optional root-test-guarded RFC 6902 patches. Object destinations only; no implicit coercion, expressions, array expansion, writes or source authenticity checks.",
      "category": "structured",
      "intents": [
        "Adapt records into a nested import schema with provenance",
        "Generate guarded reviewable record migration patches"
      ],
      "whenToUse": [
        "Map supplied records to nested object destinations using a bounded declarative mapping"
      ],
      "whenNotToUse": [
        "Flat field selection only; use records-project",
        "General expressions, recursive array mapping, joins, coercion or redaction",
        "Executing code, writing files, environment changes, network requests, publishing or deployment"
      ],
      "capabilities": [
        "Resolve all sources against the original row; no order-sensitive destination overwrite",
        "Numeric destination segments are object names; source arrays require canonical indexes",
        "Missing-null copy uses default disposition and sourcePresent=false; omitted mappings remain in lineage",
        "Patches include the original source row in a root test and do not authorize a write",
        "Patch modes also pass the released json-patch consumer, including every intermediate-state size/depth/container limit",
        "Aggregate mapped destinations and consumer node/character work have explicit pre-challenge budgets",
        "Complete bounded computation before payment challenge and execution; externalRequests=0"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "records": 128,
        "rules": 32,
        "pointerDepth": 12,
        "pointerUnits": 1024,
        "lookupPairsPerRule": 64,
        "lookupPairsTotal": 512,
        "patchesPerRow": 100,
        "patchesTotal": 2000,
        "projectedDestinationBytes": 400000,
        "destinationJsonNodes": 12000,
        "patchConsumerNodeWork": 50000,
        "patchConsumerCharacterWork": 5000000,
        "patchConsumerContainerEntries": 1000,
        "patchConsumerJsonNodes": 20000,
        "patchConsumerJsonCharacters": 100000,
        "patchConsumerDepth": 32
      },
      "related": [
        "records-project",
        "json-structural-diff",
        "json-patch",
        "json-batch-encode"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_POINTER",
        "POINTER_LIMIT",
        "INVALID_ARRAY_INDEX",
        "DUPLICATE_ID",
        "DUPLICATE_LOOKUP_KEY",
        "LOOKUP_LIMIT",
        "DESTINATION_COLLISION",
        "MISSING_SOURCE",
        "LOOKUP_TYPE",
        "UNKNOWN_LOOKUP_KEY",
        "PATCH_LIMIT",
        "PATCH_COMPOSITION",
        "MAPPING_WORK_LIMIT",
        "PATCH_WORK_LIMIT",
        "ITEM_LIMIT",
        "SIZE_LIMIT",
        "DEPTH_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/records-map-transform",
      "contract": "/reference/services/records-map-transform.json",
      "schemas": {
        "input": "/reference/schemas/records-map-transform.input.json",
        "output": "/reference/schemas/records-map-transform.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "cost-matrix-round",
      "name": "Exact two-margin matrix rounding",
      "description": "Round a supplied decimal allocation matrix to exact integer floor/ceiling cells while preserving both declared margins, minimizing absolute error and breaking ties lexicographically; return a verifiable optimum or infeasibility witness. No payments, accounting advice or execution.",
      "category": "workflow-assurance",
      "intents": [
        "Round fractional allocations while preserving row and column totals",
        "Reconcile a supplied allocation matrix into integer minor units"
      ],
      "whenToUse": [
        "Caller supplies both exact margins and requires the minimum absolute rounding error"
      ],
      "whenNotToUse": [
        "Actual financial allocation, posting ledgers, payments or accounting advice",
        "Automatically choosing margins or unconstrained proportional apportionment"
      ],
      "capabilities": [
        "Exact decimal BigInt arithmetic with deterministic UTF-16 ID order",
        "Independent residual-potential optimum certificates or bounded infeasibility witnesses",
        "Well-formed infeasible inputs return no usable matrix; pure full evaluation before payment challenge"
      ],
      "related": [
        "integer-apportion",
        "gfm-table-compose"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "rows": 8,
        "columns": 8,
        "cells": 64,
        "decimalIntegerDigits": 18,
        "decimalFractionDigits": 6,
        "targetDigits": 24,
        "vertices": 18,
        "residualArcs": 160,
        "augmentations": 64,
        "maximumRelaxationChecks": 176960
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "DUPLICATE_ID",
        "MATRIX_DIMENSIONS",
        "MARGIN_TOTAL_MISMATCH",
        "INTERNAL_CERTIFICATE"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/cost-matrix-round",
      "contract": "/reference/services/cost-matrix-round.json",
      "schemas": {
        "input": "/reference/schemas/cost-matrix-round.input.json",
        "output": "/reference/schemas/cost-matrix-round.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "assignment-cost-optimize",
      "name": "Exact fixed-slot cost assignment",
      "description": "Choose an exact minimum-cost complete one-job-per-slot assignment over caller-declared nonoverlapping slots and admissible edges, with lexical ties and a verifiable optimum or Hall-deficiency certificate. No live availability check, reservation or job dispatch.",
      "category": "workflow-assurance",
      "intents": [
        "Assign independent jobs to fixed slots at minimum total cost",
        "Optimize exact one-to-one job and slot pairing with forbidden assignments"
      ],
      "whenToUse": [
        "Caller declares all admissible edges and pairwise nonoverlapping slots in one time coordinate system"
      ],
      "whenNotToUse": [
        "General precedence or resource scheduling, overlapping slots, travel-time or skill inference",
        "Live calendar availability, slot reservation, real job dispatch, payments or currency conversion"
      ],
      "capabilities": [
        "Exact decimal BigInt optimization with lexical slot-ID ties in sorted job order",
        "Complete assignments and start-ordered inert schedules with residual-potential optimum certificates",
        "Maximum cardinality and a Hall-deficient job-set witness when no complete schedule exists",
        "Pure full evaluation before payment challenge; valid infeasible results contain no usable schedule"
      ],
      "related": [
        "workflow-resource-plan",
        "interval-analyze"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "jobs": 16,
        "slots": 32,
        "edges": 512,
        "tickMaximum": 1000000000000,
        "decimalIntegerDigits": 12,
        "decimalFractionDigits": 6,
        "vertices": 50,
        "residualArcs": 1120,
        "augmentations": 16,
        "maximumVertexSelectionChecks": 40000,
        "maximumEdgeRelaxationChecks": 17920
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "DUPLICATE_ID",
        "INVALID_SLOT",
        "OVERLAPPING_SLOTS",
        "UNKNOWN_EDGE_ID",
        "DUPLICATE_EDGE",
        "INTERNAL_CERTIFICATE"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/assignment-cost-optimize",
      "contract": "/reference/services/assignment-cost-optimize.json",
      "schemas": {
        "input": "/reference/schemas/assignment-cost-optimize.input.json",
        "output": "/reference/schemas/assignment-cost-optimize.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "merkle-bundle-compose",
      "name": "Count-bound Merkle artifact bundle",
      "description": "Compose a local SHA-256 Merkle content commitment binding exact IDs, bytes and item count, plus selected shape-aware inclusion paths. This is consistency with a separately trusted root, not identity, signature, authenticity, confidentiality, completeness, timestamp or file-safety verification.",
      "category": "structured",
      "intents": [
        "Commit an artifact bundle to one count-bound content root",
        "Produce selective inclusion proofs for supplied artifact bytes"
      ],
      "whenToUse": [
        "Hand off one supplied artifact and its logarithmic inclusion path without resending the full bundle"
      ],
      "whenNotToUse": [
        "Signatures, certificate transparency, blockchain protocol compatibility, append-only proofs or trusted root distribution",
        "Authentication, identity, confidentiality, timestamping, safety or complete-item-list verification",
        "Executing code, writing files, environment changes, network requests, publishing or deployment"
      ],
      "capabilities": [
        "Domain bytes 00 for framed leaves, 01 for internal pairs and 02 for count-bound public root",
        "Exact UTF-16 ID sorting; canonical base64 and UTF-8 equivalence",
        "Greatest-power-of-two split without leaf duplication; cached tree, bottom-up sibling orientation",
        "Verifier must validate index, count and exact expected proof shape; hashes do not anonymize low-entropy content",
        "Complete bounded computation before payment challenge and execution; externalRequests=0"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "items": 128,
        "proofs": 128,
        "idUnits": 100,
        "decodedBytes": 60000,
        "treeNodes": 255,
        "hashCalls": 256,
        "proofSiblings": 7
      },
      "related": [
        "content-digest",
        "artifact-manifest-check",
        "zip-store-compose"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_BASE64",
        "DUPLICATE_ID",
        "DUPLICATE_PROOF_ID",
        "UNKNOWN_PROOF_ID",
        "PAYLOAD_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/merkle-bundle-compose",
      "contract": "/reference/services/merkle-bundle-compose.json",
      "schemas": {
        "input": "/reference/schemas/merkle-bundle-compose.input.json",
        "output": "/reference/schemas/merkle-bundle-compose.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "env-example-compose",
      "name": "Names-only secret dotenv example",
      "description": "Compose a deterministic literal .env.example and unresolved-variable checklist from explicit public and names-only secret declarations. Secret declarations accept no value/default field. Names-only secret declarations; public values supplied by the caller. No secret detection, secret-free certification, environment reads or changes.",
      "category": "structured",
      "intents": [
        "Generate an env example file with names-only secret placeholders",
        "Produce an unresolved configuration-variable checklist"
      ],
      "whenToUse": [
        "Compile explicit declarations into a deterministic dotenv example with literal public defaults"
      ],
      "whenNotToUse": [
        "Secret scanning, secret-free certification, retrieving credentials or classifying whether caller public values contain secrets",
        "Shell sourcing, escape syntax, variable interpolation, production configuration or environment mutation",
        "Executing code, writing files, environment changes, network requests, publishing or deployment"
      ],
      "capabilities": [
        "Public defaults use single quotes; prohibited characters are rejected rather than escaped",
        "Secret declarations have no accepted default or value field; unresolved variables are comment-only",
        "Names-only secret declarations; public values supplied by the caller.",
        "Required and optional unresolved names and sorted declaration manifest; exact UTF-8 text length",
        "Complete bounded computation before payment challenge and execution; externalRequests=0"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "variables": 128,
        "nameUnits": 64,
        "descriptionUnits": 256,
        "defaultBytes": 2048,
        "textBytes": 100000
      },
      "related": [
        "template-render",
        "merkle-bundle-compose",
        "zip-store-compose"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "DUPLICATE_NAME",
        "INVALID_DESCRIPTION",
        "INVALID_LITERAL",
        "DEFAULT_LIMIT",
        "TEXT_LIMIT"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/env-example-compose",
      "contract": "/reference/services/env-example-compose.json",
      "schemas": {
        "input": "/reference/schemas/env-example-compose.input.json",
        "output": "/reference/schemas/env-example-compose.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "availability-slots-compose",
      "name": "Supplied-calendar availability slot composer",
      "description": "Compose all grid-aligned candidate meetings with whole-slot attendee continuity, required participants and explicit meeting buffers from supplied available/busy intervals.",
      "category": "structured",
      "intents": [
        "find candidate meeting slots from supplied calendars",
        "enumerate whole-meeting attendee availability",
        "compose buffered quorum meeting candidates"
      ],
      "whenToUse": [
        "find candidate meeting slots from supplied calendars",
        "enumerate whole-meeting attendee availability",
        "compose buffered quorum meeting candidates"
      ],
      "whenNotToUse": [
        "Live account access, invitations, booking or authenticating external observations",
        "Aggregate concurrency without the same attendees available for the entire meeting",
        "Ranked preferences, scheduling optimization or a conflict-free set of meetings",
        "Accessing calendars, scheduling jobs, reserving meetings, network requests or external state changes"
      ],
      "capabilities": [
        "Half-open intervals; union available and busy separately, subtract busy, then fit each attendee's protected meeting span; supplied availability is not verified",
        "Buffers may extend outside search window only within supplied free intervals",
        "Explicit grid origin permits negative conceptual grid indices; sorted complete attendee lists and all eligible candidates",
        "Caller-supplied data only; no current clock, randomness, environment or timezone-database reads",
        "Complete bounded validation before payment challenge; externalRequests=0"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "profile": "supplied-calendar-grid-v1",
        "participants": 32,
        "intervals": 512,
        "endpointTicks": 1000000000000,
        "windowTicks": 1000000000,
        "durationStepBufferTicks": 1000000000,
        "consideredStarts": 4096,
        "slots": 1024,
        "primitiveComparisons": 1000000,
        "labelCodeUnits": 128
      },
      "related": [
        "interval-analyze",
        "icalendar-compose",
        "assignment-cost-optimize"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_INTERVAL",
        "INVALID_WINDOW",
        "INVALID_ATTENDEE_COUNT",
        "DUPLICATE_ID"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/availability-slots-compose",
      "contract": "/reference/services/availability-slots-compose.json",
      "schemas": {
        "input": "/reference/schemas/availability-slots-compose.input.json",
        "output": "/reference/schemas/availability-slots-compose.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "time-series-grid-compose",
      "name": "Exact supported time-series grid composer",
      "description": "Compose an aligned grid from supplied nonoverlapping piecewise-constant segments with exact rational integrals, means over supplied support and source contribution durations.",
      "category": "structured",
      "intents": [
        "resample piecewise-constant time series to an exact aligned grid",
        "calculate time-weighted means over explicit supplied support",
        "compose exact rational series cells with missing-support evidence"
      ],
      "whenToUse": [
        "resample piecewise-constant time series to an exact aligned grid",
        "calculate time-weighted means over explicit supplied support",
        "compose exact rational series cells with missing-support evidence"
      ],
      "whenNotToUse": [
        "Interpolation, zero filling, extrapolation or last-observation carry-forward",
        "Overlapping segments within one series or undeclared measurement validity",
        "Floating-point approximations, display rounding or inference of observation quality",
        "Accessing calendars, scheduling jobs, reserving meetings, network requests or external state changes"
      ],
      "capabilities": [
        "Exact reduced rational value-times-ticks integrals and support-only means; zero support yields null mean",
        "Per-cell support completeness and sorted source-duration contributions; complete result does not imply complete data support",
        "Canonical shortest signed decimal values: up to 12 integer digits and 6 fractional digits; no negative zero or trailing fractional zeros",
        "Nonoverlapping sources are clipped to the grid; empty series is valid and source order is irrelevant",
        "Caller-supplied data only; no current clock, randomness, environment or timezone-database reads",
        "Complete bounded validation before payment challenge; externalRequests=0"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "profile": "explicit-support-grid-v1",
        "series": 8,
        "segments": 1000,
        "cellsPerSeries": 256,
        "aggregateCells": 512,
        "contributions": 2000,
        "endpointTicks": 1000000000000,
        "valueIntegerDigits": 12,
        "valueFractionalDigits": 6,
        "labelCodeUnits": 128
      },
      "related": [
        "time-series-inspect",
        "records-aggregate",
        "decimal-distribution-summarize"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_INTERVAL",
        "INVALID_GRID",
        "OVERLAPPING_SEGMENTS",
        "DUPLICATE_ID"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/time-series-grid-compose",
      "contract": "/reference/services/time-series-grid-compose.json",
      "schemas": {
        "input": "/reference/schemas/time-series-grid-compose.input.json",
        "output": "/reference/schemas/time-series-grid-compose.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "cron-occurrences-expand",
      "name": "Supplied-offset cron occurrence expander",
      "description": "Expand bounded five-field cron into complete UTC occurrences using an exact caller-supplied offset timeline, including every fold instant and no nonexistent gap minute.",
      "category": "structured",
      "intents": [
        "expand cron occurrences in a supplied UTC window",
        "enumerate fixed-offset or UTC cron schedules offline",
        "inspect cron gap and fold matches against supplied offset periods"
      ],
      "whenToUse": [
        "expand cron occurrences in a supplied UTC window",
        "enumerate fixed-offset or UTC cron schedules offline",
        "inspect cron gap and fold matches against supplied offset periods"
      ],
      "whenNotToUse": [
        "An IANA timezone name without an explicit trusted offset-period timeline",
        "Daemon scheduling, Cronie clock-jump replay, catch-up or once-per-wall-time suppression",
        "Quartz, seconds/year fields, names, macros, hashed values, command suffixes or Sunday 7",
        "Accessing calendars, scheduling jobs, reserving meetings, network requests or external state changes"
      ],
      "capabilities": [
        "UTC and fixed offsets need one period spanning the exact window; labels are inert metadata and timezone rules are unverified",
        "Sorted contiguous offset periods are normalized; splitting equal-offset periods leaves output unchanged",
        "Exact five-field decimal grammar; positive steps only on * or ascending ranges",
        "Day-of-month/day-of-week use OR when both restricted; either exact wildcard delegates to the other; stepped wildcards in these day fields are rejected",
        "Minute-aligned half-open UTC window, Gregorian dates, gap omission and every distinct fold instant; no hidden current time",
        "Caller-supplied data only; no current clock, randomness, environment or timezone-database reads",
        "Complete bounded validation before payment challenge; externalRequests=0"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "profile": "cron5-offset-periods-v1",
        "expressionCodeUnits": 256,
        "atoms": 32,
        "offsetPeriods": 32,
        "absoluteOffsetMinutes": 840,
        "windowDays": 366,
        "calendarDateVisits": 512,
        "prospectiveCandidates": 50000,
        "occurrences": 2000,
        "utcYears": "2000–2100",
        "timezoneLabelCodeUnits": 128
      },
      "related": [
        "recurrence-dates-expand",
        "timezone-convert",
        "icalendar-compose"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_CRON",
        "INVALID_UTC_TIME",
        "INVALID_WINDOW",
        "INVALID_OFFSET_PERIODS"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/cron-occurrences-expand",
      "contract": "/reference/services/cron-occurrences-expand.json",
      "schemas": {
        "input": "/reference/schemas/cron-occurrences-expand.input.json",
        "output": "/reference/schemas/cron-occurrences-expand.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "protobuf-message-compose",
      "name": "Typed bounded Protobuf message composer",
      "description": "Compose actual proto3 wire bytes, matching explicit schema and exact field offsets from bounded acyclic integer/string/bytes declarations. Deterministic under this profile only; no universal canonical serialization, RPC, transport, credentials or execution.",
      "category": "structured",
      "intents": [
        "Prepare a typed binary message from an explicit Protobuf schema",
        "Produce a portable proto3 file and auditable byte offsets"
      ],
      "whenToUse": [
        "Prepare an inert request body or artifact for a separately authorized Protobuf consumer"
      ],
      "whenNotToUse": [
        "Recursive/imported schemas, floats, fixed-width types, enums, maps, oneofs, extensions or well-known types",
        "gRPC framing, sending a request, signatures or cross-implementation byte canonicality",
        "Executing code, writing files, environment changes, network requests, publishing or deployment"
      ],
      "capabilities": [
        "Exact decimal integer ranges, optional presence, default elision and packed repeated integers/booleans",
        "Ascending field-number order, canonical padded Base64 and absolute half-open offsets",
        "Acyclic schema validation including generated JSON-name conflicts",
        "Complete bounded computation before payment challenge and execution; externalRequests=0"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "messageTypes": 8,
        "declaredFields": 64,
        "messageDepth": 6,
        "valuesIncludingRoot": 1024,
        "decodedBytes": 60000,
        "wireBytes": 80000,
        "offsetRecordsIncludingElements": 2048
      },
      "related": [
        "zip-store-compose",
        "oci-artifact-compose",
        "blob-decode"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_PROTO_NAME",
        "DUPLICATE_MESSAGE",
        "DUPLICATE_FIELD",
        "DUPLICATE_JSON_NAME",
        "UNKNOWN_PROTO_TYPE",
        "RESERVED_FIELD_NUMBER",
        "INVALID_CARDINALITY",
        "RECURSIVE_SCHEMA",
        "INVALID_PROTO_VALUE",
        "INTEGER_RANGE",
        "INVALID_BASE64",
        "UNKNOWN_PROTO_FIELD",
        "PAYLOAD_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/protobuf-message-compose",
      "contract": "/reference/services/protobuf-message-compose.json",
      "schemas": {
        "input": "/reference/schemas/protobuf-message-compose.input.json",
        "output": "/reference/schemas/protobuf-message-compose.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "workflow-automata-compose",
      "name": "Synchronous workflow language compiler",
      "description": "Compile two to four supplied deterministic finite event constraints into a minimized synchronous intersection machine, exact member classes and a shortest accepted trace. Missing transitions reject; no asynchronous interleaving, runtime execution, liveness, deadlock or authorization guarantee.",
      "category": "structured",
      "intents": [
        "Combine finite workflow constraints into one reusable deterministic machine",
        "Find the shortest event trace satisfying all supplied finite event policies"
      ],
      "whenToUse": [
        "Every component intentionally consumes every event from the same explicit common alphabet"
      ],
      "whenNotToUse": [
        "Asynchronous components, implicit unrelated-event self-loops, epsilon edges, guards, actions, counters or real-time predicates",
        "Policy appropriateness, safe concurrency, liveness, real-world deadlocks or permission to execute actions",
        "Executing code, writing files, environment changes, network requests, publishing or deployment"
      ],
      "capabilities": [
        "Reachable synchronous product, common rejecting sink and exact partition minimization",
        "Canonical breadth-first state IDs and lexicographically tied shortest accepted traces",
        "States without accepting continuations and explicit product-class membership",
        "Complete bounded computation before payment challenge and execution; externalRequests=0"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 400000,
        "jsonNodes": 12000,
        "depth": 20,
        "machines": 4,
        "alphabet": 5,
        "statesPerMachine": 16,
        "inputStates": 64,
        "inputTransitions": 320,
        "reachableProductStates": 96,
        "productEdges": 480,
        "primitiveWork": 1000000
      },
      "related": [
        "workflow-transition-check",
        "workflow-dag-analyze"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "DUPLICATE_EVENT",
        "DUPLICATE_MACHINE",
        "DUPLICATE_STATE",
        "UNKNOWN_STATE",
        "UNKNOWN_EVENT",
        "DUPLICATE_TRANSITION"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/workflow-automata-compose",
      "contract": "/reference/services/workflow-automata-compose.json",
      "schemas": {
        "input": "/reference/schemas/workflow-automata-compose.input.json",
        "output": "/reference/schemas/workflow-automata-compose.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "pairwise-cases-compose",
      "name": "Constrained pairwise fixture composer",
      "description": "Generate concrete rows covering every pair with a feasible complete assignment under bounded forbidden tuples, with exhaustive-coverage certificate and deterministic greedy ties. No minimum-suite or target-behavior claim.",
      "category": "structured",
      "intents": [
        "Generate constrained pairwise test configurations",
        "Build concrete finite factor-level fixtures and a coverage manifest"
      ],
      "whenToUse": [
        "Ordered finite factors with literal forbidden tuples; caller separately runs tests"
      ],
      "whenNotToUse": [
        "Minimum test suites, arbitrary SAT predicates, unlimited Cartesian products or bug-finding guarantees",
        "Execute target code, call APIs, fetch data, run external agents, mutate accounts or deploy"
      ],
      "capabilities": [
        "Complete Cartesian feasibility enumeration and feasible-pair derivation",
        "Deterministic greedy coverage with first-covering row certificate",
        "Complete bounded result computed before challenge; atomic work/output failures"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 300000,
        "jsonNodes": 12000,
        "depth": 16,
        "factors": 12,
        "levelsPerFactor": 16,
        "forbiddenTuples": 64,
        "tupleArity": 4,
        "cartesianAssignments": 4096,
        "pairEntries": 4096,
        "suiteRows": 256,
        "tupleLiteralTests": 1100000,
        "pairPostings": 270336,
        "scoreComparisons": 1048576
      },
      "related": [
        "coverage-set-optimize",
        "json-batch-encode"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "DUPLICATE_FACTOR",
        "DUPLICATE_LEVEL",
        "DUPLICATE_TUPLE_FACTOR",
        "UNKNOWN_LEVEL",
        "LABEL_LIMIT"
      ],
      "proposedNominalUsd": "0.01",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/pairwise-cases-compose",
      "contract": "/reference/services/pairwise-cases-compose.json",
      "schemas": {
        "input": "/reference/schemas/pairwise-cases-compose.input.json",
        "output": "/reference/schemas/pairwise-cases-compose.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "synthetic-records-compose",
      "name": "Versioned seeded synthetic record composer",
      "description": "Generate reproducible JSON records from explicit integer sequences, uniform integers, Bernoulli draws and integer-weighted categories using sha256-counter-fields-v1. No real-PII source, population realism, privacy certification or cryptographic-randomness claim.",
      "category": "structured",
      "intents": [
        "Generate repeatable parser fixtures with an exact seed and distribution recipe",
        "Compose explicit synthetic records without a reference dataset"
      ],
      "whenToUse": [
        "Small inert fixture tables from elementary explicit sampling rules"
      ],
      "whenNotToUse": [
        "Exact quotas, realistic identities, PII anonymization, correlated populations, Gaussian or floating-point distributions",
        "Cryptographic tokens, secrets or unpredictable random draws",
        "Execute target code, call APIs, fetch data, run external agents, mutate accounts or deploy"
      ],
      "capabilities": [
        "Frozen SHA-256 field-addressed rejection sampling with independent field addition",
        "Returns complete recipe and version alongside all generated rows",
        "Complete bounded result computed before challenge; atomic work/output failures"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 300000,
        "jsonNodes": 12000,
        "depth": 16,
        "rows": 1000,
        "fields": 20,
        "cells": 3000,
        "categories": 32,
        "distributionRange": 1000000,
        "hashAttempts": 3150,
        "attemptsPerDraw": 32,
        "scalarLabelCodePoints": 64
      },
      "related": [
        "csv-serialize",
        "json-batch-encode"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "DUPLICATE_FIELD",
        "DUPLICATE_CATEGORY",
        "LABEL_LIMIT",
        "INTEGER_RANGE",
        "INVALID_DISTRIBUTION",
        "SAMPLING_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/synthetic-records-compose",
      "contract": "/reference/services/synthetic-records-compose.json",
      "schemas": {
        "input": "/reference/schemas/synthetic-records-compose.input.json",
        "output": "/reference/schemas/synthetic-records-compose.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "observation-shrink-plan",
      "name": "Observed failure reduction planner",
      "description": "Select the smallest target-failing subsequence among supplied observations, reconcile conflicting evidence, and materialize missing one-deletion experiments. References are caller assertions; no target execution, reproduced bug or global minimum claim.",
      "category": "structured",
      "intents": [
        "Plan next reduction experiments from caller-supplied failure observations",
        "Materialize the smallest observed target-failing sequence and its evidence"
      ],
      "whenToUse": [
        "Caller already owns a harness and supplies bounded pass/fail/unresolved observations"
      ],
      "whenNotToUse": [
        "Autonomous ddmin, reproducing bugs, root-cause claims, global minimality or executing a target",
        "Unobserved harness identity, flakiness or causality verification",
        "Execute target code, call APIs, fetch data, run external agents, mutate accounts or deploy"
      ],
      "capabilities": [
        "Conflicting evidence detection and target-failure-aware deterministic selection",
        "Concrete one-deletion input queue, complete local supplied-pass certificate or explicit incompleteness",
        "Complete bounded result computed before challenge; atomic work/output failures"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 300000,
        "jsonNodes": 12000,
        "depth": 16,
        "atoms": 64,
        "observations": 512,
        "retainedIds": 64,
        "observationIdReferences": 16384,
        "atomValueBytes": 512,
        "nextExperiments": 64
      },
      "related": [
        "replay-divergence-check",
        "json-patch"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "DUPLICATE_ATOM",
        "DUPLICATE_OBSERVATION",
        "ATOM_LIMIT",
        "UNKNOWN_ATOM",
        "INVALID_SUBSEQUENCE",
        "CONTEXT_MISMATCH"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/observation-shrink-plan",
      "contract": "/reference/services/observation-shrink-plan.json",
      "schemas": {
        "input": "/reference/schemas/observation-shrink-plan.input.json",
        "output": "/reference/schemas/observation-shrink-plan.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "json-schema-fixtures-compose",
      "name": "Constructive typed-schema fixture composer",
      "description": "Compose a complete bounded basis of valid fixture values with per-goal coverage or unavailability under a small typed JSON Schema profile.",
      "category": "api-assurance",
      "intents": [
        "generate valid boundary request bodies from a supported typed JSON schema",
        "compose goal-labelled schema fixtures for a caller-run validator harness"
      ],
      "whenToUse": [
        "generate valid boundary request bodies from a supported typed JSON schema",
        "compose goal-labelled schema fixtures for a caller-run validator harness"
      ],
      "whenNotToUse": [
        "Exhaustive input-space, every property combination or every array-position coverage",
        "Counterexamples proving schema compatibility or arbitrary satisfiability search",
        "Arbitrary JSON Schema, formats, regexes, references, combinators, nested objects or nested arrays",
        "Executing target tests, fetching services, running supplied code or proving security"
      ],
      "capabilities": [
        "Required-only baseline, one-property edges, optional presence, array length edges and first-item scalar edges",
        "Typed enum/const intersections and supported contradictions; impossible optional properties stay explicitly unavailable",
        "Deduplicated fixture values retain all construction goal IDs",
        "Closed constructive-json-schema-v1 profile; unsupported keywords are rejected rather than ignored",
        "Networkless deterministic supplied-data computation; no target behavior or full input-space coverage claim",
        "Atomic complete bounded computation before the payment challenge; no partial packet on resource overflow"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 300000,
        "inputNodes": 12000,
        "outputNodes": 50000,
        "depth": 16,
        "schemaNodes": 80,
        "properties": 32,
        "enumMembers": 16,
        "arrayItems": 16,
        "stringLength": 256,
        "fixtures": 128,
        "goals": 512,
        "mutations": 64,
        "validatorNodeVisits": 50000,
        "candidateBytes": 2000000,
        "jsonNodes": 12000,
        "profile": "constructive-json-schema-v1"
      },
      "related": [
        "json-contract-negative-cases",
        "json-schema-check",
        "json-schema-compatibility"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "UNSUPPORTED_SCHEMA",
        "INVALID_SCHEMA",
        "SCHEMA_LIMIT",
        "WORK_LIMIT",
        "GOAL_LIMIT",
        "FIXTURE_LIMIT",
        "SEED_LIMIT",
        "INVALID_SEED",
        "DUPLICATE_ID",
        "INVALID_POINTER",
        "MUTATION_LIMIT",
        "INTERNAL_INVARIANT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/json-schema-fixtures-compose",
      "contract": "/reference/services/json-schema-fixtures-compose.json",
      "schemas": {
        "input": "/reference/schemas/json-schema-fixtures-compose.input.json",
        "output": "/reference/schemas/json-schema-fixtures-compose.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "json-contract-negative-cases",
      "name": "Targeted JSON contract negative fixture composer",
      "description": "Compose invalid payloads from a caller-supplied valid seed with one structural edit, an exact target assertion and the complete bounded failed-assertion set.",
      "category": "api-assurance",
      "intents": [
        "generate targeted negative request payloads from a valid JSON seed and supported schema",
        "compose one-edit contract violations with checked constraint isolation"
      ],
      "whenToUse": [
        "generate targeted negative request payloads from a valid JSON seed and supported schema",
        "compose one-edit contract violations with checked constraint isolation"
      ],
      "whenNotToUse": [
        "Target rejection guarantees, expected HTTP status, fuzz attacks or a mutation-testing score",
        "A valid seed is missing or incompatible with the supported structural schema",
        "Arbitrary JSON Schema, formats, regexes, references, combinators, nested objects or nested arrays",
        "Executing target tests, fetching services, running supplied code or proving security"
      ],
      "capabilities": [
        "Caller-supplied seed works independently of the valid-fixture tool",
        "One inert JSON Patch per generated case, explicit assertion identities and complete failed-assertion manifests",
        "requireIsolated suppresses fixtures with additional failures; unavailable requests have explicit reasons",
        "Closed constructive-json-schema-v1 profile; unsupported keywords are rejected rather than ignored",
        "Networkless deterministic supplied-data computation; no target behavior or full input-space coverage claim",
        "Atomic complete bounded computation before the payment challenge; no partial packet on resource overflow"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 300000,
        "inputNodes": 12000,
        "outputNodes": 50000,
        "depth": 16,
        "schemaNodes": 80,
        "properties": 32,
        "enumMembers": 16,
        "arrayItems": 16,
        "stringLength": 256,
        "fixtures": 128,
        "goals": 512,
        "mutations": 64,
        "validatorNodeVisits": 50000,
        "candidateBytes": 2000000,
        "jsonNodes": 12000,
        "profile": "constructive-json-schema-v1"
      },
      "related": [
        "json-schema-fixtures-compose",
        "json-schema-check",
        "json-patch"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "UNSUPPORTED_SCHEMA",
        "INVALID_SCHEMA",
        "SCHEMA_LIMIT",
        "WORK_LIMIT",
        "GOAL_LIMIT",
        "FIXTURE_LIMIT",
        "SEED_LIMIT",
        "INVALID_SEED",
        "DUPLICATE_ID",
        "INVALID_POINTER",
        "MUTATION_LIMIT",
        "INTERNAL_INVARIANT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/json-contract-negative-cases",
      "contract": "/reference/services/json-contract-negative-cases.json",
      "schemas": {
        "input": "/reference/schemas/json-contract-negative-cases.input.json",
        "output": "/reference/schemas/json-contract-negative-cases.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "cbor-typed-codec",
      "name": "Typed deterministic CBOR codec",
      "description": "Encode typed values or decode a strictly admitted core-deterministic CBOR integer subset with bounded tokens and exact integer precision.",
      "category": "structured",
      "intents": [
        "encode deterministic CBOR",
        "decode typed CBOR",
        "preserve exact CBOR integers and bytes",
        "inspect bounded core deterministic CBOR"
      ],
      "whenToUse": [
        "A declared consumer requires this specific binary format and exact integer/binary distinctions",
        "Create a bounded offline configuration or protocol fixture from supplied typed values"
      ],
      "whenNotToUse": [
        "Floating point, dates, timestamp/tag extensions, missing-value primitives, custom objects, streaming or arbitrary maps",
        "General CBOR, tags, indefinite lengths, unsorted keys or nonpreferred encodings",
        "Legacy length-first CBOR map ordering or dCBOR normalization",
        "Network transport, authentication, signatures, COSE/CWT/WebAuthn, consumer schema validation, or execution of decoded content"
      ],
      "capabilities": [
        "Canonical decimal input strings preserve the full profile integer domain",
        "Unicode scalar text and strict canonical standard padded base64",
        "Duplicate typed keys rejected; text and byte strings remain distinct",
        "Complete semantic computation and result admission before payment challenge and again during execution",
        "Networkless deterministic supplied-input-only artifacts; externalRequests=0",
        "RFC 8949 core bytewise key order; lazy upstream tokens with budgets before materialization, exact one-item consumption and byte-equality re-encoding"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 300000,
        "jsonNodes": 12000,
        "jsonDepth": 20,
        "wireBytes": 40000,
        "contentBytes": 32768,
        "valueNodes": 1024,
        "arrayItems": 512,
        "mapPairs": 128,
        "valueDepth": 5,
        "cborKeyBytes": 128,
        "messagepackKeyBytes": 64,
        "profile": "cbor-core-deterministic-integer-v1",
        "actions": "encode,decode",
        "integerMinimum": "-18446744073709551616",
        "integerMaximum": "18446744073709551615",
        "mapKeys": "Typed integers or scalar text <=128 UTF-8 bytes; reserved text names rejected",
        "determinismScope": "RFC8949-core-subset"
      },
      "related": [
        "messagepack-compose",
        "protobuf-message-compose",
        "zip-store-compose"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_INTEGER",
        "INTEGER_RANGE",
        "INVALID_KEY",
        "DUPLICATE_KEY",
        "INVALID_ENCODING",
        "UNSUPPORTED_TYPE",
        "NONDETERMINISTIC_ENCODING",
        "ENCODING_MISMATCH"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/cbor-typed-codec",
      "contract": "/reference/services/cbor-typed-codec.json",
      "schemas": {
        "input": "/reference/schemas/cbor-typed-codec.input.json",
        "output": "/reference/schemas/cbor-typed-codec.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "messagepack-compose",
      "name": "Typed MessagePack composer",
      "description": "Compose stable MessagePack bytes from typed integers, text, binary, arrays and restricted-key maps; exact uint64/int64, encode only.",
      "category": "structured",
      "intents": [
        "compose typed MessagePack",
        "encode exact int64 uint64 MessagePack",
        "create MessagePack binary record",
        "serialize typed binary payload"
      ],
      "whenToUse": [
        "A declared consumer requires this specific binary format and exact integer/binary distinctions",
        "Create a bounded offline configuration or protocol fixture from supplied typed values"
      ],
      "whenNotToUse": [
        "Floating point, dates, timestamp/tag extensions, missing-value primitives, custom objects, streaming or arbitrary maps",
        "Decode or inspect MessagePack bytes; decoding is explicitly held",
        "A universal MessagePack canonical form",
        "Network transport, authentication, signatures, COSE/CWT/WebAuthn, consumer schema validation, or execution of decoded content"
      ],
      "capabilities": [
        "Canonical decimal input strings preserve the full profile integer domain",
        "Unicode scalar text and strict canonical standard padded base64",
        "Duplicate typed keys rejected; text and byte strings remain distinct",
        "Complete semantic computation and result admission before payment challenge and again during execution",
        "Networkless deterministic supplied-input-only artifacts; externalRequests=0",
        "Service-defined stable ASCII-key ordering and shortest admitted wire forms; encode only"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 300000,
        "jsonNodes": 12000,
        "jsonDepth": 20,
        "wireBytes": 40000,
        "contentBytes": 32768,
        "valueNodes": 1024,
        "arrayItems": 512,
        "mapPairs": 128,
        "valueDepth": 5,
        "cborKeyBytes": 128,
        "messagepackKeyBytes": 64,
        "profile": "messagepack-stable-integer-v1",
        "actions": "encode",
        "integerMinimum": "-9223372036854775808",
        "integerMaximum": "18446744073709551615",
        "mapKeys": "ASCII text [A-Za-z_][A-Za-z0-9_.-]{0,63}; reserved names rejected",
        "determinismScope": "this-profile-only"
      },
      "related": [
        "cbor-typed-codec",
        "protobuf-message-compose",
        "zip-store-compose"
      ],
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_INTEGER",
        "INTEGER_RANGE",
        "INVALID_KEY",
        "DUPLICATE_KEY",
        "INVALID_ENCODING",
        "UNSUPPORTED_TYPE",
        "NONDETERMINISTIC_ENCODING",
        "ENCODING_MISMATCH"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/messagepack-compose",
      "contract": "/reference/services/messagepack-compose.json",
      "schemas": {
        "input": "/reference/schemas/messagepack-compose.input.json",
        "output": "/reference/schemas/messagepack-compose.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "toml-config-compose",
      "name": "Typed TOML configuration composer",
      "description": "Compose deterministic TOML 1.0-compatible configuration from explicit string, signed-int64, boolean and homogeneous-array declarations; preserve integer precision and detect table conflicts.",
      "category": "structured",
      "intents": [
        "compose typed TOML configuration",
        "generate TOML with exact int64 values",
        "serialize homogeneous arrays and nested TOML tables",
        "detect TOML table scalar conflicts"
      ],
      "whenToUse": [
        "Creating new TOML 1.0-compatible files from explicit typed declarations",
        "Preserving full signed-int64 precision without JavaScript numeric conversion",
        "Producing an inert exact-byte configuration artifact for an offline consumer"
      ],
      "whenNotToUse": [
        "Parsing, merging or editing existing TOML source or preserving comments",
        "Floating-point values, dates, times, null, nested or mixed arrays, arrays of tables or inline tables",
        "Application configuration validation, interpolation, environment expansion, filesystem includes or secret classification",
        "Network requests, writing files, live configuration changes, authentication, publishing or deployment"
      ],
      "capabilities": [
        "Profile toml-1.0-typed-config-v1; quoted basic-string keys; UTF-16 ordinal ordering with parents first",
        "Signed-int64 decimal strings; typed homogeneous primitive arrays; Unicode scalar strings",
        "Duplicate table/key and scalar/table-ancestor conflict rejection; exact key segments including literal dots",
        "LF line endings and final LF for nonempty output; empty root produces the empty document",
        "Deterministic supplied-input-only artifact; no network, clock or randomness",
        "Exact artifact UTF-8 byte lengths and SHA-256 hashes"
      ],
      "related": [
        "zip-store-compose",
        "json-schema-check"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 300000,
        "jsonNodes": 12000,
        "depth": 20,
        "tables": 128,
        "entries": 512,
        "tablePathSegments": 4,
        "keyUtf8Bytes": 128,
        "arrayCells": 256,
        "aggregateCells": 2048,
        "stringValueUtf8Bytes": 32768,
        "artifactUtf8Bytes": 100000,
        "profile": "toml-1.0-typed-config-v1"
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "INVALID_INPUT",
        "UNSAFE_KEY",
        "TOML_INTEGER",
        "TOML_KEY_LIMIT",
        "TOML_DUPLICATE_TABLE",
        "TOML_ENTRY_LIMIT",
        "TOML_CELL_LIMIT",
        "TOML_ARRAY_TYPE",
        "TOML_STRING_LIMIT",
        "TOML_DUPLICATE_KEY",
        "TOML_TABLE_CONFLICT",
        "TOML_OUTPUT_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/toml-config-compose",
      "contract": "/reference/services/toml-config-compose.json",
      "schemas": {
        "input": "/reference/schemas/toml-config-compose.input.json",
        "output": "/reference/schemas/toml-config-compose.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "http-structured-fields-compose",
      "name": "Typed HTTP structured-field composer",
      "description": "Compose separate exact RFC 8941-compatible structured field values from explicit typed Items, Lists and Dictionaries; preserve decimal types without floating-point rounding.",
      "category": "structured",
      "intents": [
        "compose typed HTTP structured fields",
        "serialize RFC 8941 items lists dictionaries",
        "preserve HTTP structured decimal and integer distinction",
        "prepare offline structured header field fixtures"
      ],
      "whenToUse": [
        "Composing caller-declared structured field name/value pairs for offline protocol fixtures",
        "Preserving ordered dictionaries and parameters with explicit string/token/bytes/integer/decimal/boolean types",
        "Rejecting decimal rounding, injection and duplicate keys before handoff"
      ],
      "whenNotToUse": [
        "Parsing existing fields, combining repeated lines or normalizing arbitrary headers",
        "Full RFC 9651 Date and Display String types; this explicit RFC 8941 vocabulary profile excludes them",
        "HTTP Message Signatures, signing, digest verification, authentication, cookies, header policy or application field semantics",
        "Raw HTTP header blocks, requests or transmission",
        "Network requests, writing files, live configuration changes, authentication, publishing or deployment"
      ],
      "capabilities": [
        "Profile http-sf-rfc8941-compose-v1; RFC 9651 supersedes RFC 8941 without silently expanding this vocabulary",
        "Exact decimal-string formatting without rounding; signed zero normalized within its selected integer or decimal type",
        "Preserved field, dictionary and parameter order; boolean-true elision; padded canonical base64",
        "Empty List/Dictionary returns omitted true and null value/hash; caller must omit that field",
        "Deterministic supplied-input-only artifact; no network, clock or randomness",
        "Exact artifact UTF-8 byte lengths and SHA-256 hashes"
      ],
      "related": [
        "content-digest",
        "json-schema-check"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 300000,
        "jsonNodes": 12000,
        "depth": 20,
        "fields": 16,
        "fieldValueBytes": 8192,
        "totalValueBytes": 16384,
        "topLevelMembers": 128,
        "innerListItems": 32,
        "parameters": 16,
        "bareItems": 512,
        "keyAsciiBytes": 64,
        "tokenBytes": 256,
        "stringBytes": 1024,
        "decodedByteValueBytes": 2048,
        "profile": "http-sf-rfc8941-compose-v1"
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "INVALID_INPUT",
        "UNSAFE_KEY",
        "SF_KEY",
        "SF_ITEM_LIMIT",
        "SF_INTEGER",
        "SF_DECIMAL",
        "SF_STRING",
        "SF_TOKEN",
        "SF_BYTES",
        "SF_BYTES_LIMIT",
        "SF_DUPLICATE_KEY",
        "SF_FIELD_NAME",
        "SF_DUPLICATE_FIELD",
        "SF_FIELD_LIMIT",
        "SF_TOTAL_LIMIT"
      ],
      "proposedNominalUsd": "0.003",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/http-structured-fields-compose",
      "contract": "/reference/services/http-structured-fields-compose.json",
      "schemas": {
        "input": "/reference/schemas/http-structured-fields-compose.input.json",
        "output": "/reference/schemas/http-structured-fields-compose.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "json-sample-shape-infer",
      "name": "Observed JSON sample shapes",
      "description": "Build an optional, open observational JSON Schema draft and counted evidence from supplied JSON samples; never infer a real API contract.",
      "category": "structured",
      "intents": [
        "infer observational schema from JSON samples",
        "draft sampled JSON structure",
        "count recursive observed types"
      ],
      "whenToUse": [
        "Review a recursive open schema draft inferred from bounded supplied examples",
        "Inspect sample counts, optional properties and unobserved empty-array items"
      ],
      "whenNotToUse": [
        "Establishing a universal API contract or production rejection policy",
        "Inferring required fields, enums, formats, ranges, cross-field correlations or compatibility",
        "Generating a tool definition or assuming generalized fixture-generator compatibility",
        "Network access, filesystem changes, target execution, publishing or deployment"
      ],
      "capabilities": [
        "Fixed null, boolean, number, string, array, object union order using anyOf",
        "All observed numbers emit number; object properties stay optional and additionalProperties stays true",
        "Actual escaped schema pointers identify pooled observations; empty items emit true with zero counts",
        "No required, enum, const, bounds, patterns, formats, defaults, references or closed objects",
        "Pure supplied-input computation; complete bounded result admission before challenge; no external requests"
      ],
      "related": [
        "record-profile",
        "json-schema-check"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 300000,
        "jsonNodes": 10000,
        "depth": 20,
        "samples": 64,
        "sourceNodes": 5000,
        "semanticDepth": 8,
        "pooledObjectKeys": 32,
        "observationLocations": 128,
        "emittedSchemaNodes": 180,
        "schemaValidationDepth": 16,
        "schemaRepresentationDepth": 20,
        "keyBytes": 96,
        "aggregateSourceKeyBytes": 64000,
        "aggregateSchemaPointerBytes": 32768,
        "nodeVisits": 5000
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "SHAPE_LIMIT"
      ],
      "proposedNominalUsd": "0.004",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/json-sample-shape-infer",
      "contract": "/reference/services/json-sample-shape-infer.json",
      "schemas": {
        "input": "/reference/schemas/json-sample-shape-infer.input.json",
        "output": "/reference/schemas/json-sample-shape-infer.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "structured-log-template-pack",
      "name": "Explicit scalar log templates",
      "description": "Factor supplied JSON log records into exact literal templates and typed caller-selected scalar occurrences, preserving parsed values and record order for client reconstruction.",
      "category": "structured",
      "intents": [
        "pack structured logs into reversible templates",
        "factor exact JSON log shapes",
        "extract caller-selected scalar log parameters"
      ],
      "whenToUse": [
        "Preserve every parsed JSON log value in exact literal templates and ordered occurrences",
        "Select scalar parameter pointers explicitly and reconstruct original records on the client"
      ],
      "whenNotToUse": [
        "Semantic log grouping, anomaly detection, root cause, severity or incident diagnosis",
        "Automatic timestamp, identifier, UUID, IP or secret detection and redaction",
        "Guaranteed compression, lower model token cost, authenticated history or safer sharing",
        "Preserving source member order, duplicate keys, numeric token spelling or pre-parse precision",
        "Network access, filesystem changes, target execution, publishing or deployment"
      ],
      "capabilities": [
        "Template equality includes every unselected literal, array order, present parameter pointers and scalar types",
        "Caller pointer order defines slots; first occurrence defines template indexes; record order is preserved",
        "Exact canonical structural keys distinguish null, absence, booleans, numbers and strings",
        "No automatic secret redaction: all original values remain in the artifact",
        "Pure supplied-input computation; complete bounded result admission before challenge; no external requests"
      ],
      "related": [
        "records-aggregate",
        "json-selector-redact"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 300000,
        "jsonNodes": 10000,
        "depth": 20,
        "records": 256,
        "parameterPointers": 16,
        "sourceNodes": 6000,
        "semanticDepth": 8,
        "templates": 128,
        "extractedScalars": 4096,
        "aggregateCanonicalSkeletonBytes": 64000,
        "pointerBytes": 256,
        "pointerDepth": 8,
        "pointerTraversalSteps": 32768
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_POINTER",
        "OVERLAPPING_POINTERS",
        "UNSUPPORTED_TARGET",
        "LOG_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/structured-log-template-pack",
      "contract": "/reference/services/structured-log-template-pack.json",
      "schemas": {
        "input": "/reference/schemas/structured-log-template-pack.input.json",
        "output": "/reference/schemas/structured-log-template-pack.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "text-boundary-segment",
      "name": "Literal-boundary UTF-8 windows",
      "description": "Create source-preserving UTF-8-byte-bounded text windows with literal double-LF, LF and ASCII-space cut priority, scalar-safe overlap, exact UTF-16/UTF-8 spans and an aggregate duplication budget.",
      "category": "text",
      "intents": [
        "split text into byte bounded windows",
        "segment document at literal line boundaries",
        "create chunks with exact source spans and overlap budget"
      ],
      "whenToUse": [
        "Creating scalar-safe UTF-8 payload windows from supplied Unicode text",
        "Favoring literal double-LF, LF and ASCII-space boundaries with exact core reconstruction",
        "Bounding aggregate source-byte duplication independently of per-chunk overlap"
      ],
      "whenNotToUse": [
        "Model tokenizer limits, token costs, embedding or semantic retrieval",
        "Sentence, grapheme, word, CommonMark or Unicode line segmentation",
        "Source authenticity, linguistic understanding, normalization or privacy redaction",
        "Fetching sources, writing files, model calls, target execution or changing external state"
      ],
      "capabilities": [
        "Half-open absolute UTF-16 and UTF-8 source/core spans",
        "Nonoverlapping advancing cores with longest scalar-safe preceding-source suffix",
        "Literal boundary priority in the final half of each reserved core byte window",
        "Atomic chunk, returned-text, serialized-output and duplication admission",
        "Deterministic supplied-input-only inert artifact; no network, clock, randomness or external state change"
      ],
      "related": [
        "text-chunk",
        "document-chunk-audit",
        "context-budget-pack"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 300000,
        "jsonNodes": 10000,
        "depth": 20,
        "profile": "literal-boundary-utf8-windows-v1",
        "textUtf8Bytes": 60000,
        "textUtf16Units": 60000,
        "maxChunkBytes": 8192,
        "minChunkBytes": 8,
        "overlapBytes": 2048,
        "minimumCoreCapacity": 4,
        "maxDuplicatedBytes": 60000,
        "chunks": 512,
        "returnedTextUtf8Bytes": 120000,
        "boundarySearchProbes": 20000
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_INPUT",
        "TEXT_CAPACITY",
        "TEXT_BYTES_LIMIT",
        "TEXT_CHUNK_LIMIT",
        "TEXT_DUPLICATION_LIMIT",
        "TEXT_RETURNED_BYTES_LIMIT",
        "TEXT_WORK_LIMIT"
      ],
      "proposedNominalUsd": "0.004",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/text-boundary-segment",
      "contract": "/reference/services/text-boundary-segment.json",
      "schemas": {
        "input": "/reference/schemas/text-boundary-segment.input.json",
        "output": "/reference/schemas/text-boundary-segment.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "rectangle-set-compose",
      "name": "Exact integer rectangle set algebra",
      "description": "Compose union, intersection, A-minus-B difference or XOR of declared axis-aligned half-open integer rectangles into deterministic x-first disjoint rectangles, exact integer area and bounds.",
      "category": "data-assurance",
      "intents": [
        "union intersect subtract xor rectangular regions",
        "subtract declared exclusions from page tile regions",
        "create canonical disjoint rectangles and exact area"
      ],
      "whenToUse": [
        "Exact set algebra over caller-supplied Cartesian integer regions",
        "Generating disjoint drawing or selection data from axis-aligned half-open rectangles",
        "Computing exact coordinate-squared area beyond JavaScript safe integers"
      ],
      "whenNotToUse": [
        "Rotated shapes, arbitrary polygons, geographic or geodesic area, CRS or units conversion",
        "Image modification, masking, redaction or identifying actual objects",
        "Click safety, collision physics, optimal packing or minimum-rectangle decomposition",
        "Fetching sources, writing files, model calls, target execution or changing external state"
      ],
      "capabilities": [
        "Exact canonical decimal-string coordinates and BigInt arithmetic",
        "Operand unions ignore input ordering and duplicate coverage",
        "X-first interval sweep merges touching selected y intervals and identical intervals across consecutive x slabs",
        "Canonical disjoint output sorted numerically with half-open bounds and exact area",
        "Deterministic supplied-input-only inert artifact; no network, clock, randomness or external state change"
      ],
      "related": [
        "interval-analyze"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 300000,
        "jsonNodes": 10000,
        "depth": 20,
        "profile": "integer-half-open-rectangle-sets-v1",
        "inputRectangles": 32,
        "absoluteCoordinate": "1000000000000",
        "xEndpoints": 64,
        "yEndpoints": 64,
        "elementaryCells": 3969,
        "resultRectangles": 1024,
        "outputCoordinateStrings": 4096,
        "sweepWork": 100000
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_INPUT",
        "RECTANGLE_COUNT_LIMIT",
        "RECTANGLE_COORDINATE_RANGE",
        "RECTANGLE_EXTENT",
        "RECTANGLE_WORK_LIMIT",
        "RECTANGLE_OUTPUT_LIMIT"
      ],
      "proposedNominalUsd": "0.006",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/rectangle-set-compose",
      "contract": "/reference/services/rectangle-set-compose.json",
      "schemas": {
        "input": "/reference/schemas/rectangle-set-compose.input.json",
        "output": "/reference/schemas/rectangle-set-compose.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "records-crosstab-compose",
      "name": "Exact typed record crosstab",
      "description": "Compose first-occurrence typed row/column axes, dense counts, exact decimal-string sums and per-measure missing/null/valid coverage with aligned margins.",
      "category": "data-assurance",
      "intents": [
        "build typed exact decimal crosstab matrix",
        "pivot records with missing null measure coverage",
        "compose chart ready counts and decimal totals"
      ],
      "whenToUse": [
        "Producing typed crossed categories with exact decimal sums from supplied records",
        "Preserving missing versus null and scalar-type distinctions",
        "Preparing aligned count grids and row/column/grand totals"
      ],
      "whenNotToUse": [
        "Accounting advice, statistical inference or verification of supplied observations",
        "Floating-point measurements, automatic numeric string coercion or implicit chart conversion",
        "Locale ordering, category normalization or inventing absent categories",
        "Fetching sources, changing external state or executing supplied data"
      ],
      "capabilities": [
        "RFC 6901 selection with first-occurrence typed tuples",
        "Exact BigInt scale-18 decimal aggregation with canonical string outputs",
        "Complete per-measure valid, null and missing coverage",
        "Dense-axis and metric-slot admission before matrix allocation",
        "Deterministic supplied-input-only inert artifact; no network, clock, randomness or external state change"
      ],
      "related": [
        "records-aggregate",
        "record-profile",
        "decimal-distribution-summarize"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 300000,
        "jsonNodes": 10000,
        "depth": 20,
        "profile": "typed-exact-decimal-crosstab-v1",
        "records": 1000,
        "rowPointers": 2,
        "columnPointers": 2,
        "measures": 4,
        "axisTuples": 128,
        "denseCells": 1024,
        "metricSlotsIncludingMargins": 4096,
        "pointerSteps": 64000,
        "decimalParses": 4000,
        "decimalIntegerDigits": 24,
        "decimalFractionDigits": 18,
        "pointerCharacters": 2048,
        "measureNameCharacters": 128
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_INPUT",
        "CROSSTAB_MEASURE_NAME",
        "CROSSTAB_DECIMAL",
        "CROSSTAB_AXIS",
        "CROSSTAB_AXIS_LIMIT",
        "CROSSTAB_CELL_LIMIT",
        "CROSSTAB_WORK_LIMIT"
      ],
      "proposedNominalUsd": "0.006",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/records-crosstab-compose",
      "contract": "/reference/services/records-crosstab-compose.json",
      "schemas": {
        "input": "/reference/schemas/records-crosstab-compose.input.json",
        "output": "/reference/schemas/records-crosstab-compose.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "polyline-rectangle-clip",
      "name": "Exact closed rectangle polyline clipping",
      "description": "Clip each directed source segment against a closed integer rectangle and return exact reduced rational parameters and endpoints, preserving point contacts and per-segment provenance.",
      "category": "data-assurance",
      "intents": [
        "clip polyline to closed rectangle viewport",
        "intersect line segments with exact rational coordinates",
        "retain segment provenance and tangent point intersections"
      ],
      "whenToUse": [
        "Exact viewport clipping on a caller-supplied integer Cartesian grid",
        "Obtaining ordered segment fragments with exact source parameters",
        "Keeping boundary and tangent contacts without rounded coordinates"
      ],
      "whenNotToUse": [
        "Half-open rectangle set operations or polygon clipping",
        "Geodesic distances, CRS conversion, antimeridian handling or physical units",
        "Merging fragments, topology guarantees or direct floating-point renderer output",
        "Fetching sources, changing external state or executing supplied data"
      ],
      "capabilities": [
        "Closed boundaries and exact reduced rational interpolation",
        "Source-order pieces without merging adjacent segments",
        "Inside repeated vertices retain t0=0 and t1=1",
        "Deterministic supplied-input-only inert artifact; no network, clock, randomness or external state change"
      ],
      "related": [
        "rectangle-set-compose",
        "polyline-simplify"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 300000,
        "jsonNodes": 10000,
        "depth": 20,
        "profile": "integer-polyline-closed-rectangle-clip-v1",
        "points": 512,
        "pieces": 511,
        "clippingInequalities": 2044,
        "absoluteCoordinate": "1000000000000"
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_INPUT",
        "POLYLINE_COORDINATE_RANGE",
        "POLYLINE_RECTANGLE_EXTENT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/polyline-rectangle-clip",
      "contract": "/reference/services/polyline-rectangle-clip.json",
      "schemas": {
        "input": "/reference/schemas/polyline-rectangle-clip.input.json",
        "output": "/reference/schemas/polyline-rectangle-clip.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "polyline-simplify",
      "name": "Exact integer-grid polyline simplification",
      "description": "Simplify a supplied integer polyline with exact point-to-segment Ramer–Douglas–Peucker decisions, original retained indexes and per-final-segment squared vertex-deviation witnesses.",
      "category": "data-assurance",
      "intents": [
        "simplify integer polyline with exact tolerance",
        "reduce original vertices with retained source indexes",
        "certify squared original vertex deviations for a preview trace"
      ],
      "whenToUse": [
        "Reducing original-vertex polylines for previews or vector exports",
        "Requiring exact inclusive tolerance decisions and earliest-index distance ties",
        "Checking original removed vertices against their final enclosing segments"
      ],
      "whenNotToUse": [
        "Minimum-vertex optimization, topology or area preservation",
        "Curve smoothing, map matching or global geometry equivalence",
        "General Hausdorff certificates, geodesic distances or coordinate conversion",
        "Fetching sources, changing external state or executing supplied data"
      ],
      "capabilities": [
        "Iterative exact point-to-segment RDP with endpoint projection clamping",
        "Strictly-greater splitting and earliest-source-index ties",
        "Preserved first/last source indexes including coincident coordinates",
        "Reduced rational maximum squared vertex deviation with earliest witness per segment",
        "Deterministic supplied-input-only inert artifact; no network, clock, randomness or external state change"
      ],
      "related": [
        "polyline-rectangle-clip",
        "rectangle-set-compose"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 300000,
        "jsonNodes": 10000,
        "depth": 20,
        "profile": "exact-integer-rdp-polyline-v1",
        "points": 256,
        "absoluteCoordinate": "1000000000000",
        "tolerance": "2000000000000",
        "distanceTests": 35000,
        "worstRdpInteriorTests": 32385,
        "maximumCertificateTests": 254
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_INPUT",
        "POLYLINE_COORDINATE_RANGE",
        "POLYLINE_TOLERANCE_RANGE",
        "POLYLINE_WORK_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/polyline-simplify",
      "contract": "/reference/services/polyline-simplify.json",
      "schemas": {
        "input": "/reference/schemas/polyline-simplify.input.json",
        "output": "/reference/schemas/polyline-simplify.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "keyed-changefeed-materialize",
      "name": "Atomic keyed changefeed snapshot materializer",
      "description": "Fold supplied ordered revision-checked put/delete events into a fresh complete keyed snapshot with tombstones and receipts, or return the first tentative-fold conflict without partial state. Valid conflicts are normal paid results; never reads or writes a database.",
      "category": "data-assurance",
      "intents": [
        "materialize revision checked keyed event batch",
        "build next offline snapshot with tombstones",
        "locate first atomic changefeed conflict"
      ],
      "whenToUse": [
        "Preparing a complete next snapshot from caller-supplied records and events",
        "Keeping exact typed tuple identity and explicit revision arithmetic",
        "Inspecting an offline ordered event fold before separately authorized persistence"
      ],
      "whenNotToUse": [
        "Live CDC ingestion, database CAS or transactions, cursor advancement or durable writes",
        "Historical event deduplication, exactly-once execution or authenticated event provenance",
        "Partial record patches, last-writer-wins, tombstone garbage collection or CRDT convergence",
        "Fetching sources, changing external state or executing supplied data"
      ],
      "capabilities": [
        "Atomic complete snapshot or first-conflict diagnostic with no partial receipts",
        "Tombstones and explicit recreation preserve snapshot insertion order",
        "Conflict precedence is revision mismatch, delete not live, then revision exhaustion",
        "Valid materialized and conflict outcomes each incur the proposed per-result price",
        "Deterministic supplied-input-only inert artifact; no network, clock, randomness or external state change"
      ],
      "related": [
        "json-patch",
        "idempotency-conflict-check",
        "replay-divergence-check",
        "message-batch-plan"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 300000,
        "jsonNodes": 10000,
        "depth": 20,
        "profile": "explicit-key-revision-fold-v1",
        "snapshotEntries": 512,
        "events": 256,
        "finalKeys": 768,
        "keyComponentsPerTuple": 4,
        "keyComponentVisits": 3072,
        "identifierUtf8Bytes": 128,
        "aggregateKeyTupleUtf8Bytes": 64000,
        "revisionMaximum": "999999999999999999999999",
        "foldSteps": 256
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_INPUT",
        "MATERIALIZER_DUPLICATE_KEY",
        "MATERIALIZER_EVENT_ID",
        "MATERIALIZER_KEY_LIMIT",
        "STATE_WORK_LIMIT"
      ],
      "proposedNominalUsd": "0.006",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/keyed-changefeed-materialize",
      "contract": "/reference/services/keyed-changefeed-materialize.json",
      "schemas": {
        "input": "/reference/schemas/keyed-changefeed-materialize.input.json",
        "output": "/reference/schemas/keyed-changefeed-materialize.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "dependency-version-select",
      "name": "Exact finite dependency version selector",
      "description": "Select the lexicographically highest jointly compatible stable versions in caller-declared package priority from a complete supplied finite catalogue, with first-failure witnesses for every earlier combination. Valid infeasibility is a normal paid result; never contacts a registry or installs packages.",
      "category": "data-assurance",
      "intents": [
        "select compatible finite dependency versions",
        "pin closed supplied release catalogue",
        "prove lexicographic finite version selection or catalogue infeasibility"
      ],
      "whenToUse": [
        "Choosing one supplied version of every package for a bounded offline release fixture",
        "Resolving conditional version requirements, including self-dependencies and cycles",
        "Regenerating and checking every rejected higher-priority combination from explicit evidence"
      ],
      "whenNotToUse": [
        "Registry lookup, download, installation, native npm lockfile generation or unseen releases",
        "Prerelease/build metadata or npm/pnpm/yarn range, peer, optional, workspace, platform or engine semantics",
        "Authenticity, vulnerability or license checks; minimum-change objectives; installation ordering",
        "Fetching sources, changing external state or executing supplied data"
      ],
      "capabilities": [
        "Typed stable version intervals with union arms and conjunctive active constraints",
        "Exact raw Cartesian domain bounded before enumeration, with last package varying fastest",
        "Input package priority and numeric descending candidates define deterministic selection",
        "Original candidate indexes and flattened source pointers make rejection witnesses reproducible",
        "Valid selected and infeasible outcomes each incur the proposed per-result price",
        "Deterministic supplied-input-only inert artifact; no network, clock, randomness or external state change"
      ],
      "related": [
        "semver-evaluate",
        "lockfile-inventory",
        "contract-version-route"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 300000,
        "jsonNodes": 10000,
        "depth": 20,
        "profile": "closed-set-stable-semver-selection-v1",
        "packages": 16,
        "candidatesPerPackage": 8,
        "candidates": 64,
        "reachableCandidatesUnderJointCaps": 44,
        "constraints": 128,
        "intervalsPerConstraint": 4,
        "intervals": 512,
        "versionComponentMaximum": 1000000000,
        "identifierUtf8Bytes": 128,
        "completeCombinations": 4096,
        "constraintVisits": 524288,
        "membershipTests": 4096,
        "endpointTriples": 1024,
        "packagePositions": 65536
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_INPUT",
        "VERSION_CATALOGUE_DUPLICATE",
        "VERSION_CANDIDATE_LIMIT",
        "VERSION_CONSTRAINT_LIMIT",
        "VERSION_INTERVAL_LIMIT",
        "VERSION_INTERVAL",
        "VERSION_TARGET",
        "VERSION_SEARCH_LIMIT",
        "STATE_WORK_LIMIT"
      ],
      "proposedNominalUsd": "0.008",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/dependency-version-select",
      "contract": "/reference/services/dependency-version-select.json",
      "schemas": {
        "input": "/reference/schemas/dependency-version-select.input.json",
        "output": "/reference/schemas/dependency-version-select.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "records-link-candidates",
      "name": "Exact Record Link Candidates",
      "description": "Produce every admissible cross-table candidate using explicitly normalized Unicode-scalar Levenshtein distances and exact integer weighted costs. Includes all tied best candidates; never selects an identity, asserts duplicates or merges records.",
      "category": "data-assurance",
      "intents": [
        "Find reproducible near-spelling candidates between small supplied part catalogues",
        "Compare asset labels under explicit normalization and edit-distance cutoffs"
      ],
      "whenToUse": [
        "Return a complete bounded candidate queue with exact field-distance evidence"
      ],
      "whenNotToUse": [
        "Identity resolution, true-duplicate assertions, automatic merging, confidence probabilities or semantic similarity",
        "Medical, employment, credit or other high-impact decisions about people",
        "Large-table nearest neighbors, top-k retrieval or transposition distance",
        "Network requests, file changes, external execution, publishing or deployment"
      ],
      "capabilities": [
        "Exact unit-cost scalar Levenshtein over every cross pair and field; no pruning or truncation",
        "Unicode normalization then ASCII lowercase then ASCII whitespace collapse/trim, each explicitly selected",
        "Unicode normalization supplied by the pinned Worker runtime; NFKC can erase meaningful distinctions",
        "Candidate sort: exact UTF-16 left ID, numeric cost, exact UTF-16 right ID; IDs are never normalized",
        "Complete bounded result computed during semantic preflight before payment challenge; recomputed during execution",
        "Supplied-data-only artifact; externalRequests=0"
      ],
      "related": [
        "records-project",
        "records-join",
        "assignment-cost-optimize"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 300000,
        "jsonNodes": 12000,
        "depth": 20,
        "dpCells": 262144,
        "rowsPerSide": 16,
        "fields": 3,
        "valueScalars": 128,
        "idCodeUnits": 80,
        "weight": 100,
        "maxWeightedDistance": 38400,
        "candidates": 256,
        "comparisonUnit": "unicode-scalars",
        "normalizationOrder": "unicodeForm,asciiCase,asciiWhitespace",
        "candidateSet": "complete-for-declared-rules"
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "WORK_LIMIT",
        "DUPLICATE_ID",
        "FIELD_WIDTH",
        "VALUE_LENGTH"
      ],
      "proposedNominalUsd": "0.006",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/records-link-candidates",
      "contract": "/reference/services/records-link-candidates.json",
      "schemas": {
        "input": "/reference/schemas/records-link-candidates.input.json",
        "output": "/reference/schemas/records-link-candidates.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "text-edit-align",
      "name": "Exact Scalar Text Edit Alignment",
      "description": "Generate a minimum unit-edit alignment of two supplied short texts with deterministic ties, scalar/UTF-16/UTF-8 spans, exact digests and a fully guarded text-edits-apply request. Preserves every supplied scalar and newline without normalization.",
      "category": "data-assurance",
      "intents": [
        "Generate guarded text edits from two short exact text versions",
        "Align scalar changes with Unicode byte and code-unit offset evidence"
      ],
      "whenToUse": [
        "Produce a complete reproducible minimum unit-edit script and consumer-ready guarded edit request"
      ],
      "whenNotToUse": [
        "Line, token, grapheme or semantic alignment; fuzzy anchoring or transposition distance",
        "Long documents or more than 200 separated changed blocks",
        "Network requests, file changes, external execution, publishing or deployment"
      ],
      "capabilities": [
        "Suffix DP with optimal step precedence equal, substitute, delete, insert",
        "Coalesce adjacent equal steps only; every non-equal step stays scalar-granular",
        "Guarded edits group maximal contiguous non-equal blocks without crossing equal text",
        "Actual consumer input schema and complete generated-input semantic checks before challenge; consumer purchase/execution remains separate",
        "Exact UTF-8 SHA-256 provenance; no normalization, trimming or newline conversion",
        "Complete bounded result computed during semantic preflight before payment challenge; recomputed during execution",
        "Supplied-data-only artifact; externalRequests=0"
      ],
      "related": [
        "text-edits-apply",
        "text-offset-map",
        "lines-diff"
      ],
      "limits": {
        "inputBytes": 100000,
        "outputBytes": 300000,
        "jsonNodes": 12000,
        "depth": 20,
        "dpCells": 262144,
        "textScalars": 512,
        "atomicSteps": 1024,
        "editBlocks": 200,
        "editOffsetUnit": "utf16-code-units",
        "alignmentUnit": "unicode-scalars",
        "tieOrder": "equal,substitute,delete,insert"
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "WORK_LIMIT",
        "TEXT_LENGTH",
        "EDIT_BLOCK_LIMIT",
        "CONSUMER_INPUT"
      ],
      "proposedNominalUsd": "0.006",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/text-edit-align",
      "contract": "/reference/services/text-edit-align.json",
      "schemas": {
        "input": "/reference/schemas/text-edit-align.input.json",
        "output": "/reference/schemas/text-edit-align.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "checked-json-artifact",
      "name": "Checked JSON Artifact Bundle",
      "description": "Repair one JSON document, require a valid caller-schema result, serialize and SHA-256 hash it before one x402 settlement. Fixed four-step local profile; no partial result, RFC 8785 or guaranteed delivery.",
      "category": "document-assurance",
      "intents": [
        "Repair, schema-check, serialize and hash one JSON document before one service charge",
        "Produce a checked JSON artifact with its exact UTF-8 SHA-256 and reviewable repair evidence"
      ],
      "whenToUse": [
        "The caller needs all four successful local steps as one x402-only fixed job",
        "Withhold partial results and stop before new settlement if repair or schema acceptance fails"
      ],
      "whenNotToUse": [
        "Arbitrary workflows, operation lists, bindings, external requests, MPP, or per-step pricing",
        "Only repair, only validation, or a job that does not need an artifact digest",
        "Full JSON Schema, RFC 8785, semantic truth, authenticity or guaranteed delivery"
      ],
      "capabilities": [
        "Exactly four trusted local components, one fixed proposed total and one outer protocol receipt",
        "Caller-owned safe-json-schema-subset-v1 gate; false/rejected reports abort the bundle",
        "Full repair original and edit evidence only in the complete successful result",
        "Artifact SHA-256 differs from the outer result-packet provenance hash",
        "Payment and response-delivery uncertainty require reconciliation using the original request identity"
      ],
      "related": [
        "json-repair",
        "json-schema-check",
        "json-canonicalize",
        "content-digest"
      ],
      "limits": {
        "steps": 4,
        "sourceItems": 1,
        "bindings": 3,
        "inputBytes": 32768,
        "sourceCodeUnits": 8000,
        "sourceBytesUtf8": 16000,
        "schemaBytes": 8192,
        "schemaNodes": 64,
        "schemaDepth": 8,
        "combinatorMembers": 4,
        "enumConstBytes": 8192,
        "valueNodes": 2000,
        "valueDepth": 16,
        "valueCollectionEntries": 256,
        "repairEdits": 100,
        "resolvedInputBytes": 32768,
        "resolvedInputNodes": 4000,
        "resolvedInputDepth": 20,
        "intermediateOutputBytes": 65536,
        "aggregateBytes": 196608,
        "aggregateNodes": 16000,
        "outputBytes": 131072,
        "jsonDepth": 24,
        "jsonNodes": 16000,
        "profile": "checked-json-artifact-v1",
        "networkAccess": "none-for-local-transformations",
        "schemaDialect": "safe-json-schema-subset-v1",
        "serializationProfile": "sorted-key-javascript-json-not-rfc8785",
        "paymentProtocol": "x402-only",
        "priceStatus": "proposed-unverified",
        "delivery": "not-guaranteed"
      },
      "errorCodes": [
        "BUNDLE_INPUT_LIMIT",
        "BUNDLE_PROFILE_INVALID",
        "BUNDLE_REPAIR_REJECTED",
        "BUNDLE_SCHEMA_REJECTED",
        "BUNDLE_STEP_INVALID",
        "BUNDLE_WORK_LIMIT",
        "BUNDLE_OUTPUT_LIMIT",
        "BUNDLE_INTERNAL_CONTRACT"
      ],
      "proposedNominalUsd": "0.016",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402"
      ],
      "html": "/discover/tools/checked-json-artifact",
      "contract": "/reference/services/checked-json-artifact.json",
      "schemas": {
        "input": "/reference/schemas/checked-json-artifact.input.json",
        "output": "/reference/schemas/checked-json-artifact.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "json-jcs-canonicalize",
      "name": "JCS JSON Source Canonicalizer",
      "description": "Canonicalize strict supplied JSON source with duplicate-name, Unicode and binary64 admission to bounded RFC 8785-compatible UTF-8 text and SHA-256. No signing, authenticity, authorization or lossless decimal guarantee.",
      "category": "structured",
      "intents": [
        "canonicalize strict JSON source to RFC 8785 bytes",
        "detect duplicate JSON names before canonicalization",
        "prepare JCS binary64 artifacts for offline consumers"
      ],
      "whenToUse": [
        "An external consumer explicitly requires the bounded jcs-rfc8785-source-binary64-v1 profile",
        "Source JSON must retain duplicate-member visibility and recursively sorted UTF-16 object keys"
      ],
      "whenNotToUse": [
        "Lossless arbitrary-precision decimal or large-integer semantics; represent such data as strings",
        "Repairing JSON, authorizing actions, signing, authenticating authors or proving content correctness",
        "Secrets or personal data that must not be disclosed; unsalted artifact hashes do not anonymize inputs"
      ],
      "capabilities": [
        "Strict raw-source grammar; escaped duplicate names rejected before ordinary object construction",
        "Rejects negative zero per verified erratum 7920, underflow-to-zero, nonfinite numbers, lone surrogates and Unicode noncharacters",
        "Exact canonical UTF-8 length and SHA-256; arrays and Unicode normalization distinctions preserved",
        "Deterministic supplied-input-only operation without network, clock or randomness"
      ],
      "related": [
        "json-canonicalize",
        "http-signature-base-compose",
        "content-digest"
      ],
      "limits": {
        "inputBytes": 16384,
        "jsonNodes": 1024,
        "depth": 12,
        "sourceBytes": 8192,
        "outputBytes": 200000,
        "canonicalBytes": 8192,
        "sourceNodes": 1024,
        "sourceDepth": 32,
        "collectionEntries": 256,
        "keyBytes": 1024,
        "numberTokenBytes": 128,
        "profile": "jcs-rfc8785-source-binary64-v1"
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INVALID_JSON_SOURCE",
        "DUPLICATE_MEMBER",
        "INVALID_UNICODE",
        "NUMBER_DOMAIN",
        "NEGATIVE_ZERO",
        "INPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "OUTPUT_LIMIT"
      ],
      "proposedNominalUsd": "0.005",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/json-jcs-canonicalize",
      "contract": "/reference/services/json-jcs-canonicalize.json",
      "schemas": {
        "input": "/reference/schemas/json-jcs-canonicalize.input.json",
        "output": "/reference/schemas/json-jcs-canonicalize.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "http-signature-base-compose",
      "name": "Compose an HTTP request signature base",
      "description": "Compose inert ASCII RFC 9421 request signature-base and Signature-Input artifacts from ordered, supplied non-secret field examples and explicit context. Does not sign, verify, authorize or send requests.",
      "category": "protocol-assurance",
      "intents": [
        "compose an HTTP request signature base",
        "extract ordered RFC 9421 request components"
      ],
      "whenToUse": [
        "Build an inert signature-base example from supplied request context and ordered ASCII field lines",
        "Compare raw and binary-wrapped field boundaries before using an external signer"
      ],
      "whenNotToUse": [
        "Signing, verification, keys, credentials, authentication, authorization, payment, or live HTTP requests",
        "Responses, trailers, CONNECT, query-parameter selection, Structured Field parsing, Unicode or obs-text fields",
        "Secret or production request payloads, including secrets in targets, free text or key identifiers"
      ],
      "capabilities": [
        "Ordered field provenance and per-line binary wrapping",
        "Strict bounded schema and complete semantic preflight before execution",
        "Exact ASCII artifacts, byte lengths and SHA-256 artifact hashes"
      ],
      "limits": {
        "inputBytes": 16384,
        "jsonNodes": 1024,
        "depth": 12,
        "outputBytes": 200000,
        "headerLines": 64,
        "headerNameBytes": 64,
        "headerValueBytes": 1024,
        "aggregateHeaderValueBytes": 4096,
        "targetBytes": 1024,
        "authorityBytes": 259,
        "components": 32,
        "parameters": 6,
        "labelBytes": 64,
        "signatureBaseBytes": 8192,
        "signatureInputBytes": 4096
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INVALID_UNICODE",
        "INPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "OUTPUT_LIMIT",
        "INVALID_REQUEST_CONTEXT",
        "INVALID_FIELD",
        "FORBIDDEN_FIELD",
        "UNSUPPORTED_COMPONENT",
        "DUPLICATE_COMPONENT",
        "MISSING_COMPONENT",
        "AMBIGUOUS_FIELD",
        "INVALID_PARAMETER"
      ],
      "proposedNominalUsd": "0.006",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/http-signature-base-compose",
      "contract": "/reference/services/http-signature-base-compose.json",
      "schemas": {
        "input": "/reference/schemas/http-signature-base-compose.input.json",
        "output": "/reference/schemas/http-signature-base-compose.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "http-byte-ranges-resolve",
      "name": "Resolve exact HTTP byte ranges",
      "description": "Resolve a strict supplied HTTP bytes Range field against an exact decimal representation length, retaining requested order, duplicates, unsatisfied members and half-open spans. No coalescing, server preconditions, fetching or response transmission.",
      "category": "protocol-assurance",
      "intents": [
        "resolve HTTP byte range suffix offsets",
        "exact Range header interval plan",
        "interpret byte ranges for supplied representation length"
      ],
      "whenToUse": [
        "Inspect bounded Range syntax and exact byte spans even when only a large representation length is available"
      ],
      "whenNotToUse": [
        "No remote fetching, request transmission, filesystem access, caching, content decoding or authenticity verification",
        "No server policy, method, conditional request or If-Range enforcement; callers must check applicability separately",
        "Not a full HTTP parser: unsupported units, empty list members, inner whitespace and numbers over 20 digits are rejected by this bounded profile"
      ],
      "capabilities": [
        "Exact decimal integer arithmetic up to 20 digits per coordinate",
        "Closed, open-ended and suffix ranges with input-order provenance",
        "Nonzero empty-representation suffixes remain satisfiable; selected-byte totals count overlaps and duplicates repeatedly"
      ],
      "related": [
        "http-byte-ranges-compose",
        "http-etag-evaluate",
        "interval-analyze"
      ],
      "limits": {
        "inputBytes": 16384,
        "outputBytes": 24576,
        "jsonNodes": 128,
        "depth": 4,
        "rangeBytes": 2048,
        "ranges": 16,
        "integerDigits": 20,
        "profile": "http-byte-ranges-exact-v1"
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INVALID_UNICODE",
        "INVALID_RANGE",
        "INPUT_LIMIT",
        "INTEGER_LIMIT",
        "RANGE_LIMIT",
        "COMPLEXITY_LIMIT",
        "OUTPUT_LIMIT"
      ],
      "proposedNominalUsd": "0.004",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/http-byte-ranges-resolve",
      "contract": "/reference/services/http-byte-ranges-resolve.json",
      "schemas": {
        "input": "/reference/schemas/http-byte-ranges-resolve.input.json",
        "output": "/reference/schemas/http-byte-ranges-resolve.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "http-byte-ranges-compose",
      "name": "Compose HTTP byte-range bodies",
      "description": "Compose exact inert single-range or multipart/byteranges 206 bodies, or an empty 416 artifact, from supplied nonempty Base64 bytes and a strict Range field. Byte-preserving order, offsets, fields and SHA-256; no conditional-request checks or transmission.",
      "category": "protocol-assurance",
      "intents": [
        "compose multipart byteranges body",
        "build exact partial content response bytes",
        "serialize single range Content-Range payload"
      ],
      "whenToUse": [
        "Create bounded partial-content test artifacts from inline bytes without decoding or contacting a server"
      ],
      "whenNotToUse": [
        "No remote fetching, request transmission, filesystem access, caching, content decoding or authenticity verification",
        "No server policy, method, conditional request or If-Range enforcement; callers must check applicability separately",
        "Not a full HTTP parser: unsupported units, empty list members, inner whitespace and numbers over 20 digits are rejected by this bounded profile",
        "Empty representations, media-type parameters, automatic boundary generation or boundary tokens appearing anywhere in selected payloads"
      ],
      "capabilities": [
        "Resolves Range internally; no separately paid resolver call is required",
        "Exact canonical Base64 body and SHA-256 over binary bytes",
        "Single or multipart selection preserves all satisfiable occurrences without coalescing",
        "At most 8 supplied Range members; linear boundary-collision scanning and full sizing precede payment"
      ],
      "related": [
        "http-byte-ranges-resolve",
        "multipart-form-encode",
        "http-etag-evaluate"
      ],
      "limits": {
        "inputBytes": 16384,
        "outputBytes": 24576,
        "jsonNodes": 128,
        "depth": 4,
        "rangeBytes": 2048,
        "ranges": 8,
        "composeRanges": 8,
        "integerDigits": 20,
        "representationBytes": 8192,
        "bodyBytes": 8192,
        "mediaTypeBytes": 127,
        "boundaryBytes": 60,
        "profile": "http-byte-ranges-body-v1"
      },
      "errorCodes": [
        "INVALID_INPUT",
        "INVALID_UNICODE",
        "INVALID_RANGE",
        "INVALID_BASE64",
        "EMPTY_REPRESENTATION",
        "BOUNDARY_REQUIRED",
        "UNUSED_BOUNDARY",
        "BOUNDARY_COLLISION",
        "INPUT_LIMIT",
        "INTEGER_LIMIT",
        "RANGE_LIMIT",
        "COMPLEXITY_LIMIT",
        "OUTPUT_LIMIT"
      ],
      "proposedNominalUsd": "0.006",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/http-byte-ranges-compose",
      "contract": "/reference/services/http-byte-ranges-compose.json",
      "schemas": {
        "input": "/reference/schemas/http-byte-ranges-compose.input.json",
        "output": "/reference/schemas/http-byte-ranges-compose.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "route-matrix-optimize",
      "name": "Exact supplied-matrix route",
      "description": "Find an exact minimum-cost directed route visiting every supplied stop once, as a fixed-start cycle or open path with optional fixed end. Null arcs are forbidden; no maps, geocoding, traffic, vehicle capacity, time windows or dispatch.",
      "category": "workflow-assurance",
      "intents": [
        "Optimize a small directed travelling-salesperson tour from a supplied cost matrix",
        "Choose the least-cost order for visiting every supplied stop exactly once"
      ],
      "whenToUse": [
        "All leg costs and allowed arcs are supplied in one declared unit; at most 12 stops including the start"
      ],
      "whenNotToUse": [
        "Shortest paths that may skip/revisit stops, real routing data, multiple vehicles, capacity or time windows",
        "General route search beyond the exact bounded Hamiltonian model",
        "Investment advice, high-impact decisions about people, or validating the truth of caller assumptions"
      ],
      "capabilities": [
        "Exact decimal BigInt subset dynamic programming with lexical optimal ties",
        "Explicit cycle, free-end path or fixed-end path; valid infeasible results have no route",
        "A one-stop request produces its start only, no self-loop and exact zero cost",
        "Complete computation and result sizing before payment challenge",
        "Exact bounded supplied-data arithmetic; no network, clock, randomness or external action"
      ],
      "related": [
        "assignment-cost-optimize",
        "workflow-resource-plan"
      ],
      "limits": {
        "inputBytes": 48000,
        "outputBytes": 192000,
        "jsonNodes": 8000,
        "depth": 12,
        "stops": 12,
        "matrixCells": 144,
        "allocatedDpCells": 24576,
        "maximumTransitionChecks": 135168,
        "decimalIntegerDigits": 12,
        "decimalFractionDigits": 6
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_INPUT",
        "DUPLICATE_ID",
        "MATRIX_SHAPE",
        "UNKNOWN_STOP",
        "INVALID_ENDPOINTS",
        "INVALID_DIAGONAL",
        "INTERNAL_ROUTE"
      ],
      "proposedNominalUsd": "0.010",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/route-matrix-optimize",
      "contract": "/reference/services/route-matrix-optimize.json",
      "schemas": {
        "input": "/reference/schemas/route-matrix-optimize.input.json",
        "output": "/reference/schemas/route-matrix-optimize.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "decision-scenarios-analyze",
      "name": "Exact finite-scenario decision tradeoffs",
      "description": "Compare caller-defined alternatives using a complete loss matrix: all expected-loss, worst-loss and minimax-regret optima, scenario Pareto dominance and perfect-information value. Optional explicit positive relative probabilities; no inferred likelihoods or universal recommendation.",
      "category": "workflow-assurance",
      "intents": [
        "Compare decision alternatives under supplied uncertain scenarios",
        "Compute exact minimax regret, worst-case loss and Pareto-dominated options",
        "Calculate expected-loss choices and perfect-information value from explicit scenario weights"
      ],
      "whenToUse": [
        "Caller supplies complete nonnegative losses in one unit for every alternative and scenario",
        "Use null probabilityWeights when no probability model is justified"
      ],
      "whenNotToUse": [
        "Forecasting, eliciting utilities or probabilities, validating scenario completeness, continuous or randomized policies",
        "Weighted rubric aggregation with missing observations or incompatible units",
        "Investment advice, high-impact decisions about people, or validating the truth of caller assumptions"
      ],
      "capabilities": [
        "All tied minimizers retained with exact decimal and rational arithmetic",
        "Strict Pareto dominance requires no worse loss everywhere and strictly lower loss somewhere; identical alternatives remain nondominated",
        "Expected values are absent unless strictly positive relative probability weights are supplied for every scenario",
        "Perfect-information value assumes cost-free advance revelation of the supplied scenario and is not the value of a real experiment",
        "Exact bounded supplied-data arithmetic; no network, clock, randomness or external action"
      ],
      "related": [
        "rubric-score-aggregate",
        "inventory-scenarios-optimize"
      ],
      "limits": {
        "inputBytes": 48000,
        "outputBytes": 192000,
        "jsonNodes": 8000,
        "depth": 12,
        "alternatives": 24,
        "scenarios": 24,
        "matrixCells": 576,
        "maximumDominanceCellComparisons": 27648,
        "decimalIntegerDigits": 12,
        "decimalFractionDigits": 6,
        "probabilityWeightDigits": 9
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_INPUT",
        "DUPLICATE_ID",
        "MATRIX_SHAPE",
        "WEIGHT_SHAPE"
      ],
      "proposedNominalUsd": "0.006",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/decision-scenarios-analyze",
      "contract": "/reference/services/decision-scenarios-analyze.json",
      "schemas": {
        "input": "/reference/schemas/decision-scenarios-analyze.input.json",
        "output": "/reference/schemas/decision-scenarios-analyze.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    },
    {
      "id": "inventory-scenarios-optimize",
      "name": "Exact finite-scenario inventory order",
      "description": "Enumerate every admissible one-period order quantity and minimize exact expected purchase, fixed-order, leftover and unmet-demand costs under caller-supplied demand scenarios. Return all optimal quantities and scenario arithmetic; no demand forecast, service guarantee or order placement.",
      "category": "workflow-assurance",
      "intents": [
        "Optimize a single-period reorder quantity under explicit demand scenarios",
        "Compare order multiples and minimum-positive-order constraints with holding and shortage costs"
      ],
      "whenToUse": [
        "Supply integer inventory and demand in one unit, positive relative scenario probabilities and nonnegative cost assumptions",
        "All replenishment arrives before demand and every positive order follows the declared multiple and minimum"
      ],
      "whenNotToUse": [
        "Forecasting, multi-period inventory, uncertain lead time, backorder carryover, shelf life, multiple products or capacity coupling",
        "Real procurement, inventory availability checks, service-level promises or profit optimization",
        "Investment advice, high-impact decisions about people, or validating the truth of caller assumptions"
      ],
      "capabilities": [
        "Exact exhaustive expected-cost optimum across at most 512 legal quantities; zero order is always permitted",
        "Complete candidate expected/worst cost table, all exact ties, and smallest-quantity tie break",
        "Chosen-scenario shortage, leftover and normalized probabilities; existing on-hand purchase cost is sunk and excluded",
        "Stockout probability applies only to the supplied finite scenario model and is not a calibrated real-world risk estimate",
        "Exact bounded supplied-data arithmetic; no network, clock, randomness or external action"
      ],
      "related": [
        "decision-scenarios-analyze",
        "decimal-distribution-summarize"
      ],
      "limits": {
        "inputBytes": 48000,
        "outputBytes": 192000,
        "jsonNodes": 8000,
        "depth": 12,
        "scenarios": 32,
        "orderCandidates": 512,
        "maximumCandidateScenarioEvaluations": 16384,
        "maximumChosenScenarioEvaluations": 32,
        "quantityMaximum": 1000000,
        "decimalIntegerDigits": 12,
        "decimalFractionDigits": 6,
        "probabilityWeightDigits": 9
      },
      "errorCodes": [
        "INPUT_LIMIT",
        "OUTPUT_LIMIT",
        "COMPLEXITY_LIMIT",
        "INVALID_JSON",
        "INVALID_NUMBER",
        "INVALID_UNICODE",
        "UNSAFE_KEY",
        "INVALID_INPUT",
        "DUPLICATE_ID",
        "CANDIDATE_LIMIT"
      ],
      "proposedNominalUsd": "0.008",
      "pricingStatus": "proposed-unverified",
      "supportedProtocols": [
        "x402",
        "mpp"
      ],
      "html": "/discover/tools/inventory-scenarios-optimize",
      "contract": "/reference/services/inventory-scenarios-optimize.json",
      "schemas": {
        "input": "/reference/schemas/inventory-scenarios-optimize.input.json",
        "output": "/reference/schemas/inventory-scenarios-optimize.output.json"
      },
      "availability": {
        "status": "planned-unavailable",
        "liveEndpoint": null
      }
    }
  ],
  "pilotAvailability": {
    "format": "bounded-three-tool-pilot-availability-v1",
    "status": "conditional-pilot-window",
    "apiOrigin": "https://api.carloshbcabral.com",
    "openapi": "/openapi-live.json",
    "preflightLinks": {
      "health": "https://api.carloshbcabral.com/health",
      "catalogue": "https://api.carloshbcabral.com/catalogue"
    },
    "http402VerificationScope": "Historical unsigned challenges for content-digest and timestamp-convert; separate newly verified unsigned JSON challenge. No completed sale or settlement is asserted.",
    "validFrom": "2026-10-06T18:35:00Z",
    "validUntil": "2026-10-07T18:35:00Z",
    "availableOperationIds": [
      "content-digest",
      "timestamp-convert",
      "json-repair"
    ],
    "plannedUnavailableOperationCount": 167,
    "protocol": "x402-v2",
    "mppAvailable": false,
    "pricePerTool": {
      "amount": "0.003",
      "currency": "USDC",
      "assetKind": "native",
      "network": "eip155:8453",
      "networkName": "Base",
      "amountAtomic": "3000",
      "payerNetworkFeesIncluded": false
    },
    "pilotLimits": {
      "quotes": 20,
      "settlementAttempts": 20,
      "providerCalls": 80,
      "unsignedCalls": 1000,
      "concurrentValidations": 1,
      "residentRequests": 2
    },
    "availabilityConditions": [
      "Inside the unchanged original UTC window",
      "Remaining shared quote, settlement, provider HTTP and unsigned-call caps",
      "Remaining shared free allowance and provider availability",
      "One concurrent validation and two resident requests",
      "Fresh health/catalogue admits the selected operation; remaining quota is unknown"
    ],
    "remainingCapacity": "Unknown. Read current health and catalogue for availability; no remaining-capacity snapshot is asserted.",
    "staticReferenceScope": "The 170-operation reference catalogue, old OpenAPI, schemas and tool pages remain historical release definitions, including unavailable legacy MPP paths. Only the three explicit conditional x402 endpoints below are offered.",
    "paymentAuthorization": "A static notice or HTTP 402 challenge never authorizes a payment. Independently approve actual amount, asset, network, destination and payer fees before any paid request.",
    "livePaymentsVerified": false,
    "operations": [
      {
        "id": "content-digest",
        "method": "POST",
        "url": "https://api.carloshbcabral.com/v1/x402/content-digest"
      },
      {
        "id": "timestamp-convert",
        "method": "POST",
        "url": "https://api.carloshbcabral.com/v1/x402/timestamp-convert"
      },
      {
        "id": "json-repair",
        "method": "POST",
        "url": "https://api.carloshbcabral.com/v1/x402/json-repair"
      }
    ],
    "noNewAllowanceResetOrRenewal": true,
    "maxEntitlementDeliveriesPerReservationIncludingInitial": 4,
    "ordinaryClientNonce": true,
    "json402VerifiedAt": "2026-10-06T23:00:00.088Z",
    "catalogueVerifiedAt": "2026-10-06T23:00:00.301Z",
    "recovery": "At most four entitlement deliveries per reservation, including the initial delivery. Preserve the original credential, exact canonical input and resource, and the optional Idempotency-Key unchanged (including its original absence). Recovery, backpressure or uncertain errors never authorize automatically buying a fresh quote or paying again.",
    "jsonRepairRecovery": "Raw JSON repair input and result are not retained in the ledger. Recovery requires the original input and hash-bound recomputation against the original reservation; the hashes are not a retrievable copy of the text. At most four entitlement deliveries per reservation, including the initial delivery. Preserve the original credential, exact canonical input and resource, and the optional Idempotency-Key unchanged (including its original absence). Recovery, backpressure or uncertain errors never authorize automatically buying a fresh quote or paying again.",
    "priorTwoTool402VerifiedAt": "2026-10-06T18:38:40.692Z",
    "receiptScope": {
      "json402VerifiedAt": "2026-10-06T23:00:00.088Z",
      "catalogueVerifiedAt": "2026-10-06T23:00:00.301Z",
      "saleOrSettlementVerified": false
    }
  },
  "supportedProtocolsScope": "Per-operation supportedProtocols are preserved release definitions, not live protocols. Consult pilotAvailability; live pilot is x402 v2 only and MPP is unavailable."
}
