{"name":"ToolCabana","version":"1.0.0","total":136,"implemented":136,"optionalNetwork":0,"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000},"availability":{"browser":true,"local":true,"hosted":false},"interfaces":{"browser":"/agents","openapi":"/agents/openapi.json","catalog":"/agents/catalog.json","markdown":"/agents/docs.md","local":"npm run agent:stdio --silent"},"privacy":{"inputLogging":false,"retention":"No inputs retained by stateless tools; network destinations observe requests."},"advertising":{"enabled":false,"botImpressions":false},"tools":[{"id":"json.parse","name":"Parse and validate JSON","description":"Parse bounded JSON without silently rounding unsafe integers or high-precision decimal literals. Quote exact numeric identifiers or decimals as strings.","contract":"JSON text → parsed value and parse diagnostics","category":"Structured data","requirements":"Bound bytes, nesting, row count and schema compilation; report loss and numeric precision.","proposedRuntime":"node","existingTools":["json-validator"],"pilot":true,"effort":"S","nameMCP":"json__parse","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"text":{"type":"string","maxLength":200000}},"required":["text"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"value":{"$ref":"#/$defs/json"}},"required":["value"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"json.parse"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"text":"{\"ok\":true}"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"json.schema","name":"Validate JSON against a schema","description":"Reject malformed arguments or deliverables before downstream use.","contract":"value + schema → valid, errors and JSON pointers","category":"Structured data","requirements":"Bound bytes, nesting, row count and schema compilation; report loss and numeric precision.","proposedRuntime":"node","existingTools":["json-schema"],"pilot":true,"effort":"M","nameMCP":"json__schema","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"value":{},"schema":{"type":"object","maxProperties":2000}},"required":["value","schema"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"valid":{"type":"boolean"},"errors":{"type":"array","items":{"type":"object","properties":{"instancePath":{"type":"string","maxLength":200000},"schemaPath":{"type":"string","maxLength":200000},"keyword":{"type":"string","maxLength":200000},"params":{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}},"message":{"type":"string","maxLength":200000}},"required":["instancePath","schemaPath","keyword","params"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"profile":{"type":"string","maxLength":200000}},"required":["valid","errors","profile"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"json.schema"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"value":{"age":2},"schema":{"type":"object","properties":{"age":{"type":"integer"}},"required":["age"]}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"json.convert","name":"Convert JSON, CSV, YAML and XML","description":"Convert bounded JSON, CSV, YAML or XML to JSON, CSV or YAML. JSON and YAML inputs reject numeric precision loss; output reports format and spreadsheet-safety warnings.","contract":"source + formats → converted data and loss warnings","category":"Structured data","requirements":"Bound bytes, nesting, row count and schema compilation; report loss and numeric precision.","proposedRuntime":"node","existingTools":["json-to-csv","csv-to-json","json-to-yaml","yaml-to-json","xml-to-json"],"pilot":true,"effort":"M","nameMCP":"json__convert","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"text":{"type":"string","maxLength":200000},"from":{"type":"string","enum":["json","csv","yaml","xml"]},"to":{"type":"string","enum":["json","csv","yaml"]}},"required":["text","from","to"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"text":{"type":"string","maxLength":200000},"value":{"$ref":"#/$defs/json"},"warnings":{"type":"array","items":{"type":"string","maxLength":200000},"maxItems":2000}},"required":["text","value","warnings"],"additionalProperties":false,"maxProperties":2000},{"type":"object","properties":{"text":{"type":"string","maxLength":200000},"warnings":{"type":"array","items":{"type":"string","maxLength":200000},"maxItems":2000}},"required":["text","warnings"],"additionalProperties":false,"maxProperties":2000}]},"metadata":{"type":"object","properties":{"tool":{"const":"json.convert"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"text":"a,b\n1,2","from":"csv","to":"json"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"json.diff","name":"Compare JSON values","description":"Inspect changes to configurations or model outputs.","contract":"before + after → structural change list","category":"Structured data","requirements":"Bound bytes, nesting, row count and schema compilation; report loss and numeric precision.","proposedRuntime":"node","existingTools":["json-diff"],"pilot":true,"effort":"M","nameMCP":"json__diff","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"before":{},"after":{}},"required":["before","after"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"changes":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"kind":{"const":"add"},"after":{"$ref":"#/$defs/json"}},"required":["path","kind","after"],"additionalProperties":false,"maxProperties":2000},{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"kind":{"const":"remove"},"before":{"$ref":"#/$defs/json"}},"required":["path","kind","before"],"additionalProperties":false,"maxProperties":2000},{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"kind":{"const":"replace"},"before":{"$ref":"#/$defs/json"},"after":{"$ref":"#/$defs/json"}},"required":["path","kind","before","after"],"additionalProperties":false,"maxProperties":2000}]},"maxItems":2000}},"required":["changes"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"json.diff"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"before":{"a":1},"after":{"a":2}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"json.query","name":"Query JSON with JSONPath","description":"Read own object properties and array indices using bounded structural paths. Filters, expressions and inherited properties are unsupported.","contract":"document + path → selected values","category":"Structured data","requirements":"Bound bytes, nesting, row count and schema compilation; report loss and numeric precision.","proposedRuntime":"node","existingTools":["jsonpath-explorer"],"pilot":false,"effort":"M","nameMCP":"json__query","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"value":{},"path":{"type":"string","maxLength":500}},"required":["value","path"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"found":{"const":false},"value":{"const":null}},"required":["found","value"],"additionalProperties":false,"maxProperties":2000},{"type":"object","properties":{"found":{"const":true},"value":{"$ref":"#/$defs/json"}},"required":["found","value"],"additionalProperties":false,"maxProperties":2000}]},"metadata":{"type":"object","properties":{"tool":{"const":"json.query"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"value":{"items":[{"name":"A"}]},"path":"$.items[0].name"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"json.repair","name":"Repair malformed JSON with an edit log","description":"Conservatively remove trailing commas outside JSON strings. Preserve string contents, reject numeric precision loss and return the candidate for review.","contract":"broken JSON → candidate, exact edits and uncertainty","category":"Structured data","requirements":"Bound bytes, nesting, row count and schema compilation; report loss and numeric precision.","proposedRuntime":"node","existingTools":[],"pilot":false,"effort":"M","nameMCP":"json__repair","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"text":{"type":"string","maxLength":200000}},"required":["text"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"value":{"$ref":"#/$defs/json"},"edits":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"kind":{"const":"add"},"after":{"$ref":"#/$defs/json"}},"required":["path","kind","after"],"additionalProperties":false,"maxProperties":2000},{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"kind":{"const":"remove"},"before":{"$ref":"#/$defs/json"}},"required":["path","kind","before"],"additionalProperties":false,"maxProperties":2000},{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"kind":{"const":"replace"},"before":{"$ref":"#/$defs/json"},"after":{"$ref":"#/$defs/json"}},"required":["path","kind","before","after"],"additionalProperties":false,"maxProperties":2000}]},"maxItems":2000},"uncertain":{"const":false}},"required":["value","edits","uncertain"],"additionalProperties":false,"maxProperties":2000},{"type":"object","properties":{"value":{"$ref":"#/$defs/json"},"candidate":{"type":"string","maxLength":200000},"edits":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"kind":{"const":"add"},"after":{"$ref":"#/$defs/json"}},"required":["path","kind","after"],"additionalProperties":false,"maxProperties":2000},{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"kind":{"const":"remove"},"before":{"$ref":"#/$defs/json"}},"required":["path","kind","before"],"additionalProperties":false,"maxProperties":2000},{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"kind":{"const":"replace"},"before":{"$ref":"#/$defs/json"},"after":{"$ref":"#/$defs/json"}},"required":["path","kind","before","after"],"additionalProperties":false,"maxProperties":2000}]},"maxItems":2000},"uncertain":{"const":true},"warning":{"type":"string","maxLength":200000}},"required":["value","candidate","edits","uncertain","warning"],"additionalProperties":false,"maxProperties":2000}]},"metadata":{"type":"object","properties":{"tool":{"const":"json.repair"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"text":"{\"a\":1,}"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"json.types","name":"Generate types from sample JSON","description":"Infer a TypeScript declaration from one JSON sample. Empty arrays use unknown[]; unseen types and optional fields cannot be inferred.","contract":"sample + target → TypeScript or Dart declarations","category":"Structured data","requirements":"Bound bytes, nesting, row count and schema compilation; report loss and numeric precision.","proposedRuntime":"node","existingTools":["json-to-typescript","json-to-dart"],"pilot":false,"effort":"M","nameMCP":"json__types","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"value":{},"name":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,40}$"}},"required":["value"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"declaration":{"type":"string","maxLength":200000},"warning":{"type":"string","maxLength":200000}},"required":["declaration","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"json.types"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"value":{"name":"A","count":2}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"data.profile","name":"Profile CSV data","description":"Understand a dataset before transforming it.","contract":"CSV → inferred types, nulls and distribution summaries","category":"Structured data","requirements":"Bound bytes, nesting, row count and schema compilation; report loss and numeric precision.","proposedRuntime":"node","existingTools":["csv-data-profiler"],"pilot":true,"effort":"M","nameMCP":"data__profile","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"rows":{"type":"array","maxItems":2000,"items":{"type":"object","maxProperties":2000}}},"required":["rows"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"rows":{"type":"integer","minimum":0,"maximum":9007199254740991},"columns":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","maxLength":200000},"missing":{"type":"integer","minimum":0,"maximum":9007199254740991},"distinct":{"type":"integer","minimum":0,"maximum":9007199254740991},"types":{"type":"array","items":{"type":"string","enum":["string","number","boolean","object"]},"maxItems":2000},"formulaCells":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["key","missing","distinct","types","formulaCells"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000}},"required":["rows","columns"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"data.profile"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"rows":[{"age":2},{"age":null}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"data.join","name":"Join tabular datasets","description":"Combine records across two exports with explicit keys.","contract":"tables + keys + join type → rows and unmatched counts","category":"Structured data","requirements":"Bound bytes, nesting, row count and schema compilation; report loss and numeric precision.","proposedRuntime":"node","existingTools":["csv-join-tool"],"pilot":true,"effort":"M","nameMCP":"data__join","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"left":{"type":"array","maxItems":2000,"items":{"type":"object","maxProperties":2000}},"right":{"type":"array","maxItems":2000,"items":{"type":"object","maxProperties":2000}},"leftKey":{"type":"string","maxLength":200000},"rightKey":{"type":"string","maxLength":200000},"type":{"type":"string","enum":["inner","left"]}},"required":["left","right","leftKey","rightKey"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"rows":{"type":"array","items":{"type":"object","properties":{"left":{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}},"right":{"anyOf":[{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}},{"type":"null"}]}},"required":["left","right"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"unmatchedLeft":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["rows","unmatchedLeft"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"data.join"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"left":[{"id":1}],"right":[{"id":1,"b":2}],"leftKey":"id","rightKey":"id"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"data.pivot","name":"Build a pivot table","description":"Produce an auditable aggregation from raw rows.","contract":"CSV + groups + measures → pivot and counts","category":"Structured data","requirements":"Bound bytes, nesting, row count and schema compilation; report loss and numeric precision.","proposedRuntime":"node","existingTools":["csv-pivot-table-builder"],"pilot":false,"effort":"M","nameMCP":"data__pivot","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"rows":{"type":"array","maxItems":2000,"items":{"type":"object","maxProperties":2000}},"groupBy":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}},"valueKey":{"type":"string","maxLength":200000},"operation":{"type":"string","enum":["sum","count","mean"]}},"required":["rows","groupBy","operation"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"groups":{"type":"array","items":{"type":"object","properties":{"keys":{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},"count":{"type":"integer","minimum":0,"maximum":9007199254740991},"value":{"type":"number"}},"required":["keys","count","value"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000}},"required":["groups"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"data.pivot"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"rows":[{"kind":"A","value":2}],"groupBy":["kind"],"valueKey":"value","operation":"sum"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"text.normalize","name":"Normalize Unicode and whitespace","description":"Prepare consistent text for matching across sources.","contract":"text + normalization policy → normalized text and edits","category":"Text and context preparation","requirements":"Specify Unicode, locale and truncation behavior; preserve source offsets where possible.","proposedRuntime":"node","existingTools":[],"pilot":false,"effort":"S","nameMCP":"text__normalize","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"text":{"type":"string","maxLength":200000},"form":{"type":"string","enum":["NFC","NFD","NFKC","NFKD"]},"whitespace":{"type":"boolean"}},"required":["text"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"text":{"type":"string","maxLength":200000}},"required":["text"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"text.normalize"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"text":" café  "},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"text.diff","name":"Compare text","description":"Review an agent rewrite before accepting it.","contract":"before + after → additions, removals and stable offsets","category":"Text and context preparation","requirements":"Specify Unicode, locale and truncation behavior; preserve source offsets where possible.","proposedRuntime":"node","existingTools":["text-diff"],"pilot":true,"effort":"S","nameMCP":"text__diff","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"before":{"type":"string","maxLength":10000},"after":{"type":"string","maxLength":10000}},"required":["before","after"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"changes":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","minimum":0,"maximum":9007199254740991},"value":{"type":"string","maxLength":200000},"added":{"type":"boolean"},"removed":{"type":"boolean"}},"required":["count","value"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000}},"required":["changes"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"text.diff"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"before":"one two","after":"one three"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"text.deduplicate","name":"Deduplicate lines","description":"Clean repeated logs or retrieved snippets.","contract":"lines + case policy → unique lines and counts","category":"Text and context preparation","requirements":"Specify Unicode, locale and truncation behavior; preserve source offsets where possible.","proposedRuntime":"node","existingTools":["deduplicate-lines"],"pilot":true,"effort":"S","nameMCP":"text__deduplicate","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"text":{"type":"string","maxLength":200000},"ignoreCase":{"type":"boolean"}},"required":["text"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"text":{"type":"string","maxLength":200000},"removed":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["text","removed"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"text.deduplicate"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"text":"A\nA\nB"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"text.slug","name":"Generate a URL slug","description":"Produce a stable slug for a page or record.","contract":"text + locale rules → slug","category":"Text and context preparation","requirements":"Specify Unicode, locale and truncation behavior; preserve source offsets where possible.","proposedRuntime":"node","existingTools":["slug-generator"],"pilot":true,"effort":"S","nameMCP":"text__slug","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"text":{"type":"string","maxLength":200000}},"required":["text"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"slug":{"type":"string","maxLength":200000}},"required":["slug"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"text.slug"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"text":"Hello World!"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"text.urls","name":"Extract URLs","description":"Collect referenced destinations for verification.","contract":"text → URLs and source positions","category":"Text and context preparation","requirements":"Specify Unicode, locale and truncation behavior; preserve source offsets where possible.","proposedRuntime":"node","existingTools":["extract-urls"],"pilot":false,"effort":"S","nameMCP":"text__urls","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"text":{"type":"string","maxLength":200000}},"required":["text"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"urls":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","maxLength":200000},"start":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["url","start"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000}},"required":["urls"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"text.urls"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"text":"Read https://example.com."},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"text.html","name":"Convert HTML to plain text","description":"Read content without scripts or presentation markup.","contract":"HTML → plain text and truncation warnings","category":"Text and context preparation","requirements":"Specify Unicode, locale and truncation behavior; preserve source offsets where possible.","proposedRuntime":"node","existingTools":["html-to-text"],"pilot":false,"effort":"M","nameMCP":"text__html","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"html":{"type":"string","maxLength":200000}},"required":["html"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"text":{"type":"string","maxLength":200000},"warning":{"type":"string","maxLength":200000}},"required":["text","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"text.html"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"html":"<p>Hello</p><script>bad()</script>"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"text.markdown","name":"Convert Markdown to sanitized HTML","description":"Prepare a report for safe display.","contract":"Markdown → sanitized HTML","category":"Text and context preparation","requirements":"Specify Unicode, locale and truncation behavior; preserve source offsets where possible.","proposedRuntime":"node","existingTools":["markdown-to-html"],"pilot":false,"effort":"M","nameMCP":"text__markdown","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"text":{"type":"string","maxLength":200000}},"required":["text"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"html":{"type":"string","maxLength":200000},"removedUnsafeLinks":{"type":"integer","minimum":0,"maximum":9007199254740991},"warning":{"type":"string","maxLength":200000}},"required":["html","removedUnsafeLinks","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"text.markdown"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"text":"# Title\n\nHello"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"tokens.count","name":"Count tokens with a named tokenizer","description":"Prevent avoidable context overflow.","contract":"text + tokenizer → token count and assumptions","category":"Text and context preparation","requirements":"Specify Unicode, locale and truncation behavior; preserve source offsets where possible.","proposedRuntime":"node","existingTools":["token-counter"],"pilot":true,"effort":"S","nameMCP":"tokens__count","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"text":{"type":"string","maxLength":200000},"encoding":{"type":"string","enum":["o200k_base","cl100k_base"]}},"required":["text"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"tokens":{"type":"integer","minimum":0,"maximum":9007199254740991},"encoding":{"type":"string","enum":["o200k_base","cl100k_base"]}},"required":["tokens","encoding"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"tokens.count"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"text":"Hello world"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"tokens.cost","name":"Estimate inference cost","description":"Compare a planned batch against a supplied price sheet.","contract":"token quantities + prices → estimated cost breakdown","category":"Text and context preparation","requirements":"Specify Unicode, locale and truncation behavior; preserve source offsets where possible.","proposedRuntime":"node","existingTools":["llm-cost"],"pilot":true,"effort":"S","nameMCP":"tokens__cost","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"inputTokens":{"type":"number","minimum":0},"outputTokens":{"type":"number","minimum":0},"inputPerMillion":{"type":"number","minimum":0},"outputPerMillion":{"type":"number","minimum":0},"currency":{"type":"string","maxLength":200000}},"required":["inputTokens","outputTokens","inputPerMillion","outputPerMillion"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"input":{"type":"number","minimum":0},"output":{"type":"number","minimum":0},"total":{"type":"number","minimum":0},"currency":{"type":"string","maxLength":200000},"source":{"type":"string","maxLength":200000}},"required":["input","output","total","currency","source"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"tokens.cost"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"inputTokens":1000,"outputTokens":100,"inputPerMillion":1,"outputPerMillion":2},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"context.pack","name":"Pack context within a token budget","description":"Pack exact JSONL within the chosen token budget, 200,000 serialized UTF-16 units and a complete 512 KiB UTF-8 result. Frames, escaping, IDs and annotations count toward mechanical caps; oversized items are omitted. Shorten or split omitted text/IDs. Inject serialized; reserve prompt/schema overhead separately.","contract":"items + priorities + budget → packed context and omissions","category":"Text and context preparation","requirements":"Specify Unicode, locale and truncation behavior; preserve source offsets where possible.","proposedRuntime":"node","existingTools":[],"pilot":true,"effort":"M","nameMCP":"context__pack","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"items":{"type":"array","maxItems":2000,"items":{"type":"object","properties":{"id":{"type":"string","maxLength":200000},"text":{"type":"string","maxLength":200000},"priority":{"type":"number"}},"required":["id","text"],"additionalProperties":false}},"budget":{"type":"integer","minimum":1,"maximum":50000},"encoding":{"type":"string","enum":["o200k_base","cl100k_base"]}},"required":["items","budget"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":200000},"text":{"type":"string","maxLength":200000},"priority":{"type":"number"},"tokens":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","text","tokens"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"serialized":{"type":"string","maxLength":200000},"omitted":{"type":"array","items":{"type":"string","maxLength":200000},"maxItems":2000},"tokens":{"type":"integer","minimum":0,"maximum":9007199254740991},"reserved":{"const":0},"warning":{"type":"string","maxLength":200000}},"required":["items","serialized","omitted","tokens","reserved","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"context.pack"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"items":[{"id":"source1","text":"Evidence","priority":1}],"budget":100},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"document.citations","name":"Format supplied document citations","description":"Create citation IDs from caller-supplied page, text and coordinate records; does not extract or verify document evidence.","contract":"text spans + page map → citation objects with coordinates","category":"Documents and extraction","requirements":"Use tenant-scoped file handles, temporary storage and parser isolation; extraction is not evidence of truth.","proposedRuntime":"worker","existingTools":[],"pilot":false,"effort":"L","nameMCP":"document__citations","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"spans":{"type":"array","maxItems":2000,"items":{"type":"object","maxProperties":2000}}},"required":["spans"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"citations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":200000},"page":{"type":"integer","minimum":1},"text":{"type":"string","maxLength":200000},"box":{"anyOf":[{"type":"array","items":{"type":"number"},"minItems":4,"maxItems":4},{"type":"null"}]}},"required":["id","page","text","box"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["citations","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"document.citations"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"spans":[{"page":1,"text":"Evidence","box":[0,0,20,10]}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"file.checksum","name":"Hash UTF-8 text","description":"Compute a SHA-256/384/512 digest of supplied UTF-8 text. Binary files use the existing browser file utility.","contract":"file handle + algorithm → digest","category":"Images, archives and files","requirements":"Enforce decompression, pixel and output limits; reject traversal, links and active payloads.","proposedRuntime":"worker","existingTools":["file-checksum"],"pilot":false,"effort":"S","nameMCP":"file__checksum","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"text":{"type":"string","maxLength":200000},"algorithm":{"type":"string","enum":["SHA-256","SHA-384","SHA-512"]}},"required":["text"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"digest":{"type":"string","pattern":"^[a-f0-9]{64}(?:[a-f0-9]{32})?(?:[a-f0-9]{32})?$"},"algorithm":{"type":"string","enum":["SHA-256","SHA-384","SHA-512"]},"encoding":{"type":"string","maxLength":200000}},"required":["digest","algorithm","encoding"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"file.checksum"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"text":"hello"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"file.encoding","name":"Decode bounded text bytes","description":"Decode supplied base64 bytes using a selected text encoding; return UTF-8 text with strict decoding errors.","contract":"text file + encodings → converted file and replacement count","category":"Images, archives and files","requirements":"Enforce decompression, pixel and output limits; reject traversal, links and active payloads.","proposedRuntime":"worker","existingTools":["text-file-encoding-converter"],"pilot":false,"effort":"M","nameMCP":"file__encoding","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"base64":{"type":"string","maxLength":100000},"encoding":{"type":"string","enum":["utf-8","windows-1252","utf-16le","utf-16be"]}},"required":["base64","encoding"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"text":{"type":"string","maxLength":200000},"outputEncoding":{"const":"UTF-8"},"inputBytes":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["text","outputEncoding","inputBytes"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"file.encoding"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"base64":"aGVsbG8=","encoding":"utf-8"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"file.line_endings","name":"Convert line endings","description":"Prepare a file for a different platform.","contract":"text file + target → normalized file","category":"Images, archives and files","requirements":"Enforce decompression, pixel and output limits; reject traversal, links and active payloads.","proposedRuntime":"worker","existingTools":["file-line-ending-converter"],"pilot":false,"effort":"S","nameMCP":"file__line_endings","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"text":{"type":"string","maxLength":200000},"target":{"type":"string","enum":["lf","crlf"]}},"required":["text","target"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"text":{"type":"string","maxLength":200000}},"required":["text"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"file.line_endings"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"text":"a\r\nb","target":"lf"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"math.evaluate","name":"Evaluate a bounded mathematical expression","description":"Use calculation rather than generated arithmetic.","contract":"expression + supported variables → value and units","category":"Calculations and time","requirements":"Declare units, rounding, timezone and clock source; separate estimates from authoritative values.","proposedRuntime":"node","existingTools":["scientific-calculator"],"pilot":false,"effort":"M","nameMCP":"math__evaluate","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"expression":{"type":"string","maxLength":1000}},"required":["expression"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"value":{"type":"number"}},"required":["value"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"math.evaluate"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"expression":"(2 + 3) * 4"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"units.convert","name":"Convert physical units","description":"Prevent mixing incompatible measurement units.","contract":"value + source and target units → converted value","category":"Calculations and time","requirements":"Declare units, rounding, timezone and clock source; separate estimates from authoritative values.","proposedRuntime":"node","existingTools":["length-converter","weight-converter","temperature"],"pilot":false,"effort":"M","nameMCP":"units__convert","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"value":{"type":"number"},"from":{"type":"string","enum":["m","cm","mm","km","in","ft","kg","g","lb","celsius","fahrenheit","kelvin"]},"to":{"type":"string","enum":["m","cm","mm","km","in","ft","kg","g","lb","celsius","fahrenheit","kelvin"]}},"required":["value","from","to"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"value":{"type":"number"},"unit":{"type":"string","enum":["m","cm","mm","km","in","ft","kg","g","lb","celsius","fahrenheit","kelvin"]}},"required":["value","unit"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"units.convert"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"value":1,"from":"m","to":"cm"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"statistics.describe","name":"Compute descriptive statistics","description":"Summarize a dataset with explicit assumptions.","contract":"numeric values → count, mean, quantiles and dispersion","category":"Calculations and time","requirements":"Declare units, rounding, timezone and clock source; separate estimates from authoritative values.","proposedRuntime":"node","existingTools":["descriptive-statistics-calculator"],"pilot":false,"effort":"S","nameMCP":"statistics__describe","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"values":{"type":"array","maxItems":2000,"items":{"type":"number"},"minItems":1}},"required":["values"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"count":{"type":"integer","minimum":0,"maximum":9007199254740991},"min":{"type":"number"},"max":{"type":"number"},"mean":{"type":"number"},"median":{"type":"number"},"q1":{"type":"number"},"q3":{"type":"number"},"sampleVariance":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]}},"required":["count","min","max","mean","median","q1","q3","sampleVariance"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"statistics.describe"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"values":[1,2,3]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"statistics.interval","name":"Calculate a confidence interval","description":"Quantify uncertainty for a supported sampling model.","contract":"sample statistics + confidence → interval and assumptions","category":"Calculations and time","requirements":"Declare units, rounding, timezone and clock source; separate estimates from authoritative values.","proposedRuntime":"node","existingTools":["confidence-interval-calculator"],"pilot":false,"effort":"M","nameMCP":"statistics__interval","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"mean":{"type":"number"},"knownPopulationSD":{"type":"number","minimum":0},"count":{"type":"integer","minimum":1,"maximum":100000000},"confidence":{"type":"string","enum":["90","95","99"]}},"required":["mean","knownPopulationSD","count"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"lower":{"type":"number"},"upper":{"type":"number"},"assumptions":{"type":"string","maxLength":200000}},"required":["lower","upper","assumptions"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"statistics.interval"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"mean":10,"knownPopulationSD":2,"count":100,"confidence":"95"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"date.difference","name":"Calculate date differences","description":"Determine elapsed time using clear calendar semantics.","contract":"dates + unit → difference","category":"Calculations and time","requirements":"Declare units, rounding, timezone and clock source; separate estimates from authoritative values.","proposedRuntime":"node","existingTools":["date-difference"],"pilot":false,"effort":"S","nameMCP":"date__difference","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"start":{"type":"string","maxLength":200000},"end":{"type":"string","maxLength":200000}},"required":["start","end"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"milliseconds":{"type":"number"},"elapsedDays":{"type":"number"},"semantics":{"type":"string","maxLength":200000}},"required":["milliseconds","elapsedDays","semantics"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"date.difference"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"start":"2026-01-01T00:00:00Z","end":"2026-01-02T00:00:00Z"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"date.business_days","name":"Calculate business days","description":"Estimate scheduling intervals with a named calendar.","contract":"range + calendar → business-day count and excluded dates","category":"Calculations and time","requirements":"Declare units, rounding, timezone and clock source; separate estimates from authoritative values.","proposedRuntime":"node","existingTools":["business-days"],"pilot":false,"effort":"M","nameMCP":"date__business_days","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"start":{"type":"string","maxLength":200000,"pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"end":{"type":"string","maxLength":200000,"pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"holidays":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000,"pattern":"^\\d{4}-\\d{2}-\\d{2}$"}}},"required":["start","end"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"days":{"type":"integer","minimum":0,"maximum":9007199254740991},"excluded":{"type":"array","items":{"type":"string","maxLength":200000},"maxItems":2000},"calendar":{"type":"string","maxLength":200000}},"required":["days","excluded","calendar"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"date.business_days"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"start":"2026-01-01","end":"2026-01-05","holidays":["2026-01-01"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"date.timezone","name":"Convert timezones","description":"Prevent an agent from scheduling at the wrong local time.","contract":"timestamp + IANA zones → local times and offsets","category":"Calculations and time","requirements":"Declare units, rounding, timezone and clock source; separate estimates from authoritative values.","proposedRuntime":"node","existingTools":["time-zone"],"pilot":true,"effort":"M","nameMCP":"date__timezone","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"timestamp":{"type":"string","maxLength":200000},"zones":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}}},"required":["timestamp","zones"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"instant":{"type":"string","maxLength":200000},"zones":{"type":"array","items":{"type":"object","properties":{"zone":{"type":"string","maxLength":200000},"local":{"type":"string","maxLength":200000}},"required":["zone","local"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000}},"required":["instant","zones"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"date.timezone"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"timestamp":"2026-01-01T00:00:00Z","zones":["America/Bogota","UTC"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"date.cron","name":"Explain a cron schedule","description":"Check the next occurrences before creating automation.","contract":"cron + zone + start → next times and explanation","category":"Calculations and time","requirements":"Declare units, rounding, timezone and clock source; separate estimates from authoritative values.","proposedRuntime":"node","existingTools":["cron-helper"],"pilot":false,"effort":"M","nameMCP":"date__cron","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"expression":{"type":"string","maxLength":200},"zone":{"type":"string","maxLength":200000},"start":{"type":"string","maxLength":200000},"count":{"type":"integer","minimum":1,"maximum":20}},"required":["expression","zone","start"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"next":{"type":"array","items":{"type":"string","maxLength":200000},"maxItems":20},"zone":{"type":"string","maxLength":200000}},"required":["next","zone"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"date.cron"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"expression":"0 9 * * 1-5","zone":"UTC","start":"2026-01-01T00:00:00Z","count":3},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"date.deadline","name":"Calculate an agent deadline budget","description":"Bound a multi-step run by a trusted clock.","contract":"deadline + reserved duration → remaining time and cutoff","category":"Calculations and time","requirements":"Declare units, rounding, timezone and clock source; separate estimates from authoritative values.","proposedRuntime":"node","existingTools":[],"pilot":false,"effort":"S","nameMCP":"date__deadline","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"deadline":{"type":"string","maxLength":200000},"reserveMs":{"type":"integer","minimum":0,"maximum":86400000}},"required":["deadline"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"now":{"type":"string","maxLength":200000},"cutoff":{"type":"string","maxLength":200000},"remainingMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"expired":{"type":"boolean"}},"required":["now","cutoff","remainingMs","expired"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"date.deadline"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"deadline":"2099-01-01T00:00:00Z","reserveMs":1000},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"math.verify","name":"Verify arithmetic claims","description":"Check supplied totals and formulas independently.","contract":"claims + numeric evidence → recomputation and mismatches","category":"Calculations and time","requirements":"Declare units, rounding, timezone and clock source; separate estimates from authoritative values.","proposedRuntime":"node","existingTools":[],"pilot":false,"effort":"M","nameMCP":"math__verify","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"claims":{"type":"array","maxItems":2000,"items":{"type":"object","properties":{"terms":{"type":"array","maxItems":2000,"items":{"type":"number"},"minItems":1},"total":{"type":"number"},"tolerance":{"type":"number","minimum":0}},"required":["terms","total"],"additionalProperties":false}}},"required":["claims"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"claims":{"type":"array","items":{"type":"object","properties":{"calculated":{"type":"number"},"total":{"type":"number"},"valid":{"type":"boolean"}},"required":["calculated","total","valid"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000}},"required":["claims"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"math.verify"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"claims":[{"terms":[1,2],"total":3}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"privacy.detect","name":"Detect supported sensitive-data patterns","description":"Find known PII patterns before a model call.","contract":"text + pattern policy → typed spans and coverage notice","category":"Privacy and data guardrails","requirements":"Rule coverage is explicit; model scores are uncertain. Never log submitted secrets or retain reidentification maps by default.","proposedRuntime":"node","existingTools":["pii-redactor"],"pilot":true,"effort":"M","nameMCP":"privacy__detect","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"text":{"type":"string","maxLength":200000},"custom":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}}},"required":["text"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"spans":{"type":"array","items":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":9007199254740991},"end":{"type":"integer","minimum":0,"maximum":9007199254740991},"type":{"type":"string","maxLength":200000}},"required":["start","end","type"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"coverage":{"type":"array","items":{"type":"string","maxLength":200000},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["spans","coverage","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"privacy.detect"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"text":"Email a@example.com"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"privacy.redact","name":"Redact supported sensitive text","description":"Prepare a safer prompt or exported log.","contract":"text + categories → redacted text and edit counts","category":"Privacy and data guardrails","requirements":"Rule coverage is explicit; model scores are uncertain. Never log submitted secrets or retain reidentification maps by default.","proposedRuntime":"node","existingTools":["prompt-redactor"],"pilot":true,"effort":"M","nameMCP":"privacy__redact","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"text":{"type":"string","maxLength":200000},"custom":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}}},"required":["text"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"text":{"type":"string","maxLength":200000},"spans":{"type":"array","items":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":9007199254740991},"end":{"type":"integer","minimum":0,"maximum":9007199254740991},"type":{"type":"string","maxLength":200000}},"required":["start","end","type"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["text","spans","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"privacy.redact"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"text":"Email a@example.com"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"privacy.mask","name":"Mask structured sensitive values","description":"Share a dataset while preserving useful record shape.","contract":"data + field rules → masked fields and changes","category":"Privacy and data guardrails","requirements":"Rule coverage is explicit; model scores are uncertain. Never log submitted secrets or retain reidentification maps by default.","proposedRuntime":"node","existingTools":["sensitive-data-masking-tool"],"pilot":false,"effort":"M","nameMCP":"privacy__mask","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"value":{"type":"object","maxProperties":2000},"fields":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}},"replacement":{"type":"string","maxLength":200000}},"required":["value","fields"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"value":{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}},"changed":{"type":"array","items":{"type":"string","maxLength":200000},"maxItems":2000}},"required":["value","changed"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"privacy.mask"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"value":{"email":"a@example.com"},"fields":["email"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"privacy.transcript","name":"Redact timestamped transcripts","description":"Remove sensitive terms while preserving subtitle timings.","contract":"transcript + policy → redacted cues","category":"Privacy and data guardrails","requirements":"Rule coverage is explicit; model scores are uncertain. Never log submitted secrets or retain reidentification maps by default.","proposedRuntime":"node","existingTools":["transcript-redactor"],"pilot":false,"effort":"M","nameMCP":"privacy__transcript","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"text":{"type":"string","maxLength":200000},"custom":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}}},"required":["text"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"text":{"type":"string","maxLength":200000},"warning":{"type":"string","maxLength":200000}},"required":["text","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"privacy.transcript"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"text":"1\n00:00:01,000 --> 00:00:02,000\na@example.com"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"privacy.secrets","name":"Scan for credential patterns","description":"Block accidental transmission of known key formats.","contract":"text or file + detector set → redacted findings and locations","category":"Privacy and data guardrails","requirements":"Rule coverage is explicit; model scores are uncertain. Never log submitted secrets or retain reidentification maps by default.","proposedRuntime":"node","existingTools":[],"pilot":true,"effort":"M","nameMCP":"privacy__secrets","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"text":{"type":"string","maxLength":200000}},"required":["text"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"text":{"type":"string","maxLength":200000},"findings":{"type":"array","items":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":9007199254740991},"end":{"type":"integer","minimum":0,"maximum":9007199254740991},"type":{"type":"string","maxLength":200000}},"required":["start","end","type"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["text","findings","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"privacy.secrets"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"text":"password=abcdefghijk"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"privacy.log_clean","name":"Sanitize an agent log","description":"Remove terminal/control formatting before scanning recognizable credentials and personal data. Rule-based redaction can miss unfamiliar formats; inspect cleaned logs before sharing.","contract":"log + rules → sanitized log and removal summary","category":"Privacy and data guardrails","requirements":"Rule coverage is explicit; model scores are uncertain. Never log submitted secrets or retain reidentification maps by default.","proposedRuntime":"node","existingTools":[],"pilot":true,"effort":"M","nameMCP":"privacy__log_clean","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"text":{"type":"string","maxLength":200000}},"required":["text"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"text":{"type":"string","maxLength":200000},"secretFindings":{"type":"integer","minimum":0,"maximum":9007199254740991},"piiFindings":{"type":"integer","minimum":0,"maximum":9007199254740991},"warning":{"type":"string","maxLength":200000}},"required":["text","secretFindings","piiFindings","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"privacy.log_clean"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"text":"password=abcdefghijk\u001b[31m"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"privacy.pseudonyms","name":"Create dataset-scoped pseudonyms","description":"Hash selected fields with a caller-provided confidential salt. This is pseudonymization, not anonymization or a server-issued tenant identity.","contract":"records + field policy → pseudonymized records","category":"Privacy and data guardrails","requirements":"Rule coverage is explicit; model scores are uncertain. Never log submitted secrets or retain reidentification maps by default.","proposedRuntime":"node","existingTools":[],"pilot":false,"effort":"L","nameMCP":"privacy__pseudonyms","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"records":{"type":"array","maxItems":2000,"items":{"type":"object","maxProperties":2000}},"fields":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}},"salt":{"type":"string","maxLength":200000,"minLength":16}},"required":["records","fields","salt"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"records":{"type":"array","items":{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["records","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"privacy.pseudonyms"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"records":[{"email":"a@example.com"}],"fields":["email"],"salt":"synthetic-dataset-salt"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"privacy.egress","name":"Evaluate a proposed data transfer","description":"Check whether selected fields may leave a trust boundary.","contract":"destination + field labels + policy → allow, deny or review","category":"Privacy and data guardrails","requirements":"Rule coverage is explicit; model scores are uncertain. Never log submitted secrets or retain reidentification maps by default.","proposedRuntime":"node","existingTools":[],"pilot":false,"effort":"L","nameMCP":"privacy__egress","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"destination":{"type":"string","maxLength":200000},"labels":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}},"allowedDomains":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}},"forbiddenLabels":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}}},"required":["destination","labels","allowedDomains","forbiddenLabels"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"verdict":{"type":"string","enum":["allow","deny"]},"blocked":{"type":"array","items":{"type":"string","maxLength":200000},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["verdict","blocked","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"privacy.egress"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"destination":"https://example.com","labels":["public"],"allowedDomains":["example.com"],"forbiddenLabels":["secret"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"privacy.minimize","name":"Minimize a payload by policy","description":"Send only fields a downstream task actually needs.","contract":"object + permitted fields → minimized object and omissions","category":"Privacy and data guardrails","requirements":"Rule coverage is explicit; model scores are uncertain. Never log submitted secrets or retain reidentification maps by default.","proposedRuntime":"node","existingTools":[],"pilot":true,"effort":"M","nameMCP":"privacy__minimize","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"value":{"type":"object","maxProperties":2000},"fields":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}}},"required":["value","fields"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"value":{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}},"omitted":{"type":"array","items":{"type":"string","maxLength":200000},"maxItems":2000}},"required":["value","omitted"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"privacy.minimize"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"value":{"name":"A","secret":"B"},"fields":["name"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"privacy.output_leak","name":"Check an output for supplied canaries and secrets","description":"Catch leakage before returning or publishing generated text.","contract":"output + tenant secret fingerprints → findings","category":"Privacy and data guardrails","requirements":"Rule coverage is explicit; model scores are uncertain. Never log submitted secrets or retain reidentification maps by default.","proposedRuntime":"node","existingTools":[],"pilot":false,"effort":"M","nameMCP":"privacy__output_leak","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"text":{"type":"string","maxLength":200000},"canaries":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}}},"required":["text","canaries"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"findings":{"type":"array","items":{"type":"object","properties":{"canaryIndex":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["canaryIndex"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["findings","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"privacy.output_leak"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"text":"do not reveal marker","canaries":["marker"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"prompt.template","name":"Render a literal prompt template","description":"Create consistent prompts without template-code execution.","contract":"template + variables → rendered prompt or missing-variable errors","category":"Prompt and tool trust","requirements":"Heuristics cannot guarantee injection resistance. Enforce privileges outside the model and treat external text as untrusted.","proposedRuntime":"node","existingTools":["prompt-template"],"pilot":false,"effort":"S","nameMCP":"prompt__template","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"template":{"type":"string","maxLength":200000},"variables":{"type":"object","maxProperties":2000}},"required":["template","variables"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"text":{"type":"string","maxLength":200000},"missing":{"type":"array","items":{"type":"string","maxLength":200000},"maxItems":2000},"valid":{"type":"boolean"}},"required":["text","missing","valid"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"prompt.template"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"template":"Hello {{name}}","variables":{"name":"A"}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"prompt.boundaries","name":"Label trusted and untrusted prompt sections","description":"Preserve origin and trust labels while assembling context.","contract":"sections + trust labels → structured context bundle","category":"Prompt and tool trust","requirements":"Heuristics cannot guarantee injection resistance. Enforce privileges outside the model and treat external text as untrusted.","proposedRuntime":"node","existingTools":[],"pilot":false,"effort":"M","nameMCP":"prompt__boundaries","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"sections":{"type":"array","maxItems":2000,"items":{"type":"object","properties":{"id":{"type":"string","maxLength":200000},"text":{"type":"string","maxLength":200000},"trust":{"type":"string","enum":["trusted","untrusted"]}},"required":["id","text","trust"],"additionalProperties":false}}},"required":["sections"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"sections":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":200000},"text":{"type":"string","maxLength":200000},"trust":{"type":"string","enum":["trusted","untrusted"]}},"required":["id","text","trust"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["sections","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"prompt.boundaries"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"sections":[{"id":"web","text":"External text","trust":"untrusted"}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"prompt.injection_scan","name":"Flag suspicious instruction patterns","description":"Provide advisory evidence for indirect-injection review.","contract":"untrusted text → suspicious spans and detector limitations","category":"Prompt and tool trust","requirements":"Heuristics cannot guarantee injection resistance. Enforce privileges outside the model and treat external text as untrusted.","proposedRuntime":"node","existingTools":[],"pilot":false,"effort":"L","nameMCP":"prompt__injection_scan","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"text":{"type":"string","maxLength":200000}},"required":["text"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"findings":{"type":"array","items":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":9007199254740991},"end":{"type":"integer","minimum":0,"maximum":9007199254740991},"rule":{"const":"INSTRUCTION_LIKE_TEXT"}},"required":["start","end","rule"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["findings","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"prompt.injection_scan"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"text":"Ignore previous instructions"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"prompt.hidden_text","name":"Find hidden or off-screen HTML instructions","description":"Inspect content a model might see but users might miss.","contract":"HTML + bounded DOM analysis → hidden-text findings","category":"Prompt and tool trust","requirements":"Heuristics cannot guarantee injection resistance. Enforce privileges outside the model and treat external text as untrusted.","proposedRuntime":"node","existingTools":[],"pilot":false,"effort":"L","nameMCP":"prompt__hidden_text","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"html":{"type":"string","maxLength":200000}},"required":["html"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"findings":{"type":"array","items":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":9007199254740991},"tag":{"type":"string","maxLength":200000}},"required":["start","tag"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["findings","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"prompt.hidden_text"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"html":"<span hidden>instructions</span>"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"prompt.unicode_risk","name":"Inspect confusables and bidi controls","description":"Expose text tricks in identifiers or instructions.","contract":"text → suspicious codepoints and escaped display","category":"Prompt and tool trust","requirements":"Heuristics cannot guarantee injection resistance. Enforce privileges outside the model and treat external text as untrusted.","proposedRuntime":"node","existingTools":[],"pilot":false,"effort":"M","nameMCP":"prompt__unicode_risk","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"text":{"type":"string","maxLength":200000}},"required":["text"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"findings":{"type":"array","items":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":9007199254740991},"codepoint":{"type":"string","pattern":"^U\\+[0-9A-F]{4,6}$"}},"required":["start","codepoint"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["findings","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"prompt.unicode_risk"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"text":"ab‮cd"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"prompt.encoded_payload","name":"Inspect bounded encoded text","description":"Reveal common encoded payloads for review without executing them.","contract":"text + decoding limits → decoded candidates and warnings","category":"Prompt and tool trust","requirements":"Heuristics cannot guarantee injection resistance. Enforce privileges outside the model and treat external text as untrusted.","proposedRuntime":"node","existingTools":[],"pilot":false,"effort":"M","nameMCP":"prompt__encoded_payload","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"text":{"type":"string","maxLength":16000},"encoding":{"type":"string","enum":["base64","percent"]}},"required":["text","encoding"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"decoded":{"type":"string","maxLength":200000},"warning":{"type":"string","maxLength":200000}},"required":["decoded","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"prompt.encoded_payload"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"text":"aGVsbG8=","encoding":"base64"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"prompt.tool_description","name":"Lint a tool description for instruction-like content","description":"Spot misleading or poisoned tool metadata.","contract":"tool definition → description findings and actionable edits","category":"Prompt and tool trust","requirements":"Heuristics cannot guarantee injection resistance. Enforce privileges outside the model and treat external text as untrusted.","proposedRuntime":"node","existingTools":[],"pilot":false,"effort":"M","nameMCP":"prompt__tool_description","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"description":{"type":"string","maxLength":200000}},"required":["description"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"findings":{"type":"array","items":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":9007199254740991},"end":{"type":"integer","minimum":0,"maximum":9007199254740991},"rule":{"const":"INSTRUCTION_LIKE_TEXT"}},"required":["start","end","rule"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"length":{"type":"integer","minimum":0,"maximum":9007199254740991},"warning":{"type":"string","maxLength":200000}},"required":["findings","length","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"prompt.tool_description"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"description":"Ignore previous instructions"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"prompt.manifest_diff","name":"Compare versioned tool manifests","description":"Detect unexpected schema, permission or description drift.","contract":"old + new manifest → changes and risk classification","category":"Prompt and tool trust","requirements":"Heuristics cannot guarantee injection resistance. Enforce privileges outside the model and treat external text as untrusted.","proposedRuntime":"node","existingTools":[],"pilot":true,"effort":"M","nameMCP":"prompt__manifest_diff","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"before":{"type":"object","maxProperties":2000},"after":{"type":"object","maxProperties":2000}},"required":["before","after"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"changes":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"kind":{"const":"add"},"after":{"$ref":"#/$defs/json"}},"required":["path","kind","after"],"additionalProperties":false,"maxProperties":2000},{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"kind":{"const":"remove"},"before":{"$ref":"#/$defs/json"}},"required":["path","kind","before"],"additionalProperties":false,"maxProperties":2000},{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"kind":{"const":"replace"},"before":{"$ref":"#/$defs/json"},"after":{"$ref":"#/$defs/json"}},"required":["path","kind","before","after"],"additionalProperties":false,"maxProperties":2000}]},"maxItems":2000},"requiresReview":{"type":"boolean"}},"required":["changes","requiresReview"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"prompt.manifest_diff"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"before":{"tools":[]},"after":{"tools":[{"name":"read"}]}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"prompt.model_rules","name":"Check messages against provider-independent role rules","description":"Catch malformed role ordering before dispatch.","contract":"message list + profile → violations","category":"Prompt and tool trust","requirements":"Heuristics cannot guarantee injection resistance. Enforce privileges outside the model and treat external text as untrusted.","proposedRuntime":"node","existingTools":[],"pilot":false,"effort":"M","nameMCP":"prompt__model_rules","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"messages":{"type":"array","maxItems":2000,"items":{"type":"object","maxProperties":2000}}},"required":["messages"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"violations":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":0,"maximum":9007199254740991},"message":{"type":"string","maxLength":200000}},"required":["index","message"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"profile":{"type":"string","maxLength":200000}},"required":["violations","profile"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"prompt.model_rules"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"messages":[{"role":"user","content":"Hi"}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"prompt.attack_fixture","name":"Generate approved injection test fixtures","description":"Exercise an agent against explicit attack categories.","contract":"test categories + seed → synthetic payloads and expected boundaries","category":"Prompt and tool trust","requirements":"Heuristics cannot guarantee injection resistance. Enforce privileges outside the model and treat external text as untrusted.","proposedRuntime":"node","existingTools":[],"pilot":false,"effort":"M","nameMCP":"prompt__attack_fixture","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"categories":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}}},"required":["categories"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"synthetic":{"const":true},"fixtures":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string","enum":["override","exfiltration","role_spoof","hidden","encoded"]},"text":{"type":"string","maxLength":200000},"expected":{"type":"string","maxLength":200000}},"required":["category","text","expected"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000}},"required":["synthetic","fixtures"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"prompt.attack_fixture"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"categories":["override"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"policy.evaluate","name":"Preview a proposed policy decision","description":"Evaluate a caller-supplied tool/domain allowlist. Advisory only; this cannot grant a capability or override gateway authorization.","contract":"identity + action + trusted policy → allow, deny or review","category":"Authorization and action governance","requirements":"Policies and approvals come from a trusted control plane. Bind decisions to identity, action digest, resource, expiry and nonce.","proposedRuntime":"stateful","existingTools":[],"pilot":false,"effort":"L","nameMCP":"policy__evaluate","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"action":{"type":"object","maxProperties":2000},"allowedTools":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}},"allowedDomains":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}}},"required":["action","allowedTools"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"verdict":{"type":"string","enum":["allow","deny"]},"warning":{"type":"string","maxLength":200000}},"required":["verdict","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"policy.evaluate"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"action":{"tool":"json.parse"},"allowedTools":["json.parse"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"policy.tool_allowlist","name":"Check an allowed tool set","description":"Keep an agent inside a declared capability boundary.","contract":"tool ID + tenant capability grant → verdict","category":"Authorization and action governance","requirements":"Policies and approvals come from a trusted control plane. Bind decisions to identity, action digest, resource, expiry and nonce.","proposedRuntime":"stateful","existingTools":[],"pilot":false,"effort":"M","nameMCP":"policy__tool_allowlist","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"tool":{"type":"string","maxLength":200000},"allowed":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}}},"required":["tool","allowed"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"allowed":{"type":"boolean"},"warning":{"type":"string","maxLength":200000}},"required":["allowed","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"policy.tool_allowlist"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"tool":"json.parse","allowed":["json.parse"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"policy.path_scope","name":"Inspect lexical path scope","description":"Check relative path prefixes and traversal syntax. Filesystem access requires independent realpath and symlink enforcement.","contract":"canonical path + workspace grant → scoped-path verdict","category":"Authorization and action governance","requirements":"Policies and approvals come from a trusted control plane. Bind decisions to identity, action digest, resource, expiry and nonce.","proposedRuntime":"stateful","existingTools":[],"pilot":false,"effort":"L","nameMCP":"policy__path_scope","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"root":{"type":"string","maxLength":200000}},"required":["path","root"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"lexicallyWithin":{"type":"boolean"},"warning":{"type":"string","maxLength":200000}},"required":["lexicallyWithin","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"policy.path_scope"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"path":"docs/readme.md","root":"docs"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"policy.domain_scope","name":"Validate an outbound domain against a grant","description":"Restrict reads and writes to approved destinations.","contract":"destination + tenant grant → verdict and matched rule","category":"Authorization and action governance","requirements":"Policies and approvals come from a trusted control plane. Bind decisions to identity, action digest, resource, expiry and nonce.","proposedRuntime":"stateful","existingTools":[],"pilot":false,"effort":"M","nameMCP":"policy__domain_scope","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"url":{"type":"string","maxLength":200000},"domains":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}}},"required":["url","domains"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"allowed":{"type":"boolean"},"hostname":{"type":"string","maxLength":200000},"warning":{"type":"string","maxLength":200000}},"required":["allowed","hostname","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"policy.domain_scope"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"url":"https://example.com/a","domains":["example.com"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"policy.side_effects","name":"Classify declared action effects","description":"Identify operations requiring write or destructive scopes.","contract":"operation definition + arguments → effect classification","category":"Authorization and action governance","requirements":"Policies and approvals come from a trusted control plane. Bind decisions to identity, action digest, resource, expiry and nonce.","proposedRuntime":"stateful","existingTools":[],"pilot":false,"effort":"M","nameMCP":"policy__side_effects","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"effects":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}}},"required":["effects"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"effects":{"type":"array","items":{"type":"string","maxLength":200000},"maxItems":2000},"requiresApproval":{"type":"boolean"},"warning":{"type":"string","maxLength":200000}},"required":["effects","requiresApproval","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"policy.side_effects"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"effects":["network_read"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"approval.prepare","name":"Prepare a reviewable action request","description":"Present exactly what a human is being asked to approve.","contract":"action + preview → approval request and immutable digest","category":"Authorization and action governance","requirements":"Policies and approvals come from a trusted control plane. Bind decisions to identity, action digest, resource, expiry and nonce.","proposedRuntime":"stateful","existingTools":[],"pilot":false,"effort":"L","nameMCP":"approval__prepare","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"action":{"type":"object","maxProperties":2000},"preview":{"type":"string","maxLength":200000}},"required":["action","preview"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"digest":{"type":"string","pattern":"^[a-f0-9]{64}$"},"action":{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}},"preview":{"type":"string","maxLength":200000},"state":{"const":"pending"},"warning":{"type":"string","maxLength":200000}},"required":["digest","action","preview","state","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"approval.prepare"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"action":{"tool":"write","path":"draft.txt"},"preview":"Create draft"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"policy.dry_run","name":"Preview a bounded write operation","description":"Show changes and affected resources before committing.","contract":"operation + sandbox state → proposed changes","category":"Authorization and action governance","requirements":"Policies and approvals come from a trusted control plane. Bind decisions to identity, action digest, resource, expiry and nonce.","proposedRuntime":"stateful","existingTools":[],"pilot":false,"effort":"L","nameMCP":"policy__dry_run","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"before":{"type":"object","maxProperties":2000},"after":{"type":"object","maxProperties":2000}},"required":["before","after"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"changes":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"kind":{"const":"add"},"after":{"$ref":"#/$defs/json"}},"required":["path","kind","after"],"additionalProperties":false,"maxProperties":2000},{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"kind":{"const":"remove"},"before":{"$ref":"#/$defs/json"}},"required":["path","kind","before"],"additionalProperties":false,"maxProperties":2000},{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"kind":{"const":"replace"},"before":{"$ref":"#/$defs/json"},"after":{"$ref":"#/$defs/json"}},"required":["path","kind","before","after"],"additionalProperties":false,"maxProperties":2000}]},"maxItems":2000},"executed":{"const":false}},"required":["changes","executed"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"policy.dry_run"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"before":{"a":1},"after":{"a":2}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"run.retry","name":"Compute a bounded retry schedule","description":"Respect Retry-After and avoid retry storms.","contract":"error class + attempt + deadline → next delay or stop","category":"Agent run reliability","requirements":"Tenant isolation and atomic counters are required. These are execution services, not stateless calculation wrappers.","proposedRuntime":"stateful","existingTools":[],"pilot":false,"effort":"M","nameMCP":"run__retry","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"attempt":{"type":"integer","minimum":0,"maximum":20},"baseMs":{"type":"integer","minimum":1,"maximum":60000},"maxMs":{"type":"integer","minimum":1,"maximum":3600000},"retryAfterMs":{"type":"integer","minimum":0,"maximum":3600000},"remainingMs":{"type":"integer","minimum":0,"maximum":3600000}},"required":["attempt","remainingMs"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"delayMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"stop":{"type":"boolean"},"warning":{"type":"string","maxLength":200000}},"required":["delayMs","stop","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"run.retry"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"attempt":2,"remainingMs":20000},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"run.trace_validate","name":"Validate a structured execution trace","description":"Find malformed steps and missing outcomes.","contract":"trace JSON → schema and sequence diagnostics","category":"Agent run reliability","requirements":"Tenant isolation and atomic counters are required. These are execution services, not stateless calculation wrappers.","proposedRuntime":"stateful","existingTools":[],"pilot":false,"effort":"M","nameMCP":"run__trace_validate","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"steps":{"type":"array","maxItems":2000,"items":{"type":"object","maxProperties":2000}}},"required":["steps"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"findings":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":0,"maximum":9007199254740991},"message":{"type":"string","maxLength":200000}},"required":["index","message"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000}},"required":["findings"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"run.trace_validate"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"steps":[{"id":"s1","tool":"json.parse","status":"success"}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"run.loop_detect","name":"Detect repeated unproductive calls","description":"Stop a run that keeps repeating equivalent actions.","contract":"bounded call summaries → loop findings and stop suggestion","category":"Agent run reliability","requirements":"Tenant isolation and atomic counters are required. These are execution services, not stateless calculation wrappers.","proposedRuntime":"stateful","existingTools":[],"pilot":false,"effort":"M","nameMCP":"run__loop_detect","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"calls":{"type":"array","maxItems":2000},"threshold":{"type":"integer","minimum":2,"maximum":100}},"required":["calls"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"repeated":{"type":"array","items":{"type":"object","properties":{"call":{"$ref":"#/$defs/json"},"count":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["call","count"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["repeated","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"run.loop_detect"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"calls":[{"tool":"read"},{"tool":"read"},{"tool":"read"}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"run.error_normalize","name":"Normalize tool errors for recovery","description":"Make retries depend on explicit error semantics.","contract":"error payload + adapter → normalized error and retryability","category":"Agent run reliability","requirements":"Tenant isolation and atomic counters are required. These are execution services, not stateless calculation wrappers.","proposedRuntime":"stateful","existingTools":[],"pilot":false,"effort":"M","nameMCP":"run__error_normalize","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"error":{"type":"object","maxProperties":2000}},"required":["error"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"code":{"type":"string","maxLength":200000},"retryable":{"type":"boolean"},"status":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["code","retryable","status"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"run.error_normalize"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"error":{"status":429,"code":"RATE_LIMIT"}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"api.openapi_lint","name":"Lint an OpenAPI document","description":"Check an integration contract before connecting.","contract":"OpenAPI document → structural and semantic findings","category":"API and protocol contracts","requirements":"Schema compatibility is tested by client profile; generated declarations do not prove server behavior.","proposedRuntime":"node","existingTools":[],"pilot":false,"effort":"M","nameMCP":"api__openapi_lint","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"document":{"type":"object","maxProperties":2000}},"required":["document"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"findings":{"type":"array","items":{"type":"string","maxLength":200000},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["findings","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"api.openapi_lint"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"document":{"openapi":"3.0.3","info":{"title":"Example","version":"1"},"paths":{}}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"api.compatibility_diff","name":"Detect breaking API contract changes","description":"Review schema changes before upgrading an agent.","contract":"old + new API schema → compatibility findings","category":"API and protocol contracts","requirements":"Schema compatibility is tested by client profile; generated declarations do not prove server behavior.","proposedRuntime":"node","existingTools":[],"pilot":false,"effort":"M","nameMCP":"api__compatibility_diff","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"before":{"type":"object","maxProperties":2000},"after":{"type":"object","maxProperties":2000}},"required":["before","after"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"changes":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"kind":{"const":"add"},"after":{"$ref":"#/$defs/json"}},"required":["path","kind","after"],"additionalProperties":false,"maxProperties":2000},{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"kind":{"const":"remove"},"before":{"$ref":"#/$defs/json"}},"required":["path","kind","before"],"additionalProperties":false,"maxProperties":2000},{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"kind":{"const":"replace"},"before":{"$ref":"#/$defs/json"},"after":{"$ref":"#/$defs/json"}},"required":["path","kind","before","after"],"additionalProperties":false,"maxProperties":2000}]},"maxItems":2000},"potentialBreaking":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"kind":{"const":"add"},"after":{"$ref":"#/$defs/json"}},"required":["path","kind","after"],"additionalProperties":false,"maxProperties":2000},{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"kind":{"const":"remove"},"before":{"$ref":"#/$defs/json"}},"required":["path","kind","before"],"additionalProperties":false,"maxProperties":2000},{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"kind":{"const":"replace"},"before":{"$ref":"#/$defs/json"},"after":{"$ref":"#/$defs/json"}},"required":["path","kind","before","after"],"additionalProperties":false,"maxProperties":2000}]},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["changes","potentialBreaking","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"api.compatibility_diff"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"before":{"paths":{"/old":{}}},"after":{"paths":{}}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"api.curl_fetch","name":"Convert cURL into a fetch example","description":"Translate a known request into agent integration code.","contract":"cURL text → fetch snippet with secret warnings","category":"API and protocol contracts","requirements":"Schema compatibility is tested by client profile; generated declarations do not prove server behavior.","proposedRuntime":"node","existingTools":["curl-to-fetch-converter"],"pilot":false,"effort":"M","nameMCP":"api__curl_fetch","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"command":{"type":"string","maxLength":20000}},"required":["command"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"code":{"type":"string","maxLength":200000},"warning":{"type":"string","maxLength":200000}},"required":["code","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"api.curl_fetch"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"command":"curl https://example.com"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"api.schema_example","name":"Generate a bounded schema example","description":"Create plausible request shapes from a supported schema.","contract":"schema + seed → example and unsupported-feature notice","category":"API and protocol contracts","requirements":"Schema compatibility is tested by client profile; generated declarations do not prove server behavior.","proposedRuntime":"node","existingTools":[],"pilot":false,"effort":"M","nameMCP":"api__schema_example","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"schema":{"type":"object","maxProperties":2000}},"required":["schema"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"value":{"$ref":"#/$defs/json"},"valid":{"type":"boolean"},"errors":{"type":"array","items":{"type":"object","properties":{"instancePath":{"type":"string","maxLength":200000},"schemaPath":{"type":"string","maxLength":200000},"keyword":{"type":"string","maxLength":200000},"params":{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}},"message":{"type":"string","maxLength":200000}},"required":["instancePath","schemaPath","keyword","params"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"profile":{"type":"string","maxLength":200000},"warning":{"type":"string","maxLength":200000}},"required":["value","valid","errors","profile","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"api.schema_example"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"schema":{"type":"object","properties":{"id":{"type":"integer"}},"required":["id"]}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"api.request_validate","name":"Validate a request against a contract","description":"Catch wrong parameters before a real API request.","contract":"request + operation schema → errors and normalized fields","category":"API and protocol contracts","requirements":"Schema compatibility is tested by client profile; generated declarations do not prove server behavior.","proposedRuntime":"node","existingTools":[],"pilot":false,"effort":"M","nameMCP":"api__request_validate","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"value":{},"schema":{"type":"object","maxProperties":2000}},"required":["value","schema"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"valid":{"type":"boolean"},"errors":{"type":"array","items":{"type":"object","properties":{"instancePath":{"type":"string","maxLength":200000},"schemaPath":{"type":"string","maxLength":200000},"keyword":{"type":"string","maxLength":200000},"params":{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}},"message":{"type":"string","maxLength":200000}},"required":["instancePath","schemaPath","keyword","params"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"profile":{"type":"string","maxLength":200000}},"required":["valid","errors","profile"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"api.request_validate"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"value":{"id":1},"schema":{"type":"object","required":["id"]}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"api.response_validate","name":"Validate an API response contract","description":"Prevent malformed tool output from propagating.","contract":"response + operation schema → contract violations","category":"API and protocol contracts","requirements":"Schema compatibility is tested by client profile; generated declarations do not prove server behavior.","proposedRuntime":"node","existingTools":[],"pilot":false,"effort":"M","nameMCP":"api__response_validate","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"value":{},"schema":{"type":"object","maxProperties":2000}},"required":["value","schema"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"valid":{"type":"boolean"},"errors":{"type":"array","items":{"type":"object","properties":{"instancePath":{"type":"string","maxLength":200000},"schemaPath":{"type":"string","maxLength":200000},"keyword":{"type":"string","maxLength":200000},"params":{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}},"message":{"type":"string","maxLength":200000}},"required":["instancePath","schemaPath","keyword","params"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"profile":{"type":"string","maxLength":200000}},"required":["valid","errors","profile"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"api.response_validate"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"value":{"id":1},"schema":{"type":"object","required":["id"]}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"mcp.manifest_lint","name":"Lint an MCP tool manifest","description":"Check names, schemas, hints and descriptions.","contract":"manifest + negotiated profile → validation findings","category":"API and protocol contracts","requirements":"Schema compatibility is tested by client profile; generated declarations do not prove server behavior.","proposedRuntime":"node","existingTools":[],"pilot":true,"effort":"M","nameMCP":"mcp__manifest_lint","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"tools":{"type":"array","maxItems":2000,"items":{"type":"object","maxProperties":2000}}},"required":["tools"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"findings":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":0,"maximum":9007199254740991},"message":{"type":"string","maxLength":200000}},"required":["index","message"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["findings","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"mcp.manifest_lint"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"tools":[{"name":"json_parse","description":"Parse JSON","inputSchema":{"type":"object"}}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"api.jwt_inspect","name":"Inspect JWT structure without trusting it","description":"Debug token shape while avoiding a false authentication verdict.","contract":"JWT → decoded headers and claims; signature not verified","category":"API and protocol contracts","requirements":"Schema compatibility is tested by client profile; generated declarations do not prove server behavior.","proposedRuntime":"node","existingTools":["jwt-decoder"],"pilot":false,"effort":"S","nameMCP":"api__jwt_inspect","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"token":{"type":"string","maxLength":16000}},"required":["token"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"header":{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}},"claims":{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}},"signatureVerified":{"const":false},"warning":{"type":"string","maxLength":200000}},"required":["header","claims","signatureVerified","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"api.jwt_inspect"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"token":"eyJhbGciOiJub25lIn0.eyJzdWIiOiJleGFtcGxlIn0."},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"test.synthetic_records","name":"Generate seeded synthetic records","description":"Exercise import and validation flows.","contract":"record template + seed + count → labelled synthetic records","category":"Test data and regression fixtures","requirements":"Synthetic data is labelled. Seeds are reproducible; secrets and real personal data are excluded.","proposedRuntime":"node","existingTools":["test-data"],"pilot":false,"effort":"M","nameMCP":"test__synthetic_records","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"template":{"type":"object","maxProperties":2000},"count":{"type":"integer","minimum":1,"maximum":2000},"seed":{"type":"integer","minimum":1,"maximum":2147483647}},"required":["template","count","seed"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"synthetic":{"const":true},"seed":{"type":"integer","minimum":1,"maximum":2147483647},"records":{"type":"array","items":{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}},"maxItems":2000}},"required":["synthetic","seed","records"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"test.synthetic_records"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"template":{"name":"Test {{index}}","score":"{{random}}"},"count":3,"seed":42},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"test.jsonl_dataset","name":"Validate chat JSONL dataset rows","description":"Find invalid roles or content shapes before evaluation.","contract":"JSONL → per-row validation findings","category":"Test data and regression fixtures","requirements":"Synthetic data is labelled. Seeds are reproducible; secrets and real personal data are excluded.","proposedRuntime":"node","existingTools":["dataset-jsonl"],"pilot":true,"effort":"M","nameMCP":"test__jsonl_dataset","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"text":{"type":"string","maxLength":200000}},"required":["text"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"rows":{"type":"array","items":{"type":"array","items":[{"type":"integer","minimum":1},{"type":"string","maxLength":200000},{"type":"integer","minimum":0,"maximum":9007199254740991}],"minItems":3,"maxItems":3,"additionalItems":false},"maxItems":2000}},"required":["rows"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"test.jsonl_dataset"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"text":"{\"messages\":[{\"role\":\"user\",\"content\":\"Test\"}]}"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"test.regex_cases","name":"Evaluate regex cases with a deadline","description":"Check positive and negative examples without hanging.","contract":"regex + cases + timeout → matches and failures","category":"Test data and regression fixtures","requirements":"Synthetic data is labelled. Seeds are reproducible; secrets and real personal data are excluded.","proposedRuntime":"node","existingTools":["regex-tester"],"pilot":false,"effort":"M","nameMCP":"test__regex_cases","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"pattern":{"type":"string","maxLength":200},"cases":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}}},"required":["pattern","cases"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"cases":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string","maxLength":200000},"matched":{"type":"boolean"}},"required":["text","matched"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"profile":{"type":"string","maxLength":200000}},"required":["cases","profile"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"test.regex_cases"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"pattern":"^abc$","cases":["abc","xyz"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"test.schema_edges","name":"Generate schema boundary cases","description":"Test minimums, maximums, missing fields and wrong types.","contract":"schema + seed → labelled valid and invalid cases","category":"Test data and regression fixtures","requirements":"Synthetic data is labelled. Seeds are reproducible; secrets and real personal data are excluded.","proposedRuntime":"node","existingTools":[],"pilot":true,"effort":"M","nameMCP":"test__schema_edges","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"schema":{"type":"object","maxProperties":2000}},"required":["schema"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"cases":{"type":"array","items":{"type":"object","properties":{"value":{"$ref":"#/$defs/json"},"valid":{"type":"boolean"},"errors":{"type":"array","items":{"type":"object","properties":{"instancePath":{"type":"string","maxLength":200000},"schemaPath":{"type":"string","maxLength":200000},"keyword":{"type":"string","maxLength":200000},"params":{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}},"message":{"type":"string","maxLength":200000}},"required":["instancePath","schemaPath","keyword","params"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"profile":{"type":"string","maxLength":200000}},"required":["value","valid","errors","profile"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000}},"required":["cases"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"test.schema_edges"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"schema":{"type":"integer","minimum":1,"maximum":3}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"test.property_cases","name":"Check numeric-array properties","description":"Check supplied numbers for nonnegative, sorted, unique or finite properties; no arbitrary property code is executed.","contract":"supported generator + invariant → cases and counterexamples","category":"Test data and regression fixtures","requirements":"Synthetic data is labelled. Seeds are reproducible; secrets and real personal data are excluded.","proposedRuntime":"node","existingTools":[],"pilot":false,"effort":"L","nameMCP":"test__property_cases","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"values":{"type":"array","maxItems":2000,"items":{"type":"number"},"minItems":1},"property":{"type":"string","enum":["nonnegative","sorted","unique","finite"]}},"required":["values","property"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"passed":{"type":"boolean"},"failingIndices":{"type":"array","items":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxItems":2000}},"required":["passed","failingIndices"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"test.property_cases"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"values":[1,2,2],"property":"unique"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"test.golden_compare","name":"Compare a result to a golden fixture","description":"Catch regression in deterministic tool behavior.","contract":"actual + expected + tolerance policy → diff and verdict","category":"Test data and regression fixtures","requirements":"Synthetic data is labelled. Seeds are reproducible; secrets and real personal data are excluded.","proposedRuntime":"node","existingTools":[],"pilot":true,"effort":"M","nameMCP":"test__golden_compare","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"actual":{},"expected":{},"tolerance":{"type":"number","minimum":0}},"required":["actual","expected"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"passed":{"type":"boolean"},"changes":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"kind":{"const":"add"},"after":{"$ref":"#/$defs/json"}},"required":["path","kind","after"],"additionalProperties":false,"maxProperties":2000},{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"kind":{"const":"remove"},"before":{"$ref":"#/$defs/json"}},"required":["path","kind","before"],"additionalProperties":false,"maxProperties":2000},{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"kind":{"const":"replace"},"before":{"$ref":"#/$defs/json"},"after":{"$ref":"#/$defs/json"}},"required":["path","kind","before","after"],"additionalProperties":false,"maxProperties":2000}]},"maxItems":2000}},"required":["passed","changes"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"test.golden_compare"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"actual":1.001,"expected":1,"tolerance":0.01},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"test.fault_fixture","name":"Describe a synthetic fault fixture","description":"Build a bounded timeout/error/rate-limit fixture description; does not create a live mock service.","contract":"fault type + bounded timing → synthetic service fixture","category":"Test data and regression fixtures","requirements":"Synthetic data is labelled. Seeds are reproducible; secrets and real personal data are excluded.","proposedRuntime":"node","existingTools":[],"pilot":false,"effort":"L","nameMCP":"test__fault_fixture","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"type":{"type":"string","enum":["timeout","rate_limit","server_error","malformed"]},"delayMs":{"type":"integer","minimum":0,"maximum":60000}},"required":["type"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"synthetic":{"const":true},"fixture":{"type":"object","properties":{"type":{"type":"string","enum":["timeout","rate_limit","server_error","malformed"]},"delayMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"status":{"type":"integer","enum":[200,429,503]},"body":{"oneOf":[{"type":"string","maxLength":200000},{"type":"object","properties":{"error":{"type":"string","maxLength":200000}},"required":["error"],"additionalProperties":false,"maxProperties":2000}]}},"required":["type","delayMs","status","body"],"additionalProperties":false,"maxProperties":2000},"warning":{"type":"string","maxLength":200000}},"required":["synthetic","fixture","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"test.fault_fixture"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"type":"rate_limit"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"test.dataset_duplicates","name":"Find exact and normalized dataset duplicates","description":"Reduce leakage and repeated examples in eval sets.","contract":"dataset + normalization rules → duplicate groups","category":"Test data and regression fixtures","requirements":"Synthetic data is labelled. Seeds are reproducible; secrets and real personal data are excluded.","proposedRuntime":"node","existingTools":[],"pilot":false,"effort":"M","nameMCP":"test__dataset_duplicates","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"records":{"type":"array","maxItems":2000}},"required":["records"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"groups":{"type":"array","items":{"type":"array","items":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxItems":2000},"maxItems":2000},"profile":{"type":"string","maxLength":200000}},"required":["groups","profile"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"test.dataset_duplicates"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"records":[{"a":1},{"a":1}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"test.split_leakage","name":"Check train and test overlap","description":"Find exact overlap and optional approximate candidates.","contract":"train + test + matching policy → overlap findings","category":"Test data and regression fixtures","requirements":"Synthetic data is labelled. Seeds are reproducible; secrets and real personal data are excluded.","proposedRuntime":"node","existingTools":[],"pilot":false,"effort":"L","nameMCP":"test__split_leakage","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"train":{"type":"array","maxItems":2000},"test":{"type":"array","maxItems":2000}},"required":["train","test"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"overlaps":{"type":"array","items":{"type":"object","properties":{"testIndex":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["testIndex"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"profile":{"type":"string","maxLength":200000}},"required":["overlaps","profile"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"test.split_leakage"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"train":["A","B"],"test":["B","C"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"test.artifact_invariants","name":"Compare supplied artifact measurements","description":"Compare caller-supplied measurements with expected invariants. Does not parse or measure artifact bytes independently.","contract":"artifact + declared invariants → measured values and failures","category":"Test data and regression fixtures","requirements":"Synthetic data is labelled. Seeds are reproducible; secrets and real personal data are excluded.","proposedRuntime":"node","existingTools":[],"pilot":true,"effort":"M","nameMCP":"test__artifact_invariants","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"observed":{"type":"object","maxProperties":2000},"expected":{"type":"object","maxProperties":2000}},"required":["observed","expected"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"passed":{"type":"boolean"},"failures":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","maxLength":200000},"expected":{"$ref":"#/$defs/json"},"observed":{"$ref":"#/$defs/json"},"missing":{"type":"boolean"}},"required":["key","expected","observed","missing"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["passed","failures","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"test.artifact_invariants"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"observed":{"mime":"application/pdf","pages":2},"expected":{"pages":2}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"eval.exact_match","name":"Score exact and normalized answer matches","description":"Compare caller-supplied actual and expected values for every case. Both fields are required; this deterministic comparison does not judge semantic correctness.","contract":"answers + expected values + normalizer → per-case scores","category":"Agent evaluations","requirements":"Keep deterministic scores separate from model judgments; show rubric, model version, evidence and uncertainty.","proposedRuntime":"worker","existingTools":[],"pilot":false,"effort":"S","nameMCP":"eval__exact_match","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"cases":{"type":"array","maxItems":2000,"items":{"type":"object","properties":{"actual":{},"expected":{}},"required":["actual","expected"]}},"normalize":{"type":"boolean"}},"required":["cases"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"scores":{"type":"array","items":{"type":"object","properties":{"passed":{"type":"boolean"}},"required":["passed"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"accuracy":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]}},"required":["scores","accuracy"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"eval.exact_match"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"cases":[{"actual":" A ","expected":"a"}],"normalize":true},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"eval.tool_choice","name":"Score tool selection","description":"Measure whether an agent picks the right capability.","contract":"trace + allowed and required tools → selection metrics","category":"Agent evaluations","requirements":"Keep deterministic scores separate from model judgments; show rubric, model version, evidence and uncertainty.","proposedRuntime":"worker","existingTools":[],"pilot":false,"effort":"M","nameMCP":"eval__tool_choice","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"called":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}},"allowed":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}},"required":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}}},"required":["called","allowed"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"forbidden":{"type":"array","items":{"type":"string","maxLength":200000},"maxItems":2000},"missing":{"type":"array","items":{"type":"string","maxLength":200000},"maxItems":2000},"allowedRate":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]}},"required":["forbidden","missing","allowedRate"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"eval.tool_choice"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"called":["json.parse"],"allowed":["json.parse"],"required":["json.parse"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"eval.arguments","name":"Score tool arguments","description":"Measure correctness of selected parameters.","contract":"call trace + expected arguments + tolerances → score and errors","category":"Agent evaluations","requirements":"Keep deterministic scores separate from model judgments; show rubric, model version, evidence and uncertainty.","proposedRuntime":"worker","existingTools":[],"pilot":false,"effort":"M","nameMCP":"eval__arguments","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"actual":{"type":"object","maxProperties":2000},"expected":{"type":"object","maxProperties":2000}},"required":["actual","expected"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"passed":{"type":"boolean"},"changes":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"kind":{"const":"add"},"after":{"$ref":"#/$defs/json"}},"required":["path","kind","after"],"additionalProperties":false,"maxProperties":2000},{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"kind":{"const":"remove"},"before":{"$ref":"#/$defs/json"}},"required":["path","kind","before"],"additionalProperties":false,"maxProperties":2000},{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"kind":{"const":"replace"},"before":{"$ref":"#/$defs/json"},"after":{"$ref":"#/$defs/json"}},"required":["path","kind","before","after"],"additionalProperties":false,"maxProperties":2000}]},"maxItems":2000}},"required":["passed","changes"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"eval.arguments"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"actual":{"x":2},"expected":{"x":1}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"eval.trajectory","name":"Score workflow completion constraints","description":"Find skipped steps and forbidden actions.","contract":"trace + trusted workflow constraints → completion findings","category":"Agent evaluations","requirements":"Keep deterministic scores separate from model judgments; show rubric, model version, evidence and uncertainty.","proposedRuntime":"worker","existingTools":[],"pilot":false,"effort":"M","nameMCP":"eval__trajectory","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"steps":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}},"required":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}},"forbidden":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}}},"required":["steps","required"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"missingOrOutOfOrder":{"type":"array","items":{"type":"string","maxLength":200000},"maxItems":2000},"forbidden":{"type":"array","items":{"type":"string","maxLength":200000},"maxItems":2000}},"required":["missingOrOutOfOrder","forbidden"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"eval.trajectory"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"steps":["read","validate"],"required":["read","validate"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"eval.refusal","name":"Evaluate refusal and over-refusal","description":"Check safe rejection and successful benign handling.","contract":"labelled requests + answers → false-accept and false-reject rates","category":"Agent evaluations","requirements":"Keep deterministic scores separate from model judgments; show rubric, model version, evidence and uncertainty.","proposedRuntime":"worker","existingTools":[],"pilot":false,"effort":"M","nameMCP":"eval__refusal","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"cases":{"type":"array","maxItems":2000,"items":{"type":"object","maxProperties":2000}}},"required":["cases"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"count":{"type":"integer","minimum":0,"maximum":9007199254740991},"falseAccept":{"type":"integer","minimum":0,"maximum":9007199254740991},"falseReject":{"type":"integer","minimum":0,"maximum":9007199254740991},"source":{"type":"string","maxLength":200000}},"required":["count","falseAccept","falseReject","source"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"eval.refusal"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"cases":[{"shouldRefuse":true,"didRefuse":true}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"eval.injection_resilience","name":"Score approved injection tests","description":"Measure failures against an explicit threat suite.","contract":"fixtures + agent trace → boundary violations and success rates","category":"Agent evaluations","requirements":"Keep deterministic scores separate from model judgments; show rubric, model version, evidence and uncertainty.","proposedRuntime":"worker","existingTools":[],"pilot":false,"effort":"L","nameMCP":"eval__injection_resilience","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"cases":{"type":"array","maxItems":2000,"items":{"type":"object","maxProperties":2000}}},"required":["cases"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"count":{"type":"integer","minimum":0,"maximum":9007199254740991},"violations":{"type":"integer","minimum":0,"maximum":9007199254740991},"source":{"type":"string","maxLength":200000}},"required":["count","violations","source"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"eval.injection_resilience"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"cases":[{"boundaryViolated":false}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"eval.paired_runs","name":"Compare two agent configurations","description":"Use matched cases to compare cost and success rates.","contract":"paired eval runs → deltas and statistical assumptions","category":"Agent evaluations","requirements":"Keep deterministic scores separate from model judgments; show rubric, model version, evidence and uncertainty.","proposedRuntime":"worker","existingTools":[],"pilot":false,"effort":"M","nameMCP":"eval__paired_runs","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"pairs":{"type":"array","maxItems":2000,"items":{"type":"object","maxProperties":2000}}},"required":["pairs"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"deltas":{"type":"array","items":{"type":"number"},"maxItems":2000},"meanDelta":{"anyOf":[{"type":"number"},{"type":"null"}]},"warning":{"type":"string","maxLength":200000}},"required":["deltas","meanDelta","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"eval.paired_runs"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"pairs":[{"before":0.5,"after":0.8}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"eval.report","name":"Build a reproducible evaluation report","description":"Share results with fixtures, versions and limitations.","contract":"run metadata + scores → report and machine-readable summary","category":"Agent evaluations","requirements":"Keep deterministic scores separate from model judgments; show rubric, model version, evidence and uncertainty.","proposedRuntime":"worker","existingTools":[],"pilot":false,"effort":"M","nameMCP":"eval__report","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"metadata":{"type":"object","maxProperties":2000},"scores":{"type":"array","maxItems":2000,"items":{"type":"object","maxProperties":2000}}},"required":["metadata","scores"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"report":{"type":"object","properties":{"metadata":{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}},"scores":{"type":"array","items":{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}},"maxItems":2000},"count":{"type":"integer","minimum":0,"maximum":9007199254740991},"generatedAt":{"type":"string","maxLength":200000}},"required":["metadata","scores","count","generatedAt"],"additionalProperties":false,"maxProperties":2000},"warning":{"type":"string","maxLength":200000}},"required":["report","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"eval.report"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"metadata":{"version":"1"},"scores":[{"passed":true}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"rag.chunk","name":"Split text into bounded chunks","description":"Prepare a document for retrieval with stable offsets.","contract":"text + size + overlap → chunks and source offsets","category":"Retrieval and grounding","requirements":"Source boundaries and tenant filtering are mandatory. Similarity does not establish truth or entailment.","proposedRuntime":"worker","existingTools":["rag-chunker"],"pilot":false,"effort":"M","nameMCP":"rag__chunk","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"text":{"type":"string","maxLength":200000},"size":{"type":"integer","minimum":100,"maximum":10000},"overlap":{"type":"integer","minimum":0,"maximum":9999}},"required":["text"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"chunks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":1},"start":{"type":"integer","minimum":0,"maximum":9007199254740991},"end":{"type":"integer","minimum":0,"maximum":9007199254740991},"text":{"type":"string","maxLength":200000}},"required":["id","start","end","text"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"offsetUnit":{"const":"Unicode codepoints"}},"required":["chunks","offsetUnit"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"rag.chunk"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"text":"Some evidence","size":100,"overlap":10},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"rag.semantic_compare","name":"Compare supplied embedding vectors","description":"Compute cosine similarity of supplied nonzero vectors from a common model. Reject zero vectors; does not generate embeddings or establish entailment.","contract":"two texts + model → similarity and limitations","category":"Retrieval and grounding","requirements":"Source boundaries and tenant filtering are mandatory. Similarity does not establish truth or entailment.","proposedRuntime":"worker","existingTools":["semantic-text-compare"],"pilot":false,"effort":"L","nameMCP":"rag__semantic_compare","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"left":{"type":"array","maxItems":2000,"items":{"type":"number"},"minItems":1},"right":{"type":"array","maxItems":2000,"items":{"type":"number"},"minItems":1}},"required":["left","right"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"cosine":{"type":"number","minimum":-1,"maximum":1},"warning":{"type":"string","maxLength":200000}},"required":["cosine","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"rag.semantic_compare"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"left":[1,0],"right":[1,1]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"rag.keyphrases","name":"Extract frequency-based keyphrases","description":"Create lightweight retrieval hints from supplied text.","contract":"text + language profile → terms and counts","category":"Retrieval and grounding","requirements":"Source boundaries and tenant filtering are mandatory. Similarity does not establish truth or entailment.","proposedRuntime":"worker","existingTools":["keyword-extractor"],"pilot":false,"effort":"M","nameMCP":"rag__keyphrases","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"text":{"type":"string","maxLength":200000},"count":{"type":"integer","minimum":1,"maximum":100}},"required":["text"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"terms":{"type":"array","items":{"type":"object","properties":{"term":{"type":"string","maxLength":200000},"count":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["term","count"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"profile":{"type":"string","maxLength":200000}},"required":["terms","profile"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"rag.keyphrases"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"text":"agent tools agent testing"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"rag.retrieve","name":"Search supplied source records","description":"Rank caller-supplied sources by lexical query overlap. No persistent collection, vector database or cross-user data access.","contract":"query + authorized collection → ranked chunks and provenance","category":"Retrieval and grounding","requirements":"Source boundaries and tenant filtering are mandatory. Similarity does not establish truth or entailment.","proposedRuntime":"worker","existingTools":[],"pilot":false,"effort":"L","nameMCP":"rag__retrieve","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"query":{"type":"string","maxLength":200000},"sources":{"type":"array","maxItems":2000,"items":{"type":"object","maxProperties":2000}},"count":{"type":"integer","minimum":1,"maximum":100}},"required":["query","sources"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"sources":{"type":"array","items":{"type":"object","properties":{"score":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["score"],"additionalProperties":{"$ref":"#/$defs/json"},"maxProperties":2000},"maxItems":2000},"profile":{"type":"string","maxLength":200000}},"required":["sources","profile"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"rag.retrieve"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"query":"agent","sources":[{"id":"1","text":"agent tools"}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"rag.rerank","name":"Rerank candidates by lexical overlap","description":"Sort supplied candidates using query-term overlap. This bounded profile uses no neural reranking model.","contract":"query + candidates + model → reordered candidates","category":"Retrieval and grounding","requirements":"Source boundaries and tenant filtering are mandatory. Similarity does not establish truth or entailment.","proposedRuntime":"worker","existingTools":[],"pilot":false,"effort":"L","nameMCP":"rag__rerank","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"query":{"type":"string","maxLength":200000},"candidates":{"type":"array","maxItems":2000,"items":{"type":"object","maxProperties":2000}}},"required":["query","candidates"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"candidates":{"type":"array","items":{"type":"object","properties":{"score":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["score"],"additionalProperties":{"$ref":"#/$defs/json"},"maxProperties":2000},"maxItems":2000},"profile":{"type":"string","maxLength":200000}},"required":["candidates","profile"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"rag.rerank"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"query":"agent","candidates":[{"id":"1","text":"agent tools"}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"rag.citation_check","name":"Check that cited passages exist","description":"Catch missing sources and fabricated quotations.","contract":"answer citations + sources → resolvable and mismatched citations","category":"Retrieval and grounding","requirements":"Source boundaries and tenant filtering are mandatory. Similarity does not establish truth or entailment.","proposedRuntime":"worker","existingTools":[],"pilot":false,"effort":"M","nameMCP":"rag__citation_check","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"citations":{"type":"array","maxItems":2000,"items":{"type":"object","properties":{"sourceId":{"type":"string","maxLength":200000,"minLength":1},"quote":{"type":"string","maxLength":200000,"minLength":1,"pattern":"\\S"}},"required":["sourceId","quote"]}},"sources":{"type":"array","maxItems":2000,"items":{"type":"object","properties":{"id":{"type":"string","maxLength":200000,"minLength":1},"text":{"type":"string","maxLength":200000}},"required":["id","text"]}}},"required":["citations","sources"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"citations":{"type":"array","items":{"type":"object","properties":{"sourceId":{"type":"string","maxLength":200000},"resolves":{"type":"boolean"},"quoteExists":{"type":"boolean"}},"required":["sourceId","resolves","quoteExists"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["citations","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"rag.citation_check"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"citations":[{"sourceId":"1","quote":"evidence"}],"sources":[{"id":"1","text":"Some evidence"}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"rag.coverage","name":"Measure source coverage for listed claims","description":"Expose claims that have no linked evidence.","contract":"claims + citation map → supported references and gaps","category":"Retrieval and grounding","requirements":"Source boundaries and tenant filtering are mandatory. Similarity does not establish truth or entailment.","proposedRuntime":"worker","existingTools":[],"pilot":false,"effort":"M","nameMCP":"rag__coverage","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"claims":{"type":"array","maxItems":2000,"items":{"type":"object","maxProperties":2000}},"sourceIds":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}}},"required":["claims","sourceIds"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"claims":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/$defs/json"},"linked":{"type":"array","items":{"type":"string","maxLength":200000},"maxItems":2000},"unlinked":{"type":"boolean"}},"required":["id","linked","unlinked"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["claims","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"rag.coverage"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"claims":[{"id":"1","sources":["s1"]}],"sourceIds":["s1"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"rag.freshness","name":"Check source age against a task policy","description":"Avoid relying on stale snapshots for current tasks.","contract":"source timestamps + freshness policy → stale or unknown flags","category":"Retrieval and grounding","requirements":"Source boundaries and tenant filtering are mandatory. Similarity does not establish truth or entailment.","proposedRuntime":"worker","existingTools":[],"pilot":false,"effort":"S","nameMCP":"rag__freshness","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"sources":{"type":"array","maxItems":2000,"items":{"type":"object","maxProperties":2000}},"maxAgeHours":{"type":"number","minimum":0,"maximum":876000}},"required":["sources","maxAgeHours"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"sources":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/$defs/json"},"state":{"type":"string","enum":["unknown","stale","fresh"]},"ageHours":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id","state","ageHours"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000}},"required":["sources"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"rag.freshness"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"sources":[{"id":"1","observedAt":"2026-01-01T00:00:00Z"}],"maxAgeHours":24},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"rag.source_dedupe","name":"Deduplicate retrieved sources","description":"Avoid counting mirrors as independent evidence.","contract":"sources + canonical and content hashes → source clusters","category":"Retrieval and grounding","requirements":"Source boundaries and tenant filtering are mandatory. Similarity does not establish truth or entailment.","proposedRuntime":"worker","existingTools":[],"pilot":false,"effort":"M","nameMCP":"rag__source_dedupe","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"sources":{"type":"array","maxItems":2000,"items":{"type":"object","maxProperties":2000}}},"required":["sources"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"groups":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","maxLength":200000},"ids":{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000}},"required":["key","ids"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["groups","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"rag.source_dedupe"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"sources":[{"id":"1","hash":"abc"},{"id":"2","hash":"abc"}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"seo.robots","name":"Evaluate robots rules for a named crawler","description":"Determine permitted public content access.","contract":"robots text + URL + user agent → applicable rule","category":"SEO and agent discovery","requirements":"Only crawl authorized public pages within budgets. Metadata checks do not promise rankings or agent adoption.","proposedRuntime":"network","existingTools":["robots-tester"],"pilot":false,"effort":"M","nameMCP":"seo__robots","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"text":{"type":"string","maxLength":200000},"path":{"type":"string","maxLength":200000},"userAgent":{"type":"string","maxLength":200000}},"required":["text","path","userAgent"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"allowed":{"type":"boolean"},"matched":{"anyOf":[{"type":"object","properties":{"allow":{"type":"boolean"},"path":{"type":"string","maxLength":200000}},"required":["allow","path"],"additionalProperties":false,"maxProperties":2000},{"type":"null"}]},"profile":{"type":"string","maxLength":200000}},"required":["allowed","matched","profile"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"seo.robots"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"text":"User-agent: *\nDisallow: /private","path":"/private/a","userAgent":"ExampleBot"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"seo.sitemap","name":"Inspect sitemap URLs","description":"Check crawlable canonical page coverage.","contract":"supplied or public sitemap → URLs and format findings","category":"SEO and agent discovery","requirements":"Only crawl authorized public pages within budgets. Metadata checks do not promise rankings or agent adoption.","proposedRuntime":"network","existingTools":["sitemap-extractor"],"pilot":false,"effort":"M","nameMCP":"seo__sitemap","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"xml":{"type":"string","maxLength":200000}},"required":["xml"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"urls":{"type":"array","items":{"type":"string","maxLength":200000},"maxItems":2000},"isIndex":{"type":"boolean"}},"required":["urls","isIndex"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"seo.sitemap"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"xml":"<urlset><url><loc>https://example.com</loc></url></urlset>"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"seo.meta","name":"Validate page metadata","description":"Check titles, descriptions and canonical consistency.","contract":"HTML or public URL → metadata and omissions","category":"SEO and agent discovery","requirements":"Only crawl authorized public pages within budgets. Metadata checks do not promise rankings or agent adoption.","proposedRuntime":"network","existingTools":[],"pilot":false,"effort":"M","nameMCP":"seo__meta","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"html":{"type":"string","maxLength":200000}},"required":["html"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"metadata":{"type":"object","properties":{"title":{"type":"string","maxLength":200000},"description":{"type":"string","maxLength":200000},"canonical":{"type":"string","maxLength":200000}},"required":["title","description","canonical"],"additionalProperties":false,"maxProperties":2000},"missing":{"type":"array","items":{"type":"string","enum":["title","description","canonical"]},"maxItems":2000},"profile":{"type":"string","maxLength":200000}},"required":["metadata","missing","profile"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"seo.meta"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"html":"<title>Example</title>"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"seo.hreflang","name":"Audit reciprocal hreflang","description":"Find incorrect locale references and missing reciprocity.","contract":"bounded page set → alternate-language findings","category":"SEO and agent discovery","requirements":"Only crawl authorized public pages within budgets. Metadata checks do not promise rankings or agent adoption.","proposedRuntime":"network","existingTools":[],"pilot":false,"effort":"L","nameMCP":"seo__hreflang","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"pages":{"type":"array","maxItems":2000,"items":{"type":"object","maxProperties":2000}}},"required":["pages"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"findings":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","maxLength":200000},"locale":{"type":"string","maxLength":200000},"issue":{"type":"string","maxLength":200000}},"required":["url","locale","issue"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["findings","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"seo.hreflang"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"pages":[{"url":"https://example.com/en","alternates":{"en":"https://example.com/en","fr":"https://example.com/fr"}}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"seo.structured_data","name":"Inspect JSON-LD blocks","description":"Parse supplied HTML JSON-LD blocks and inspect context presence. Full vocabulary and visible-content validation are outside this profile.","contract":"HTML + JSON-LD → schema and consistency findings","category":"SEO and agent discovery","requirements":"Only crawl authorized public pages within budgets. Metadata checks do not promise rankings or agent adoption.","proposedRuntime":"network","existingTools":[],"pilot":false,"effort":"M","nameMCP":"seo__structured_data","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"html":{"type":"string","maxLength":200000}},"required":["html"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"blocks":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"index":{"type":"integer","minimum":0,"maximum":9007199254740991},"validJSON":{"const":true},"supported":{"const":true},"value":{"$ref":"#/$defs/json"},"hasContext":{"type":"boolean"}},"required":["index","validJSON","supported","value","hasContext"],"additionalProperties":false,"maxProperties":2000},{"type":"object","properties":{"index":{"type":"integer","minimum":0,"maximum":9007199254740991},"validJSON":{"type":"boolean"},"supported":{"const":false},"error":{"type":"string","maxLength":200000}},"required":["index","validJSON","supported","error"],"additionalProperties":false,"maxProperties":2000}]},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["blocks","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"seo.structured_data"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"html":"<script type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebPage\"}</script>"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"seo.llms_lint","name":"Lint llms.txt and linked Markdown","description":"Check concise discovery guidance and broken documentation links.","contract":"llms.txt + bounded links → findings and format notice","category":"SEO and agent discovery","requirements":"Only crawl authorized public pages within budgets. Metadata checks do not promise rankings or agent adoption.","proposedRuntime":"network","existingTools":[],"pilot":false,"effort":"M","nameMCP":"seo__llms_lint","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"text":{"type":"string","maxLength":200000}},"required":["text"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"findings":{"type":"array","items":{"type":"string","maxLength":200000},"maxItems":2000},"links":{"type":"array","items":{"type":"string","maxLength":200000},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["findings","links","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"seo.llms_lint"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"text":"# Example\n\n> Agent tools\n\n## Tools\n- [Docs](https://example.com/agents)"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"seo.utm","name":"Build campaign tracking URLs","description":"Measure an authorized human handoff campaign.","contract":"base URL + campaign fields → encoded tracking URL","category":"SEO and agent discovery","requirements":"Only crawl authorized public pages within budgets. Metadata checks do not promise rankings or agent adoption.","proposedRuntime":"network","existingTools":["utm-builder"],"pilot":false,"effort":"S","nameMCP":"seo__utm","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"url":{"type":"string","maxLength":200000},"source":{"type":"string","maxLength":200000},"medium":{"type":"string","maxLength":200000},"campaign":{"type":"string","maxLength":200000}},"required":["url","source","medium","campaign"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"url":{"type":"string","maxLength":200000}},"required":["url"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"seo.utm"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"url":"https://example.com","source":"agent","medium":"referral","campaign":"tools"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"seo.sitemap_build","name":"Generate canonical sitemap content","description":"Prepare a sitemap from an approved route list.","contract":"canonical route list → sitemap XML","category":"SEO and agent discovery","requirements":"Only crawl authorized public pages within budgets. Metadata checks do not promise rankings or agent adoption.","proposedRuntime":"network","existingTools":["sitemap-generator"],"pilot":false,"effort":"S","nameMCP":"seo__sitemap_build","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"urls":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}}},"required":["urls"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"xml":{"type":"string","maxLength":200000}},"required":["xml"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"seo.sitemap_build"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"urls":["https://example.com/agents"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"a11y.contrast","name":"Check color contrast","description":"Verify text and background color combinations.","contract":"colors + text size → ratios and criterion checks","category":"Accessibility and publishing checks","requirements":"Static checks do not prove full accessibility; test keyboard use and assistive technology separately.","proposedRuntime":"worker","existingTools":["contrast-checker"],"pilot":false,"effort":"S","nameMCP":"a11y__contrast","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"foreground":{"type":"string","maxLength":200000},"background":{"type":"string","maxLength":200000},"largeText":{"type":"boolean"}},"required":["foreground","background"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"ratio":{"type":"number","minimum":1,"maximum":21},"AA":{"type":"boolean"},"AAA":{"type":"boolean"}},"required":["ratio","AA","AAA"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"a11y.contrast"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"foreground":"#000000","background":"#ffffff"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"a11y.headings","name":"Inspect HTML heading order","description":"Review page structure before publishing.","contract":"HTML → outline and skipped-level findings","category":"Accessibility and publishing checks","requirements":"Static checks do not prove full accessibility; test keyboard use and assistive technology separately.","proposedRuntime":"worker","existingTools":["html-heading-outline-checker"],"pilot":false,"effort":"M","nameMCP":"a11y__headings","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"html":{"type":"string","maxLength":200000}},"required":["html"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"headings":{"type":"array","items":{"type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":6},"text":{"type":"string","maxLength":200000}},"required":["level","text"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"skipped":{"type":"array","items":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxItems":2000}},"required":["headings","skipped"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"a11y.headings"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"html":"<h1>Title</h1><h3>Subsection</h3>"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"a11y.labels","name":"Check form label associations","description":"Catch unlabelled inputs in generated interfaces.","contract":"HTML → association findings","category":"Accessibility and publishing checks","requirements":"Static checks do not prove full accessibility; test keyboard use and assistive technology separately.","proposedRuntime":"worker","existingTools":["form-label-checker"],"pilot":false,"effort":"M","nameMCP":"a11y__labels","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"html":{"type":"string","maxLength":200000}},"required":["html"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"findings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":200000},"issue":{"type":"string","maxLength":200000}},"required":["id","issue"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["findings","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"a11y.labels"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"html":"<label for=\"x\">Name</label><input id=\"x\">"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"a11y.table","name":"Generate a semantically labelled table","description":"Publish data with headers and a caption.","contract":"tabular data + header policy → accessible HTML","category":"Accessibility and publishing checks","requirements":"Static checks do not prove full accessibility; test keyboard use and assistive technology separately.","proposedRuntime":"worker","existingTools":["accessible-table-generator"],"pilot":false,"effort":"M","nameMCP":"a11y__table","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"caption":{"type":"string","maxLength":200000},"headers":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}},"rows":{"type":"array","maxItems":2000,"items":{"type":"array","maxItems":2000}}},"required":["caption","headers","rows"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"html":{"type":"string","maxLength":200000}},"required":["html"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"a11y.table"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"caption":"Results","headers":["Tool","Status"],"rows":[["JSON","Ready"]]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"a11y.palette","name":"Suggest high-contrast palette fallbacks","description":"Measure palette contrast and suggest black or white when a target is missed. Report whether the target is met or attainable; does not optimize hue or preserve brand colors.","contract":"palette + contrast targets → suggested colors and deltas","category":"Accessibility and publishing checks","requirements":"Static checks do not prove full accessibility; test keyboard use and assistive technology separately.","proposedRuntime":"worker","existingTools":["accessible-palette-adjuster"],"pilot":false,"effort":"M","nameMCP":"a11y__palette","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"background":{"type":"string","maxLength":200000},"colors":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}},"target":{"type":"number","minimum":1,"maximum":21}},"required":["background","colors"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"suggestions":{"type":"array","items":{"type":"object","properties":{"original":{"type":"string","maxLength":200000},"ratio":{"type":"number","minimum":1,"maximum":21},"suggested":{"type":"string","maxLength":200000},"suggestedRatio":{"type":"number","minimum":1,"maximum":21},"target":{"type":"number","minimum":1,"maximum":21},"meetsTarget":{"type":"boolean"},"targetAttainable":{"type":"boolean"}},"required":["original","ratio","suggested","suggestedRatio","target","meetsTarget","targetAttainable"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000}},"required":["suggestions"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"a11y.palette"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"background":"#ffffff","colors":["#aaaaaa"],"target":4.5},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"a11y.static_audit","name":"Run a bounded static accessibility audit","description":"Catch machine-detectable issues in an authorized page.","contract":"HTML or test-page handle → findings and coverage limits","category":"Accessibility and publishing checks","requirements":"Static checks do not prove full accessibility; test keyboard use and assistive technology separately.","proposedRuntime":"worker","existingTools":[],"pilot":false,"effort":"L","nameMCP":"a11y__static_audit","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"html":{"type":"string","maxLength":200000}},"required":["html"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"findings":{"type":"array","items":{"type":"string","maxLength":200000},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["findings","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"a11y.static_audit"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"html":"<html><img src=\"x\"></html>"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"a11y.keyboard_trace","name":"Audit a recorded keyboard flow","description":"Find focus traps and unreachable required controls.","contract":"trusted browser trace → keyboard-flow findings","category":"Accessibility and publishing checks","requirements":"Static checks do not prove full accessibility; test keyboard use and assistive technology separately.","proposedRuntime":"worker","existingTools":[],"pilot":false,"effort":"L","nameMCP":"a11y__keyboard_trace","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"events":{"type":"array","maxItems":2000,"items":{"type":"object","maxProperties":2000}}},"required":["events"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"findings":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":0,"maximum":9007199254740991},"issue":{"type":"string","maxLength":200000}},"required":["index","issue"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["findings","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"a11y.keyboard_trace"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"events":[{"key":"Tab","focusId":"a"},{"key":"Tab","focusId":"a"}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"publish.link_integrity","name":"Validate an artifact link bundle","description":"Ensure handoff links are scoped and unexpired.","contract":"tenant artifact links → accessible, expired or invalid states","category":"Accessibility and publishing checks","requirements":"Static checks do not prove full accessibility; test keyboard use and assistive technology separately.","proposedRuntime":"worker","existingTools":[],"pilot":false,"effort":"M","nameMCP":"publish__link_integrity","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"html":{"type":"string","maxLength":200000},"knownUrls":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}}},"required":["html","knownUrls"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"links":{"type":"array","items":{"type":"object","properties":{"href":{"type":"string","maxLength":200000},"known":{"type":"boolean"},"unsafe":{"type":"boolean"}},"required":["href","known","unsafe"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["links","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"publish.link_integrity"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"html":"<a href=\"/agents\">Agents</a>","knownUrls":["/agents"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"publish.bundle","name":"Prepare a text bundle manifest","description":"Validate portable relative file names, reject UNC/device/stream paths and ambiguous duplicates, then return supplied text files in a reviewable manifest. Creates no ZIP or filesystem artifacts.","contract":"approved artifacts → archive, manifest and hashes","category":"Accessibility and publishing checks","requirements":"Static checks do not prove full accessibility; test keyboard use and assistive technology separately.","proposedRuntime":"worker","existingTools":[],"pilot":false,"effort":"M","nameMCP":"publish__bundle","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"files":{"type":"array","maxItems":2000,"items":{"type":"object","properties":{"name":{"type":"string","maxLength":200000,"minLength":1},"text":{"type":"string","maxLength":200000}},"required":["name","text"],"additionalProperties":false}}},"required":["files"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200000,"pattern":"^(?![\\\\/])(?!.*[<>:\"|?*\\u0000-\\u001F\\u007F])(?!.*[\\\\/]$).+$"},"text":{"type":"string","maxLength":200000}},"required":["name","text"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"format":{"type":"string","maxLength":200000}},"required":["files","format"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"publish.bundle"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"files":[{"name":"report.md","text":"# Report"}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"dependency.semver","name":"Test a semantic version range","description":"Check whether a proposed dependency satisfies a range.","contract":"version + range → compatibility verdict","category":"Dependency and security inspection","requirements":"Inventory and advisories need observation dates; findings require reachability triage. No arbitrary scanning of third-party systems.","proposedRuntime":"network","existingTools":["semver-range-tester"],"pilot":false,"effort":"S","nameMCP":"dependency__semver","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"version":{"type":"string","maxLength":200000},"range":{"type":"string","maxLength":200000}},"required":["version","range"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"satisfies":{"type":"boolean"}},"required":["satisfies"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"dependency.semver"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"version":"1.2.3","range":"^1.0.0"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"security.csp","name":"Inspect a Content Security Policy","description":"Inspect a supplied CSP for broad sources and duplicate directives. The first occurrence of each directive wins; this bounded check does not simulate browser enforcement.","contract":"CSP text → findings and scope limits","category":"Dependency and security inspection","requirements":"Inventory and advisories need observation dates; findings require reachability triage. No arbitrary scanning of third-party systems.","proposedRuntime":"network","existingTools":["content-security-policy-analyzer"],"pilot":false,"effort":"M","nameMCP":"security__csp","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"policy":{"type":"string","maxLength":200000}},"required":["policy"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"directives":{"type":"object","maxProperties":2000,"additionalProperties":{"type":"array","items":{"type":"string","maxLength":200000},"maxItems":2000}},"findings":{"type":"array","items":{"type":"string","maxLength":200000},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["directives","findings","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"security.csp"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"policy":"default-src 'self'; object-src 'none'"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"dependency.lock_diff","name":"Compare dependency lockfiles","description":"Audit package additions and version changes.","contract":"two supported lockfiles → dependency diff","category":"Dependency and security inspection","requirements":"Inventory and advisories need observation dates; findings require reachability triage. No arbitrary scanning of third-party systems.","proposedRuntime":"network","existingTools":[],"pilot":false,"effort":"M","nameMCP":"dependency__lock_diff","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"before":{"type":"object","maxProperties":2000},"after":{"type":"object","maxProperties":2000}},"required":["before","after"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"changes":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"kind":{"const":"add"},"after":{"$ref":"#/$defs/json"}},"required":["path","kind","after"],"additionalProperties":false,"maxProperties":2000},{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"kind":{"const":"remove"},"before":{"$ref":"#/$defs/json"}},"required":["path","kind","before"],"additionalProperties":false,"maxProperties":2000},{"type":"object","properties":{"path":{"type":"string","maxLength":200000},"kind":{"const":"replace"},"before":{"$ref":"#/$defs/json"},"after":{"$ref":"#/$defs/json"}},"required":["path","kind","before","after"],"additionalProperties":false,"maxProperties":2000}]},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["changes","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"dependency.lock_diff"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"before":{"packages":{"a":"1"}},"after":{"packages":{"a":"2"}}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"dependency.sbom","name":"Generate an inventory SBOM","description":"Create an auditable package inventory.","contract":"supported lockfile → SBOM and unresolved packages","category":"Dependency and security inspection","requirements":"Inventory and advisories need observation dates; findings require reachability triage. No arbitrary scanning of third-party systems.","proposedRuntime":"network","existingTools":[],"pilot":false,"effort":"L","nameMCP":"dependency__sbom","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"packages":{"type":"array","maxItems":2000,"items":{"type":"object","maxProperties":2000}},"name":{"type":"string","maxLength":200000}},"required":["packages"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"sbom":{"type":"object","properties":{"bomFormat":{"const":"CycloneDX"},"specVersion":{"const":"1.6"},"version":{"const":1},"metadata":{"type":"object","properties":{"component":{"type":"object","properties":{"type":{"const":"application"},"name":{"type":"string","maxLength":200000}},"required":["type","name"],"additionalProperties":false,"maxProperties":2000}},"required":["component"],"additionalProperties":false,"maxProperties":2000},"components":{"type":"array","items":{"type":"object","properties":{"type":{"const":"library"},"name":{"type":"string","maxLength":200000},"version":{"type":"string","maxLength":200000},"purl":{"type":"string","maxLength":200000},"licenses":{"type":"array","items":{"type":"object","properties":{"license":{"type":"object","properties":{"id":{"type":"string","maxLength":200000}},"required":["id"],"additionalProperties":false,"maxProperties":2000}},"required":["license"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000}},"required":["type","name","version"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000}},"required":["bomFormat","specVersion","version","metadata","components"],"additionalProperties":false,"maxProperties":2000},"warning":{"type":"string","maxLength":200000}},"required":["sbom","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"dependency.sbom"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"packages":[{"name":"example","version":"1.0.0","license":"MIT"}],"name":"App"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"dependency.licenses","name":"Inspect declared license allowlists","description":"Compare caller-declared license identifiers with an exact allowlist; does not resolve SPDX expressions or provide legal advice.","contract":"package inventory + policy → declared licenses and missing evidence","category":"Dependency and security inspection","requirements":"Inventory and advisories need observation dates; findings require reachability triage. No arbitrary scanning of third-party systems.","proposedRuntime":"network","existingTools":[],"pilot":false,"effort":"L","nameMCP":"dependency__licenses","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"packages":{"type":"array","maxItems":2000,"items":{"type":"object","maxProperties":2000}},"allowed":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}}},"required":["packages","allowed"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"packages":{"type":"array","items":{"type":"object","properties":{"name":{"$ref":"#/$defs/json"},"license":{"anyOf":[{"type":"string","maxLength":200000},{"type":"null"}]},"verdict":{"type":"string","enum":["unknown","allow","review"]}},"required":["name","license","verdict"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["packages","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"dependency.licenses"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"packages":[{"name":"example","license":"MIT"}],"allowed":["MIT"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"security.sri_verify","name":"Verify subresource integrity","description":"Confirm a downloaded script matches a supplied digest.","contract":"bounded bytes + trusted SRI value → integrity verdict","category":"Dependency and security inspection","requirements":"Inventory and advisories need observation dates; findings require reachability triage. No arbitrary scanning of third-party systems.","proposedRuntime":"network","existingTools":[],"pilot":false,"effort":"S","nameMCP":"security__sri_verify","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"text":{"type":"string","maxLength":200000},"integrity":{"type":"string","maxLength":200000}},"required":["text","integrity"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"valid":{"type":"boolean"},"encoding":{"type":"string","maxLength":200000}},"required":["valid","encoding"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"security.sri_verify"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"text":"hello","integrity":"sha256-example"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"security.sarif","name":"Normalize static-analysis findings","description":"Consume findings from supported scanners consistently.","contract":"SARIF or scanner JSON → normalized findings","category":"Dependency and security inspection","requirements":"Inventory and advisories need observation dates; findings require reachability triage. No arbitrary scanning of third-party systems.","proposedRuntime":"network","existingTools":[],"pilot":false,"effort":"M","nameMCP":"security__sarif","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"findings":{"type":"array","maxItems":2000,"items":{"type":"object","maxProperties":2000}},"toolName":{"type":"string","maxLength":200000}},"required":["findings"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"sarif":{"type":"object","properties":{"version":{"const":"2.1.0"},"$schema":{"const":"https://json.schemastore.org/sarif-2.1.0.json"},"runs":{"type":"array","items":{"type":"object","properties":{"tool":{"type":"object","properties":{"driver":{"type":"object","properties":{"name":{"type":"string","maxLength":200000}},"required":["name"],"additionalProperties":false,"maxProperties":2000}},"required":["driver"],"additionalProperties":false,"maxProperties":2000},"results":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string","maxLength":200000},"level":{"type":"string","enum":["error","warning","note"]},"message":{"type":"object","properties":{"text":{"type":"string","maxLength":200000}},"required":["text"],"additionalProperties":false,"maxProperties":2000}},"required":["ruleId","level","message"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000}},"required":["tool","results"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000}},"required":["version","$schema","runs"],"additionalProperties":false,"maxProperties":2000}},"required":["sarif"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"security.sarif"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"findings":[{"ruleId":"example","message":"Review"}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"security.diff_scan","name":"Scan a supplied code diff for configured risks","description":"Flag credential patterns and risky code constructs.","contract":"diff + bounded rule set → findings and coverage notice","category":"Dependency and security inspection","requirements":"Inventory and advisories need observation dates; findings require reachability triage. No arbitrary scanning of third-party systems.","proposedRuntime":"network","existingTools":[],"pilot":false,"effort":"L","nameMCP":"security__diff_scan","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"text":{"type":"string","maxLength":200000}},"required":["text"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"findings":{"type":"array","items":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":9007199254740991},"end":{"type":"integer","minimum":0,"maximum":9007199254740991},"type":{"type":"string","maxLength":200000}},"required":["start","end","type"],"additionalProperties":false,"maxProperties":2000},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["findings","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"security.diff_scan"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"text":"+password=abcdefghijk"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"media.subtitle_convert","name":"Convert subtitle formats","description":"Convert validated plain SRT/WebVTT cues. Reject malformed input and warn that comments, cue settings and identifiers are omitted.","contract":"SRT or VTT + target → converted subtitles","category":"Media and multimodal workflows","requirements":"Bound codec time, memory and media duration; redact by verified regions; model output is a draft.","proposedRuntime":"worker","existingTools":["subtitle-converter"],"pilot":false,"effort":"M","nameMCP":"media__subtitle_convert","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"text":{"type":"string","maxLength":200000},"format":{"type":"string","enum":["srt","vtt"]}},"required":["text","format"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"text":{"type":"string","maxLength":200000},"warning":{"type":"string","maxLength":200000}},"required":["text","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"media.subtitle_convert"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"text":"1\n00:00:01,000 --> 00:00:02,000\nHello","format":"vtt"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"media.subtitle_validate","name":"Validate subtitle timestamps","description":"Validate 1–2,000 plain SRT/WebVTT cues with format-specific millisecond timestamps and nonempty text. Report all later cues overlapping earlier cues; style/region blocks are unsupported.","contract":"subtitle text → cue diagnostics","category":"Media and multimodal workflows","requirements":"Bound codec time, memory and media duration; redact by verified regions; model output is a draft.","proposedRuntime":"worker","existingTools":["subtitle-validator"],"pilot":false,"effort":"M","nameMCP":"media__subtitle_validate","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"text":{"type":"string","maxLength":200000}},"required":["text"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"valid":{"const":true},"count":{"type":"integer","minimum":1,"maximum":2000},"overlaps":{"type":"array","items":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxItems":2000}},"required":["valid","count","overlaps"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"media.subtitle_validate"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"text":"1\n00:00:01,000 --> 00:00:02,000\nHello"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"media.subtitle_shift","name":"Shift subtitle timestamps","description":"Shift validated plain subtitle cues by a whole-millisecond offset. Preserve cue durations and warn that comments, cue settings and identifiers are omitted.","contract":"subtitles + time shift → updated cues","category":"Media and multimodal workflows","requirements":"Bound codec time, memory and media duration; redact by verified regions; model output is a draft.","proposedRuntime":"worker","existingTools":["subtitle-timing-shifter"],"pilot":false,"effort":"M","nameMCP":"media__subtitle_shift","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"text":{"type":"string","maxLength":200000},"seconds":{"type":"number","minimum":-86400,"maximum":86400}},"required":["text","seconds"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"text":{"type":"string","maxLength":200000},"warning":{"type":"string","maxLength":200000}},"required":["text","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"media.subtitle_shift"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"text":"1\n00:00:01,000 --> 00:00:02,000\nHello","seconds":1},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"workflow.validate","name":"Validate a bounded workflow graph","description":"Detect cycles, unsupported operations and missing bindings.","contract":"DAG + trusted tool registry → validation findings","category":"Workflow and authorized integrations","requirements":"Connector credentials live outside model context. External writes use least-privilege grants and explicit human authorization.","proposedRuntime":"stateful","existingTools":[],"pilot":false,"effort":"M","nameMCP":"workflow__validate","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"steps":{"type":"array","maxItems":2000,"items":{"type":"object","maxProperties":2000}}},"required":["steps"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"valid":{"type":"boolean"},"findings":{"type":"array","items":{"type":"string","maxLength":200000},"maxItems":2000}},"required":["valid","findings"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"workflow.validate"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"steps":[{"id":"read","dependsOn":[]},{"id":"validate","dependsOn":["read"]}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"workflow.plan","name":"Preview a typed workflow","description":"Check dependencies and budgets before execution.","contract":"validated DAG + policies → execution plan and estimates","category":"Workflow and authorized integrations","requirements":"Connector credentials live outside model context. External writes use least-privilege grants and explicit human authorization.","proposedRuntime":"stateful","existingTools":[],"pilot":false,"effort":"L","nameMCP":"workflow__plan","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"steps":{"type":"array","maxItems":2000,"items":{"type":"object","maxProperties":2000}}},"required":["steps"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"order":{"type":"array","items":{"type":"string","maxLength":200000},"maxItems":2000},"executed":{"const":false}},"required":["order","executed"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"workflow.plan"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"steps":[{"id":"read","dependsOn":[]},{"id":"validate","dependsOn":["read"]}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"workflow.batch","name":"Partition items into bounded batches","description":"Group supplied items into batches for a caller-controlled workflow. This planning tool executes no batch operations.","contract":"allowed tool + inputs + cap → per-item results","category":"Workflow and authorized integrations","requirements":"Connector credentials live outside model context. External writes use least-privilege grants and explicit human authorization.","proposedRuntime":"stateful","existingTools":[],"pilot":false,"effort":"L","nameMCP":"workflow__batch","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"items":{"type":"array","maxItems":2000},"batchSize":{"type":"integer","minimum":1,"maximum":100}},"required":["items","batchSize"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"batches":{"type":"array","items":{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":100},"maxItems":2000},"executed":{"const":false}},"required":["batches","executed"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"workflow.batch"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"items":[1,2,3],"batchSize":2},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"workflow.resume","name":"Plan remaining workflow steps","description":"Remove caller-labelled completed steps from a supplied plan. Does not persist or resume jobs; recheck grants before execution.","contract":"run + checkpoint + current grants → resumed state","category":"Workflow and authorized integrations","requirements":"Connector credentials live outside model context. External writes use least-privilege grants and explicit human authorization.","proposedRuntime":"stateful","existingTools":[],"pilot":false,"effort":"L","nameMCP":"workflow__resume","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"steps":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}},"completed":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}}},"required":["steps","completed"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"remaining":{"type":"array","items":{"type":"string","maxLength":200000},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["remaining","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"workflow.resume"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"steps":["read","validate"],"completed":["read"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"integration.webhook_prepare","name":"Prepare a reviewable webhook delivery","description":"Show destination and payload before an authorized write.","contract":"destination + minimized payload → delivery preview","category":"Workflow and authorized integrations","requirements":"Connector credentials live outside model context. External writes use least-privilege grants and explicit human authorization.","proposedRuntime":"stateful","existingTools":[],"pilot":false,"effort":"M","nameMCP":"integration__webhook_prepare","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"url":{"type":"string","maxLength":200000},"payload":{"type":"object","maxProperties":2000}},"required":["url","payload"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"method":{"const":"POST"},"url":{"type":"string","maxLength":200000},"payload":{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}},"state":{"const":"draft"},"sent":{"const":false}},"required":["method","url","payload","state","sent"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"integration.webhook_prepare"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"url":"https://example.com/webhook","payload":{"event":"test"}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"integration.email_draft","name":"Build a structured email draft","description":"Prepare recipients, subject and body for human review.","contract":"verified intent + recipient context → draft object","category":"Workflow and authorized integrations","requirements":"Connector credentials live outside model context. External writes use least-privilege grants and explicit human authorization.","proposedRuntime":"stateful","existingTools":[],"pilot":false,"effort":"M","nameMCP":"integration__email_draft","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"to":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}},"subject":{"type":"string","maxLength":500},"body":{"type":"string","maxLength":200000}},"required":["to","subject","body"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"draft":{"type":"object","properties":{"to":{"type":"array","items":{"type":"string","maxLength":200000},"maxItems":2000},"subject":{"type":"string","maxLength":200000},"body":{"type":"string","maxLength":200000}},"required":["to","subject","body"],"additionalProperties":false,"maxProperties":2000},"sent":{"const":false}},"required":["draft","sent"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"integration.email_draft"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"to":["test@example.com"],"subject":"Draft","body":"Hello"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"integration.calendar_draft","name":"Build a calendar-event draft","description":"Resolve timezone and duration before a handoff.","contract":"event details + zone → event draft and conflicts to review","category":"Workflow and authorized integrations","requirements":"Connector credentials live outside model context. External writes use least-privilege grants and explicit human authorization.","proposedRuntime":"stateful","existingTools":[],"pilot":false,"effort":"M","nameMCP":"integration__calendar_draft","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"title":{"type":"string","maxLength":200000},"start":{"type":"string","maxLength":200000},"end":{"type":"string","maxLength":200000},"zone":{"type":"string","maxLength":200000}},"required":["title","start","end","zone"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"draft":{"type":"object","properties":{"title":{"type":"string","maxLength":200000},"start":{"type":"string","maxLength":200000},"end":{"type":"string","maxLength":200000},"zone":{"type":"string","maxLength":200000}},"required":["title","start","end","zone"],"additionalProperties":false,"maxProperties":2000},"durationMinutes":{"type":"number","exclusiveMinimum":0},"created":{"const":false}},"required":["draft","durationMinutes","created"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"integration.calendar_draft"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"title":"Meeting","start":"2026-10-05T09:00:00-05:00","end":"2026-10-05T10:00:00-05:00","zone":"America/Bogota"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}},{"id":"integration.connector_scopes","name":"Compare supplied connector scope lists","description":"Compare caller-supplied granted and required scopes. Does not authenticate, connect to, or independently inspect an external account.","contract":"authorized connector reference → granted and required scopes","category":"Workflow and authorized integrations","requirements":"Connector credentials live outside model context. External writes use least-privilege grants and explicit human authorization.","proposedRuntime":"stateful","existingTools":[],"pilot":false,"effort":"L","nameMCP":"integration__connector_scopes","version":"1.0.0","status":"implemented","runtime":"browser-or-local","inputSchema":{"type":"object","properties":{"granted":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}},"required":{"type":"array","maxItems":2000,"items":{"type":"string","maxLength":200000}}},"required":["granted","required"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"data":{"type":"object","properties":{"missing":{"type":"array","items":{"type":"string","maxLength":200000},"maxItems":2000},"warning":{"type":"string","maxLength":200000}},"required":["missing","warning"],"additionalProperties":false,"maxProperties":2000},"metadata":{"type":"object","properties":{"tool":{"const":"integration.connector_scopes"},"version":{"const":"1.0.0"},"runtime":{"type":"string","enum":["local","browser","server"]},"elapsedMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"retained":{"const":false}},"required":["tool","version","runtime","retained"],"additionalProperties":false,"maxProperties":2000}},"required":["data","metadata"],"additionalProperties":false,"$defs":{"json":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string","maxLength":200000},{"type":"array","items":{"$ref":"#/$defs/json"},"maxItems":2000},{"type":"object","maxProperties":2000,"additionalProperties":{"$ref":"#/$defs/json"}}]}}},"example":{"granted":["read"],"required":["read","write"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"limits":{"inputBytes":262144,"outputBytes":524288,"maxDepth":20,"maxNodes":20000,"maxArray":2000}}]}