{"schema_version":"1.0.0","generated":"2026-09-13T00:52:01.299Z","public":true,"gated":false,"service_count":330,"x402_services_live":true,"x402_service_count":330,"resource_kind":"pay_per_use_api_services","deployed_service_count":330,"release_candidate_service_count":0,"current_deployment_truth":"approved_public_service_projection_live_on_signalharness_netlify","discovery_sql":0,"x402":{"version":2,"scheme":"exact","network":"eip155:8453","asset_symbol":"USDC","asset_address":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient_source":"PAYMENT-REQUIRED challenge","unpaid_http_status":402},"routes":{"static_index":"https://signalharness.ai/agent/services.json","runtime_discovery":"https://signalharness.ai/api/agent/services/discovery","runtime_status":"https://signalharness.ai/api/agent/services/status","openapi":"https://signalharness.ai/openapi.json","bazaar_metadata":"https://signalharness.ai/api/agent/services/bazaar","mcp":"https://signalharness.ai/api/agent/services/mcp","directory":"https://signalharness.ai/services/","well_known":"https://signalharness.ai/.well-known/x402"},"services":[{"service_id":"url_to_markdown","name":"URL to Markdown","description":"Fetches one public HTTPS HTML resource without JavaScript execution and returns cleaned Markdown with source integrity metadata.","when_to_use":"Use this service when you need this capability: fetches one public HTTPS HTML resource without JavaScript execution and returns cleaned Markdown with source integrity metadata.","category":"content_conversion","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/url_to_markdown/invoke","method":"POST","planned_invoke_route":"/api/agent/services/url_to_markdown/invoke","mcp_tool":"url_to_markdown","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["url"],"properties":{"url":{"type":"string","pattern":"^https://","minLength":9,"maxLength":2048}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":6,"required":["markdown","sourceUrl","contentType","byteCount","sha256"],"properties":{"markdown":{"type":"string","minLength":0,"maxLength":65536},"title":{"type":"string","minLength":0,"maxLength":1024},"sourceUrl":{"type":"string","minLength":9,"maxLength":2048},"contentType":{"type":"string","minLength":1,"maxLength":256},"byteCount":{"type":"integer","minimum":0,"maximum":10485760},"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","minLength":64,"maxLength":64}}},"input_example":{"url":"https://example.com/"},"output_example":{"markdown":"# Example\n\nNormalized caller-supplied content.","sourceUrl":"example00","contentType":"Example caller-supplied content.","byteCount":0,"sha256":"0000000000000000000000000000000000000000000000000000000000000000"}},{"service_id":"web_extract","name":"Web Extract","description":"Fetches one public HTTPS HTML resource without JavaScript execution and returns deterministic normalized page structure and metadata.","when_to_use":"Use this service when you need this capability: fetches one public HTTPS HTML resource without JavaScript execution and returns deterministic normalized page structure and metadata.","category":"web_extraction","version":"1.0.0","amount_atomic":"20000","price_usdc":"0.02","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/web_extract/invoke","method":"POST","planned_invoke_route":"/api/agent/services/web_extract/invoke","mcp_tool":"web_extract","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["url"],"properties":{"url":{"type":"string","pattern":"^https://","minLength":9,"maxLength":2048}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":8,"maxProperties":12,"required":["sourceUrl","headings","links","images","metadata","openGraph","jsonLd","visibleText"],"properties":{"sourceUrl":{"type":"string","minLength":9,"maxLength":2048},"title":{"type":"string","minLength":0,"maxLength":1024},"description":{"type":"string","minLength":0,"maxLength":4096},"canonicalUrl":{"type":"string","minLength":1,"maxLength":2048},"headings":{"type":"array","minItems":0,"maxItems":128,"items":{"type":"object","additionalProperties":false,"minProperties":2,"maxProperties":2,"required":["level","text"],"properties":{"level":{"type":"integer","minimum":1,"maximum":6},"text":{"type":"string","minLength":0,"maxLength":2048}}}},"links":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"object","additionalProperties":false,"minProperties":2,"maxProperties":2,"required":["text","href"],"properties":{"text":{"type":"string","minLength":0,"maxLength":2048},"href":{"type":"string","minLength":1,"maxLength":2048}}}},"images":{"type":"array","minItems":0,"maxItems":128,"items":{"type":"object","additionalProperties":false,"minProperties":2,"maxProperties":3,"required":["alt","src"],"properties":{"alt":{"type":"string","minLength":0,"maxLength":2048},"src":{"type":"string","minLength":1,"maxLength":2048},"title":{"type":"string","minLength":0,"maxLength":2048}}}},"metadata":{"type":"array","minItems":0,"maxItems":128,"items":{"type":"object","additionalProperties":false,"minProperties":2,"maxProperties":2,"required":["name","value"],"properties":{"name":{"type":"string","minLength":1,"maxLength":256},"value":{"type":"string","minLength":0,"maxLength":8192}}}},"openGraph":{"type":"array","minItems":0,"maxItems":128,"items":{"type":"object","additionalProperties":false,"minProperties":2,"maxProperties":2,"required":["name","value"],"properties":{"name":{"type":"string","minLength":1,"maxLength":256},"value":{"type":"string","minLength":0,"maxLength":8192}}}},"jsonLd":{"type":"array","minItems":0,"maxItems":32,"items":{"type":"string","minLength":1,"maxLength":32768}},"visibleText":{"type":"string","minLength":0,"maxLength":65536},"warnings":{"type":"array","minItems":0,"maxItems":32,"items":{"type":"string","minLength":1,"maxLength":1024}}}},"input_example":{"url":"https://example.com/"},"output_example":{"sourceUrl":"example00","headings":[{"level":1,"text":"Example caller-supplied content."}],"links":[{"text":"Example caller-supplied content.","href":"example"}],"images":[{"alt":"example","src":"example"}],"metadata":[{"name":"example","value":"example"}],"openGraph":[{"name":"example","value":"example"}],"jsonLd":["{\"example\":\"schema-valid caller-supplied data\"}"],"visibleText":"example"}},{"service_id":"structured_extract","name":"Structured Extract","description":"Fetches one public HTTPS HTML resource and performs explicit deterministic selector, attribute, metadata, or JSON-LD path extraction.","when_to_use":"Use this service when you need this capability: fetches one public HTTPS HTML resource and performs explicit deterministic selector, attribute, metadata, or JSON-LD path extraction.","category":"deterministic_extraction","version":"1.0.0","amount_atomic":"20000","price_usdc":"0.02","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/structured_extract/invoke","method":"POST","planned_invoke_route":"/api/agent/services/structured_extract/invoke","mcp_tool":"structured_extract","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":2,"maxProperties":2,"required":["url","fields"],"properties":{"url":{"type":"string","pattern":"^https://","minLength":9,"maxLength":2048},"fields":{"type":"array","minItems":1,"maxItems":32,"items":{"type":"object","additionalProperties":false,"minProperties":2,"maxProperties":7,"required":["name","kind"],"properties":{"name":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,63}$","minLength":1,"maxLength":64},"kind":{"type":"string","enum":["text","attribute","metadata","json_ld"],"minLength":4,"maxLength":9},"selector":{"type":"string","minLength":1,"maxLength":256},"attribute":{"type":"string","minLength":1,"maxLength":128},"metadataKey":{"type":"string","minLength":1,"maxLength":256},"path":{"type":"string","minLength":1,"maxLength":256},"all":{"type":"boolean"}}}}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":3,"maxProperties":3,"required":["sourceUrl","results","warnings"],"properties":{"sourceUrl":{"type":"string","minLength":9,"maxLength":2048},"results":{"type":"array","minItems":0,"maxItems":32,"items":{"type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["name","kind","matched","values"],"properties":{"name":{"type":"string","minLength":1,"maxLength":64},"kind":{"type":"string","enum":["text","attribute","metadata","json_ld"],"minLength":4,"maxLength":9},"matched":{"type":"integer","minimum":0,"maximum":256},"values":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"string","minLength":0,"maxLength":32768}}}}},"warnings":{"type":"array","minItems":0,"maxItems":32,"items":{"type":"string","minLength":1,"maxLength":1024}}}},"input_example":{"url":"https://example.com/","fields":[{"name":"heading","kind":"text","selector":"h1","all":false}]},"output_example":{"sourceUrl":"example00","results":[{"name":"example","kind":"text","matched":0,"values":["example"]}],"warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"pdf_extract","name":"PDF Extract","description":"Fetches one bounded public HTTPS PDF and extracts text and metadata without OCR or executing embedded content.","when_to_use":"Use this service when you need this capability: fetches one bounded public HTTPS PDF and extracts text and metadata without OCR or executing embedded content.","category":"document_extraction","version":"1.0.0","amount_atomic":"30000","price_usdc":"0.03","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/pdf_extract/invoke","method":"POST","planned_invoke_route":"/api/agent/services/pdf_extract/invoke","mcp_tool":"pdf_extract","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["url"],"properties":{"url":{"type":"string","pattern":"^https://","minLength":9,"maxLength":2048}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":10,"maxProperties":10,"required":["status","text","markdown","pageCount","metadata","sourceUrl","contentType","byteCount","sha256","warnings"],"properties":{"status":{"type":"string","enum":["OK","OCR_REQUIRED"],"minLength":2,"maxLength":12},"text":{"type":"string","minLength":0,"maxLength":65536},"markdown":{"type":"string","minLength":0,"maxLength":65536},"pageCount":{"type":"integer","minimum":0,"maximum":100},"metadata":{"type":"object","additionalProperties":false,"minProperties":0,"maxProperties":8,"required":[],"properties":{"title":{"type":"string","minLength":0,"maxLength":1024},"author":{"type":"string","minLength":0,"maxLength":1024},"subject":{"type":"string","minLength":0,"maxLength":2048},"keywords":{"type":"string","minLength":0,"maxLength":4096},"creator":{"type":"string","minLength":0,"maxLength":1024},"producer":{"type":"string","minLength":0,"maxLength":1024},"creationDate":{"type":"string","minLength":0,"maxLength":128},"modificationDate":{"type":"string","minLength":0,"maxLength":128}}},"sourceUrl":{"type":"string","minLength":9,"maxLength":2048},"contentType":{"type":"string","minLength":1,"maxLength":256},"byteCount":{"type":"integer","minimum":0,"maximum":10485760},"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","minLength":64,"maxLength":64},"warnings":{"type":"array","minItems":0,"maxItems":32,"items":{"type":"string","minLength":1,"maxLength":1024}}}},"input_example":{"url":"https://example.com/document.pdf"},"output_example":{"status":"OK","text":"Example caller-supplied content.","markdown":"# Example\n\nNormalized caller-supplied content.","pageCount":0,"metadata":{},"sourceUrl":"example00","contentType":"Example caller-supplied content.","byteCount":0,"sha256":"0000000000000000000000000000000000000000000000000000000000000000","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"json_schema_validate","name":"JSON Schema Validate","description":"Validates a supplied canonical JSON value against a supplied bounded JSON Schema locally with normalized deterministic errors.","when_to_use":"Use this service when you need this capability: validates a supplied canonical JSON value against a supplied bounded JSON Schema locally with normalized deterministic errors.","category":"data_validation","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/json_schema_validate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/json_schema_validate/invoke","mcp_tool":"json_schema_validate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":2,"maxProperties":2,"required":["value","schema"],"properties":{"value":{"description":"The bounded JSON value to validate.","type":["object","array","string","number","boolean","null"]},"schema":{"description":"The bounded JSON Schema object or boolean schema.","type":["object","boolean"]}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["valid","errors","failingPaths","schemaPaths"],"properties":{"valid":{"type":"boolean"},"errors":{"type":"array","minItems":0,"maxItems":64,"items":{"type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["keyword","instancePath","schemaPath","message","paramsJson"],"properties":{"keyword":{"type":"string","minLength":1,"maxLength":128},"instancePath":{"type":"string","minLength":0,"maxLength":2048},"schemaPath":{"type":"string","minLength":0,"maxLength":2048},"message":{"type":"string","minLength":1,"maxLength":2048},"paramsJson":{"type":"string","minLength":2,"maxLength":8192}}}},"failingPaths":{"type":"array","minItems":0,"maxItems":64,"items":{"type":"string","minLength":0,"maxLength":2048}},"schemaPaths":{"type":"array","minItems":0,"maxItems":64,"items":{"type":"string","minLength":0,"maxLength":2048}}}},"input_example":{"value":{"example":true},"schema":{"type":"object"}},"output_example":{"valid":false,"errors":[{"keyword":"example","instancePath":"example","schemaPath":"example","message":"example","paramsJson":"example"}],"failingPaths":["example"],"schemaPaths":["example"]}},{"service_id":"artifact_verify","name":"Artifact Verify","description":"Fetches one public HTTPS artifact without executing it and verifies its SHA-256, MIME type, and byte size against supplied expectations.","when_to_use":"Use this service when you need this capability: fetches one public HTTPS artifact without executing it and verifies its SHA-256, MIME type, and byte size against supplied expectations.","category":"artifact_verification","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/artifact_verify/invoke","method":"POST","planned_invoke_route":"/api/agent/services/artifact_verify/invoke","mcp_tool":"artifact_verify","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":4,"required":["url"],"properties":{"url":{"type":"string","pattern":"^https://","minLength":9,"maxLength":2048},"expectedSha256":{"type":"string","pattern":"^[0-9a-fA-F]{64}$","minLength":64,"maxLength":64},"expectedMimeType":{"type":"string","pattern":"^[A-Za-z0-9!#$&^_.+-]+/[A-Za-z0-9!#$&^_.+-]+$","minLength":3,"maxLength":256},"expectedByteSize":{"type":"integer","minimum":0,"maximum":10485760}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":3,"maxProperties":8,"required":["status","calculatedSha256","byteSize"],"properties":{"status":{"type":"string","enum":["VERIFIED","MISMATCH","INSPECTED"],"minLength":8,"maxLength":9},"sourceUrl":{"type":"string","minLength":9,"maxLength":2048},"calculatedSha256":{"type":"string","pattern":"^[0-9a-f]{64}$","minLength":64,"maxLength":64},"hashMatch":{"type":"boolean"},"mimeType":{"type":"string","minLength":1,"maxLength":256},"mimeMatch":{"type":"boolean"},"byteSize":{"type":"integer","minimum":0,"maximum":10485760},"byteSizeMatch":{"type":"boolean"}}},"input_example":{"url":"https://example.com/artifact.bin"},"output_example":{"status":"VERIFIED","calculatedSha256":"0000000000000000000000000000000000000000000000000000000000000000","byteSize":0}},{"service_id":"web_metadata_extract","name":"Web Metadata Extract","description":"Extracts bounded document metadata, social cards, canonical links, robots directives, language alternates, icons, and JSON-LD from public HTTPS or supplied HTML.","when_to_use":"Use this service when you need this capability: extracts bounded document metadata, social cards, canonical links, robots directives, language alternates, icons, and JSON-LD from public HTTPS or supplied HTML.","category":"web_metadata","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/web_metadata_extract/invoke","method":"POST","planned_invoke_route":"/api/agent/services/web_metadata_extract/invoke","mcp_tool":"web_metadata_extract","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":2,"required":[],"properties":{"url":{"type":"string","pattern":"^https://","minLength":9,"maxLength":2048},"html":{"type":"string","minLength":1,"maxLength":65536},"baseUrl":{"type":"string","pattern":"^https://","minLength":9,"maxLength":2048}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":8,"maxProperties":13,"required":["contentType","robots","openGraph","twitter","jsonLd","alternateLanguages","icons","warnings"],"properties":{"sourceUrl":{"type":"string","minLength":9,"maxLength":2048},"contentType":{"type":"string","minLength":3,"maxLength":256},"title":{"type":"string","minLength":1,"maxLength":1024},"description":{"type":"string","minLength":1,"maxLength":4096},"canonicalUrl":{"type":"string","minLength":1,"maxLength":2048},"language":{"type":"string","minLength":1,"maxLength":64},"robots":{"type":"array","minItems":0,"maxItems":128,"items":{"type":"string","minLength":1,"maxLength":256}},"openGraph":{"type":"array","minItems":0,"maxItems":128,"items":{"type":"object","additionalProperties":false,"minProperties":2,"maxProperties":2,"required":["name","value"],"properties":{"name":{"type":"string","minLength":1,"maxLength":256},"value":{"type":"string","minLength":1,"maxLength":8192}}}},"twitter":{"type":"array","minItems":0,"maxItems":128,"items":{"type":"object","additionalProperties":false,"minProperties":2,"maxProperties":2,"required":["name","value"],"properties":{"name":{"type":"string","minLength":1,"maxLength":256},"value":{"type":"string","minLength":1,"maxLength":8192}}}},"jsonLd":{"type":"array","minItems":0,"maxItems":32,"items":{"type":"string","minLength":1,"maxLength":32768}},"alternateLanguages":{"type":"array","minItems":0,"maxItems":128,"items":{"type":"object","additionalProperties":false,"minProperties":2,"maxProperties":2,"required":["language","href"],"properties":{"language":{"type":"string","minLength":1,"maxLength":64},"href":{"type":"string","minLength":1,"maxLength":2048}}}},"icons":{"type":"array","minItems":0,"maxItems":128,"items":{"type":"object","additionalProperties":false,"minProperties":3,"maxProperties":3,"required":["relation","sizes","href"],"properties":{"relation":{"type":"string","minLength":1,"maxLength":64},"sizes":{"type":"string","minLength":0,"maxLength":128},"href":{"type":"string","minLength":1,"maxLength":2048}}}},"warnings":{"type":"array","minItems":0,"maxItems":32,"items":{"type":"string","minLength":1,"maxLength":1024}}}},"input_example":{"url":"https://example.com/"},"output_example":{"contentType":"Example caller-supplied content.","robots":["example"],"openGraph":[{"name":"example","value":"example"}],"twitter":[{"name":"example","value":"example"}],"jsonLd":["{\"example\":\"schema-valid caller-supplied data\"}"],"alternateLanguages":[{"language":"example","href":"example"}],"icons":[{"relation":"example","sizes":"example","href":"example"}],"warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"structured_diff","name":"Structured Diff","description":"Computes a deterministic bounded structural difference between two JSON values using escaped JSON Pointer paths and index-based array comparison.","when_to_use":"Use this service when you need this capability: computes a deterministic bounded structural difference between two JSON values using escaped JSON Pointer paths and index-based array comparison.","category":"data_comparison","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/structured_diff/invoke","method":"POST","planned_invoke_route":"/api/agent/services/structured_diff/invoke","mcp_tool":"structured_diff","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":2,"maxProperties":2,"required":["before","after"],"properties":{"before":{"type":["object","array","string","number","boolean","null"]},"after":{"type":["object","array","string","number","boolean","null"]}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["added","removed","changed","unchangedCount","summary"],"properties":{"added":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"object","additionalProperties":false,"minProperties":2,"maxProperties":2,"required":["path","value"],"properties":{"path":{"type":"string","minLength":0,"maxLength":2048},"value":{"type":["object","array","string","number","boolean","null"]}}}},"removed":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"object","additionalProperties":false,"minProperties":2,"maxProperties":2,"required":["path","value"],"properties":{"path":{"type":"string","minLength":0,"maxLength":2048},"value":{"type":["object","array","string","number","boolean","null"]}}}},"changed":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"object","additionalProperties":false,"minProperties":3,"maxProperties":3,"required":["path","before","after"],"properties":{"path":{"type":"string","minLength":0,"maxLength":2048},"before":{"type":["object","array","string","number","boolean","null"]},"after":{"type":["object","array","string","number","boolean","null"]}}}},"unchangedCount":{"type":"integer","minimum":0,"maximum":8192},"summary":{"type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["added","removed","changed","total"],"properties":{"added":{"type":"integer","minimum":0,"maximum":2048},"removed":{"type":"integer","minimum":0,"maximum":2048},"changed":{"type":"integer","minimum":0,"maximum":2048},"total":{"type":"integer","minimum":0,"maximum":2048}}}}},"input_example":{"before":{"version":1},"after":{"version":2}},"output_example":{"added":[{"path":"example","value":{}}],"removed":[{"path":"example","value":{}}],"changed":[{"path":"example","before":{},"after":{}}],"unchangedCount":0,"summary":{"added":0,"removed":0,"changed":0,"total":0}}},{"service_id":"json_repair_normalize","name":"JSON Repair Normalize","description":"Conservatively repairs common JSON formatting defects, rejects ambiguous duplicate or unsafe keys, and emits deterministic canonical JSON.","when_to_use":"Use this service when you need this capability: conservatively repairs common JSON formatting defects, rejects ambiguous duplicate or unsafe keys, and emits deterministic canonical JSON.","category":"data_normalization","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/json_repair_normalize/invoke","method":"POST","planned_invoke_route":"/api/agent/services/json_repair_normalize/invoke","mcp_tool":"json_repair_normalize","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["text"],"properties":{"text":{"type":"string","minLength":1,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["normalized","value","repairs","duplicateKeys"],"properties":{"normalized":{"type":"string","minLength":1,"maxLength":65536},"value":{"type":["object","array","string","number","boolean","null"]},"repairs":{"type":"array","minItems":0,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":64}},"duplicateKeys":{"type":"array","minItems":0,"maxItems":64,"items":{"type":"string","minLength":1,"maxLength":256}}}},"input_example":{"text":"{example: true,}"},"output_example":{"normalized":"example","value":{},"repairs":["example"],"duplicateKeys":["example"]}},{"service_id":"html_table_extract","name":"HTML Table Extract","description":"Extracts bounded HTML tables into deterministic normalized rows with captions, inferred headers, spans, text, and links.","when_to_use":"Use this service when you need this capability: extracts bounded HTML tables into deterministic normalized rows with captions, inferred headers, spans, text, and links.","category":"web_structure","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/html_table_extract/invoke","method":"POST","planned_invoke_route":"/api/agent/services/html_table_extract/invoke","mcp_tool":"html_table_extract","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":2,"required":[],"properties":{"url":{"type":"string","pattern":"^https://","minLength":9,"maxLength":2048},"html":{"type":"string","minLength":1,"maxLength":65536},"baseUrl":{"type":"string","pattern":"^https://","minLength":9,"maxLength":2048}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":3,"maxProperties":3,"required":["tableCount","tables","warnings"],"properties":{"tableCount":{"type":"integer","minimum":0,"maximum":64},"tables":{"type":"array","minItems":0,"maxItems":64,"items":{"type":["object"]}},"warnings":{"type":"array","minItems":0,"maxItems":32,"items":{"type":"string","minLength":1,"maxLength":1024}}}},"input_example":{"html":"<table><tr><th>Name</th></tr><tr><td>Example</td></tr></table>"},"output_example":{"tableCount":0,"tables":[{}],"warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"document_diff","name":"Document Diff","description":"Compares text or Markdown by deterministic heading-aware sections without semantic inference or an LLM.","when_to_use":"Use this service when you need this capability: compares text or Markdown by deterministic heading-aware sections without semantic inference or an LLM.","category":"document_comparison","version":"1.0.0","amount_atomic":"20000","price_usdc":"0.02","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/document_diff/invoke","method":"POST","planned_invoke_route":"/api/agent/services/document_diff/invoke","mcp_tool":"document_diff","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":2,"maxProperties":2,"required":["before","after"],"properties":{"before":{"type":"string","minLength":0,"maxLength":65536},"after":{"type":"string","minLength":0,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":10,"maxProperties":10,"required":["beforeHash","afterHash","beforeLineCount","afterLineCount","beforeSectionCount","afterSectionCount","addedSections","removedSections","changedSections","summary"],"properties":{"beforeHash":{"type":"string","pattern":"^[0-9a-f]{64}$","minLength":64,"maxLength":64},"afterHash":{"type":"string","pattern":"^[0-9a-f]{64}$","minLength":64,"maxLength":64},"beforeLineCount":{"type":"integer","minimum":0,"maximum":100000},"afterLineCount":{"type":"integer","minimum":0,"maximum":100000},"beforeSectionCount":{"type":"integer","minimum":0,"maximum":2000},"afterSectionCount":{"type":"integer","minimum":0,"maximum":2000},"addedSections":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["heading","text","hash","lineCount"],"properties":{"heading":{"type":"string","minLength":1,"maxLength":8192},"text":{"type":"string","minLength":0,"maxLength":65536},"hash":{"type":"string","minLength":64,"maxLength":64},"lineCount":{"type":"integer","minimum":0,"maximum":100000}}}},"removedSections":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["heading","text","hash","lineCount"],"properties":{"heading":{"type":"string","minLength":1,"maxLength":8192},"text":{"type":"string","minLength":0,"maxLength":65536},"hash":{"type":"string","minLength":64,"maxLength":64},"lineCount":{"type":"integer","minimum":0,"maximum":100000}}}},"changedSections":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["heading","beforeHash","afterHash","beforeText","afterText"],"properties":{"heading":{"type":"string","minLength":1,"maxLength":8192},"beforeHash":{"type":"string","minLength":64,"maxLength":64},"afterHash":{"type":"string","minLength":64,"maxLength":64},"beforeText":{"type":"string","minLength":0,"maxLength":65536},"afterText":{"type":"string","minLength":0,"maxLength":65536}}}},"summary":{"type":"object","additionalProperties":false,"minProperties":3,"maxProperties":3,"required":["added","removed","changed"],"properties":{"added":{"type":"integer","minimum":0,"maximum":2000},"removed":{"type":"integer","minimum":0,"maximum":2000},"changed":{"type":"integer","minimum":0,"maximum":2000}}}}},"input_example":{"before":"# Before","after":"# After"},"output_example":{"beforeHash":"0000000000000000000000000000000000000000000000000000000000000000","afterHash":"0000000000000000000000000000000000000000000000000000000000000000","beforeLineCount":0,"afterLineCount":0,"beforeSectionCount":0,"afterSectionCount":0,"addedSections":[{"heading":"example","text":"Example caller-supplied content.","hash":"example000000000000000000000000000000000000000000000000000000000","lineCount":0}],"removedSections":[{"heading":"example","text":"Example caller-supplied content.","hash":"example000000000000000000000000000000000000000000000000000000000","lineCount":0}],"changedSections":[{"heading":"example","beforeHash":"example000000000000000000000000000000000000000000000000000000000","afterHash":"example000000000000000000000000000000000000000000000000000000000","beforeText":"example","afterText":"example"}],"summary":{"added":0,"removed":0,"changed":0}}},{"service_id":"url_discovery_audit","name":"URL Discovery Audit","description":"Performs a bounded deterministic audit of autonomous-agent and search discovery resources for a public HTTPS URL.","when_to_use":"Use this service when you need this capability: performs a bounded deterministic audit of autonomous-agent and search discovery resources for a public HTTPS URL.","category":"discovery_audit","version":"1.0.0","amount_atomic":"20000","price_usdc":"0.02","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/url_discovery_audit/invoke","method":"POST","planned_invoke_route":"/api/agent/services/url_discovery_audit/invoke","mcp_tool":"url_discovery_audit","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["url"],"properties":{"url":{"type":"string","pattern":"^https://","minLength":9,"maxLength":2048}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["url","checks","discoveredResourceUrls","summary"],"properties":{"url":{"type":"string","minLength":9,"maxLength":2048},"checks":{"type":"array","minItems":1,"maxItems":32,"items":{"type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["id","status","detail","url"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128},"status":{"type":"string","enum":["pass","warn","fail"],"minLength":4,"maxLength":4},"detail":{"type":"string","minLength":1,"maxLength":1024},"url":{"type":["string","null"]}}}},"discoveredResourceUrls":{"type":"array","minItems":0,"maxItems":16,"items":{"type":"string","minLength":9,"maxLength":2048}},"summary":{"type":"object","additionalProperties":false,"minProperties":3,"maxProperties":3,"required":["pass","warn","fail"],"properties":{"pass":{"type":"integer","minimum":0,"maximum":32},"warn":{"type":"integer","minimum":0,"maximum":32},"fail":{"type":"integer","minimum":0,"maximum":32}}}}},"input_example":{"url":"https://example.com/"},"output_example":{"url":"https://example.com/resource","checks":[{"id":"example","status":"pass","detail":"example","url":"https://example.com/resource"}],"discoveredResourceUrls":["example00"],"summary":{"pass":0,"warn":0,"fail":0}}},{"service_id":"sitemap_extract","name":"Sitemap Extract","description":"Parses bounded XML sitemap urlsets and indexes without entity expansion or recursive fetching.","when_to_use":"Use this service when you need this capability: parses bounded XML sitemap urlsets and indexes without entity expansion or recursive fetching.","category":"web_discovery","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/sitemap_extract/invoke","method":"POST","planned_invoke_route":"/api/agent/services/sitemap_extract/invoke","mcp_tool":"sitemap_extract","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":[],"properties":{"url":{"type":"string","pattern":"^https://","minLength":9,"maxLength":2048},"xml":{"type":"string","minLength":1,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["kind","urls","childSitemaps","counts","warnings"],"properties":{"kind":{"type":"string","enum":["urlset","sitemapindex"],"minLength":6,"maxLength":12},"urls":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["url","lastmod","changefreq","priority","alternates"],"properties":{"url":{"type":"string","minLength":9,"maxLength":2048},"lastmod":{"type":["string","null"]},"changefreq":{"type":["string","null"]},"priority":{"type":["string","null"]},"alternates":{"type":"array","minItems":0,"maxItems":64,"items":{"type":"object","additionalProperties":false,"minProperties":2,"maxProperties":2,"required":["language","href"],"properties":{"language":{"type":"string","minLength":0,"maxLength":64},"href":{"type":"string","minLength":9,"maxLength":2048}}}}}}},"childSitemaps":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"object","additionalProperties":false,"minProperties":2,"maxProperties":2,"required":["url","lastmod"],"properties":{"url":{"type":"string","minLength":9,"maxLength":2048},"lastmod":{"type":["string","null"]}}}},"counts":{"type":"object","additionalProperties":false,"minProperties":3,"maxProperties":3,"required":["urls","childSitemaps","malformed"],"properties":{"urls":{"type":"integer","minimum":0,"maximum":10000},"childSitemaps":{"type":"integer","minimum":0,"maximum":256},"malformed":{"type":"integer","minimum":0,"maximum":10000}}},"warnings":{"type":"array","minItems":0,"maxItems":32,"items":{"type":"string","minLength":1,"maxLength":1024}}}},"input_example":{"xml":"<?xml version=\"1.0\"?><urlset><url><loc>https://example.com/</loc></url></urlset>"},"output_example":{"kind":"urlset","urls":[{"url":"https://example.com/resource","lastmod":"example","changefreq":"example","priority":"example","alternates":[{"language":"example","href":"example00"}]}],"childSitemaps":[{"url":"https://example.com/resource","lastmod":"example"}],"counts":{"urls":0,"childSitemaps":0,"malformed":0},"warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"robots_policy_parse","name":"Robots Policy Parse","description":"Parses robots.txt groups and applies deterministic longest-match allow and disallow semantics.","when_to_use":"Use this service when you need this capability: parses robots.txt groups and applies deterministic longest-match allow and disallow semantics.","category":"web_policy","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/robots_policy_parse/invoke","method":"POST","planned_invoke_route":"/api/agent/services/robots_policy_parse/invoke","mcp_tool":"robots_policy_parse","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":3,"required":[],"properties":{"url":{"type":"string","pattern":"^https://","minLength":9,"maxLength":2048},"text":{"type":"string","minLength":0,"maxLength":65536},"userAgent":{"type":"string","minLength":1,"maxLength":256},"targetPath":{"type":"string","minLength":1,"maxLength":2048}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":7,"maxProperties":7,"required":["groups","matchedGroup","matchedRule","crawlAllowed","sitemaps","crawlDelay","warnings"],"properties":{"groups":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"object","additionalProperties":false,"minProperties":3,"maxProperties":3,"required":["userAgents","rules","crawlDelay"],"properties":{"userAgents":{"type":"array","minItems":1,"maxItems":32,"items":{"type":"string","minLength":1,"maxLength":256}},"rules":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"object","additionalProperties":false,"minProperties":2,"maxProperties":2,"required":["directive","path"],"properties":{"directive":{"type":"string","enum":["allow","disallow"],"minLength":5,"maxLength":8},"path":{"type":"string","minLength":0,"maxLength":2048}}}},"crawlDelay":{"type":["number","null"]}}}},"matchedGroup":{"type":["array","null"]},"matchedRule":{"type":["object","null"]},"crawlAllowed":{"type":["boolean","null"]},"sitemaps":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"string","minLength":1,"maxLength":2048}},"crawlDelay":{"type":["number","null"]},"warnings":{"type":"array","minItems":0,"maxItems":32,"items":{"type":"string","minLength":1,"maxLength":1024}}}},"input_example":{"text":"User-agent: *\nAllow: /"},"output_example":{"groups":[{"userAgents":["example"],"rules":[{"directive":"allow","path":"example"}],"crawlDelay":0}],"matchedGroup":[null],"matchedRule":{},"crawlAllowed":false,"sitemaps":["example"],"crawlDelay":0,"warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"schema_org_extract","name":"Schema.org Extract","description":"Extracts bounded JSON-LD Schema.org entities, type indexes, and explicit relationships without inventing values.","when_to_use":"Use this service when you need this capability: extracts bounded JSON-LD Schema.org entities, type indexes, and explicit relationships without inventing values.","category":"structured_metadata","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/schema_org_extract/invoke","method":"POST","planned_invoke_route":"/api/agent/services/schema_org_extract/invoke","mcp_tool":"schema_org_extract","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":2,"required":[],"properties":{"url":{"type":"string","pattern":"^https://","minLength":9,"maxLength":2048},"html":{"type":"string","minLength":1,"maxLength":65536},"baseUrl":{"type":"string","pattern":"^https://","minLength":9,"maxLength":2048}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["entityCount","typeIndex","entities","relationships","warnings"],"properties":{"entityCount":{"type":"integer","minimum":0,"maximum":2000},"typeIndex":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"object","additionalProperties":false,"minProperties":2,"maxProperties":2,"required":["type","ids"],"properties":{"type":{"type":"string","minLength":1,"maxLength":256},"ids":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"string","minLength":1,"maxLength":2048}}}}},"entities":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"object","additionalProperties":false,"minProperties":3,"maxProperties":3,"required":["id","types","valueJson"],"properties":{"id":{"type":"string","minLength":1,"maxLength":2048},"types":{"type":"array","minItems":0,"maxItems":32,"items":{"type":"string","minLength":1,"maxLength":256}},"valueJson":{"type":"string","minLength":2,"maxLength":65536}}}},"relationships":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"object","additionalProperties":false,"minProperties":3,"maxProperties":3,"required":["from","to","kind"],"properties":{"from":{"type":"string","minLength":1,"maxLength":2048},"to":{"type":"string","minLength":1,"maxLength":2048},"kind":{"type":"string","minLength":1,"maxLength":256}}}},"warnings":{"type":"array","minItems":0,"maxItems":32,"items":{"type":"string","minLength":1,"maxLength":1024}}}},"input_example":{"html":"<script type=\"application/ld+json\">{\"@type\":\"WebPage\"}</script>"},"output_example":{"entityCount":0,"typeIndex":[{"type":"example","ids":["example"]}],"entities":[{"id":"example","types":["example"],"valueJson":"example"}],"relationships":[{"from":"example","to":"example","kind":"example"}],"warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"csv_normalize_validate","name":"CSV Normalize Validate","description":"Parses and normalizes bounded CSV, TSV, or semicolon data while retaining malformed rows and validation issues.","when_to_use":"Use this service when you need this capability: parses and normalizes bounded CSV, TSV, or semicolon data while retaining malformed rows and validation issues.","category":"data_normalization","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/csv_normalize_validate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/csv_normalize_validate/invoke","mcp_tool":"csv_normalize_validate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":3,"required":["text"],"properties":{"text":{"type":"string","minLength":1,"maxLength":65536},"delimiter":{"type":"string","enum":[",","\t",";"],"minLength":1,"maxLength":1},"hasHeader":{"type":"boolean"}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":7,"maxProperties":7,"required":["headers","delimiter","rowCount","rows","validationIssues","rejectedRows","normalized"],"properties":{"headers":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"string","minLength":0,"maxLength":8192}},"delimiter":{"type":"string","enum":[",",";","tab"],"minLength":1,"maxLength":3},"rowCount":{"type":"integer","minimum":0,"maximum":10000},"rows":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"string","minLength":0,"maxLength":65536}}},"validationIssues":{"type":"array","minItems":0,"maxItems":256,"items":{"type":["object"]}},"rejectedRows":{"type":"array","minItems":0,"maxItems":256,"items":{"type":["object"]}},"normalized":{"type":"string","minLength":0,"maxLength":65536}}},"input_example":{"text":"name,value\nexample,1"},"output_example":{"headers":["example"],"delimiter":",","rowCount":0,"rows":[["example"]],"validationIssues":[{}],"rejectedRows":[{}],"normalized":"example"}},{"service_id":"content_fingerprint","name":"Content Fingerprint","description":"Produces exact and explicitly normalized SHA-256 fingerprints for bounded text, JSON, HTML, or base64 bytes.","when_to_use":"Use this service when you need this capability: produces exact and explicitly normalized SHA-256 fingerprints for bounded text, JSON, HTML, or base64 bytes.","category":"content_integrity","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/content_fingerprint/invoke","method":"POST","planned_invoke_route":"/api/agent/services/content_fingerprint/invoke","mcp_tool":"content_fingerprint","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":2,"required":[],"properties":{"text":{"type":"string","minLength":0,"maxLength":65536},"json":{"type":["object","array","string","number","boolean","null"]},"html":{"type":"string","minLength":1,"maxLength":65536},"base64":{"type":"string","pattern":"^[A-Za-z0-9+/]*={0,2}$","minLength":0,"maxLength":65536},"type":{"type":"string","minLength":1,"maxLength":128}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":6,"maxProperties":6,"required":["sha256","normalizedSha256","byteCount","normalizedLength","type","normalization"],"properties":{"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","minLength":64,"maxLength":64},"normalizedSha256":{"type":"string","pattern":"^[0-9a-f]{64}$","minLength":64,"maxLength":64},"byteCount":{"type":"integer","minimum":0,"maximum":1048576},"normalizedLength":{"type":"integer","minimum":0,"maximum":1048576},"type":{"type":"string","minLength":1,"maxLength":128},"normalization":{"type":"string","minLength":1,"maxLength":128}}},"input_example":{"text":"example"},"output_example":{"sha256":"0000000000000000000000000000000000000000000000000000000000000000","normalizedSha256":"0000000000000000000000000000000000000000000000000000000000000000","byteCount":0,"normalizedLength":0,"type":"example","normalization":"example"}},{"service_id":"text_chunk_structure","name":"Text Chunk Structure","description":"Creates deterministic source-ordered chunks from text or Markdown using headings, paragraphs, lists, and code blocks.","when_to_use":"Use this service when you need this capability: creates deterministic source-ordered chunks from text or Markdown using headings, paragraphs, lists, and code blocks.","category":"text_structure","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/text_chunk_structure/invoke","method":"POST","planned_invoke_route":"/api/agent/services/text_chunk_structure/invoke","mcp_tool":"text_chunk_structure","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":2,"required":["text"],"properties":{"text":{"type":"string","minLength":1,"maxLength":65536},"maxChunkChars":{"type":"integer","minimum":256,"maximum":16000}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":3,"maxProperties":3,"required":["chunkCount","chunks","sourceHash"],"properties":{"chunkCount":{"type":"integer","minimum":0,"maximum":512},"chunks":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"object","additionalProperties":false,"minProperties":8,"maxProperties":8,"required":["id","headingHierarchy","text","start","end","estimatedTokens","hash","ordinal"],"properties":{"id":{"type":"string","minLength":10,"maxLength":16},"headingHierarchy":{"type":"array","minItems":0,"maxItems":6,"items":{"type":"string","minLength":1,"maxLength":8192}},"text":{"type":"string","minLength":1,"maxLength":16000},"start":{"type":"integer","minimum":0,"maximum":1048576},"end":{"type":"integer","minimum":0,"maximum":1048576},"estimatedTokens":{"type":"integer","minimum":1,"maximum":100000},"hash":{"type":"string","pattern":"^[0-9a-f]{64}$","minLength":64,"maxLength":64},"ordinal":{"type":"integer","minimum":0,"maximum":511}}}},"sourceHash":{"type":"string","pattern":"^[0-9a-f]{64}$","minLength":64,"maxLength":64}}},"input_example":{"text":"# Example\n\nBody."},"output_example":{"chunkCount":0,"chunks":[{"id":"example000","headingHierarchy":["example"],"text":"Example caller-supplied content.","start":0,"end":0,"estimatedTokens":1,"hash":"0000000000000000000000000000000000000000000000000000000000000000","ordinal":0}],"sourceHash":"0000000000000000000000000000000000000000000000000000000000000000"}},{"service_id":"markdown_outline_extract","name":"Markdown Outline Extract","description":"Extracts a deterministic source-ordered Markdown heading outline with stable anchors, parent ordinals, offsets, and section ranges.","when_to_use":"Use this service when you need this capability: extracts a deterministic source-ordered Markdown heading outline with stable anchors, parent ordinals, offsets, and section ranges.","category":"text_structure","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/markdown_outline_extract/invoke","method":"POST","planned_invoke_route":"/api/agent/services/markdown_outline_extract/invoke","mcp_tool":"markdown_outline_extract","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":3,"required":[],"properties":{"markdown":{"type":"string","minLength":1,"maxLength":65536},"text":{"type":"string","minLength":1,"maxLength":65536},"maximumHeadingDepth":{"type":"integer","minimum":1,"maximum":6},"includeSectionRanges":{"type":"boolean"}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["title","headingCount","headings","warnings"],"properties":{"title":{"type":"string","minLength":0,"maxLength":8192},"headingCount":{"type":"integer","minimum":0,"maximum":256},"headings":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"object","additionalProperties":false,"minProperties":9,"maxProperties":9,"required":["level","text","anchor","ordinal","start","end","sectionStart","sectionEnd","parentOrdinal"],"properties":{"level":{"type":"integer","minimum":1,"maximum":6},"text":{"type":"string","minLength":0,"maxLength":8192},"anchor":{"type":"string","minLength":1,"maxLength":8192},"ordinal":{"type":"integer","minimum":0,"maximum":255},"start":{"type":"integer","minimum":0,"maximum":524288},"end":{"type":"integer","minimum":0,"maximum":524288},"sectionStart":{"type":"integer","minimum":0,"maximum":524288},"sectionEnd":{"type":"integer","minimum":0,"maximum":524288},"parentOrdinal":{"type":"integer","minimum":-1,"maximum":255}}}},"warnings":{"type":"array","minItems":0,"maxItems":32,"items":{"type":"string","minLength":1,"maxLength":1024}}}},"input_example":{"markdown":"# Example\n\n## Detail"},"output_example":{"title":"example","headingCount":0,"headings":[{"level":1,"text":"Example caller-supplied content.","anchor":"example","ordinal":0,"start":0,"end":0,"sectionStart":0,"sectionEnd":0,"parentOrdinal":-1}],"warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"link_graph_extract","name":"Link Graph Extract","description":"Extracts bounded normalized internal, external, and anchor relationships from supplied HTML or one safely fetched URL without crawling.","when_to_use":"Use this service when you need this capability: extracts bounded normalized internal, external, and anchor relationships from supplied HTML or one safely fetched URL without crawling.","category":"web_structure","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/link_graph_extract/invoke","method":"POST","planned_invoke_route":"/api/agent/services/link_graph_extract/invoke","mcp_tool":"link_graph_extract","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":2,"required":[],"properties":{"url":{"type":"string","pattern":"^https://","minLength":9,"maxLength":2048},"html":{"type":"string","minLength":1,"maxLength":65536},"baseUrl":{"type":"string","pattern":"^https://","minLength":9,"maxLength":2048}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":9,"maxProperties":9,"required":["baseUrl","linkCount","uniqueDestinationCount","duplicateCount","internalLinks","externalLinks","anchors","nodes","edges"],"properties":{"baseUrl":{"type":"string","minLength":9,"maxLength":2048},"linkCount":{"type":"integer","minimum":0,"maximum":512},"uniqueDestinationCount":{"type":"integer","minimum":0,"maximum":512},"duplicateCount":{"type":"integer","minimum":0,"maximum":512},"internalLinks":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"string","minLength":2,"maxLength":16384}},"externalLinks":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"string","minLength":2,"maxLength":16384}},"anchors":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"string","minLength":2,"maxLength":16384}},"nodes":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"string","minLength":2,"maxLength":4096}},"edges":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"string","minLength":2,"maxLength":4096}}}},"input_example":{"html":"<a href=\"/example\">Example</a>","baseUrl":"https://example.com/"},"output_example":{"baseUrl":"example00","linkCount":0,"uniqueDestinationCount":0,"duplicateCount":0,"internalLinks":["example"],"externalLinks":["example"],"anchors":["example"],"nodes":["example"],"edges":["example"]}},{"service_id":"url_normalize_canonicalize","name":"URL Normalize Canonicalize","description":"Normalizes HTTP and HTTPS URL syntax deterministically without guessing an HTML canonical URL.","when_to_use":"Use this service when you need this capability: normalizes HTTP and HTTPS URL syntax deterministically without guessing an HTML canonical URL.","category":"url_normalization","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/url_normalize_canonicalize/invoke","method":"POST","planned_invoke_route":"/api/agent/services/url_normalize_canonicalize/invoke","mcp_tool":"url_normalize_canonicalize","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":3,"required":["url"],"properties":{"url":{"type":"string","minLength":1,"maxLength":2048},"baseUrl":{"type":"string","minLength":1,"maxLength":2048},"removeTrackingParameters":{"type":"boolean"}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":7,"maxProperties":7,"required":["original","normalized","origin","path","query","fragment","transformations"],"properties":{"original":{"type":"string","minLength":1,"maxLength":2048},"normalized":{"type":"string","minLength":1,"maxLength":2048},"origin":{"type":"string","minLength":1,"maxLength":2048},"path":{"type":"string","minLength":1,"maxLength":2048},"query":{"type":"string","minLength":0,"maxLength":2048},"fragment":{"type":"string","minLength":0,"maxLength":2048},"transformations":{"type":"array","minItems":0,"maxItems":16,"items":{"type":"string","minLength":1,"maxLength":128}}}},"input_example":{"url":"HTTPS://EXAMPLE.COM/a/../b?z=2&a=1"},"output_example":{"original":"example","normalized":"example","origin":"example","path":"example","query":"example","fragment":"example","transformations":["example"]}},{"service_id":"jsonl_normalize_validate","name":"JSONL Normalize Validate","description":"Parses bounded JSON Lines deterministically, retains rejected lines, and emits canonical JSON records with source line numbers.","when_to_use":"Use this service when you need this capability: parses bounded JSON Lines deterministically, retains rejected lines, and emits canonical JSON records with source line numbers.","category":"data_normalization","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/jsonl_normalize_validate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/jsonl_normalize_validate/invoke","mcp_tool":"jsonl_normalize_validate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":2,"required":["text"],"properties":{"text":{"type":"string","minLength":1,"maxLength":65536},"blankLinePolicy":{"type":"string","enum":["ignore","reject"],"minLength":6,"maxLength":6}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":6,"maxProperties":6,"required":["recordCount","validCount","invalidCount","records","rejectedLines","normalized"],"properties":{"recordCount":{"type":"integer","minimum":0,"maximum":256},"validCount":{"type":"integer","minimum":0,"maximum":256},"invalidCount":{"type":"integer","minimum":0,"maximum":256},"records":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"object","additionalProperties":false,"minProperties":3,"maxProperties":3,"required":["line","value","canonical"],"properties":{"line":{"type":"integer","minimum":1,"maximum":4096},"value":{"type":["object","array","string","number","boolean","null"]},"canonical":{"type":"string","minLength":1,"maxLength":65536}}}},"rejectedLines":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"object","additionalProperties":false,"minProperties":3,"maxProperties":3,"required":["line","text","error"],"properties":{"line":{"type":"integer","minimum":1,"maximum":4096},"text":{"type":"string","minLength":0,"maxLength":1024},"error":{"type":"string","minLength":1,"maxLength":128}}}},"normalized":{"type":"string","minLength":0,"maxLength":65536}}},"input_example":{"text":"{\"example\":1}\n{\"example\":2}"},"output_example":{"recordCount":0,"validCount":0,"invalidCount":0,"records":[{"line":1,"value":{},"canonical":"example"}],"rejectedLines":[{"line":1,"text":"Example caller-supplied content.","error":"example"}],"normalized":"example"}},{"service_id":"xml_normalize_validate","name":"XML Normalize Validate","description":"Safely validates and normalizes bounded XML into a deterministic structural representation without entity resolution or network access.","when_to_use":"Use this service when you need this capability: safely validates and normalizes bounded XML into a deterministic structural representation without entity resolution or network access.","category":"data_normalization","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/xml_normalize_validate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/xml_normalize_validate/invoke","mcp_tool":"xml_normalize_validate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["xml"],"properties":{"xml":{"type":"string","minLength":1,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":7,"maxProperties":7,"required":["wellFormed","root","namespaces","nodeCount","structure","warnings","errors"],"properties":{"wellFormed":{"type":"boolean"},"root":{"type":"string","minLength":1,"maxLength":256},"namespaces":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"object","additionalProperties":false,"minProperties":2,"maxProperties":2,"required":["name","value"],"properties":{"name":{"type":"string","minLength":5,"maxLength":256},"value":{"type":"string","minLength":0,"maxLength":4096}}}},"nodeCount":{"type":"integer","minimum":1,"maximum":4096},"structure":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":0,"maxItems":32,"items":{"type":"string","minLength":1,"maxLength":1024}},"errors":{"type":"array","minItems":0,"maxItems":32,"items":{"type":"string","minLength":1,"maxLength":1024}}}},"input_example":{"xml":"<root><item>example</item></root>"},"output_example":{"wellFormed":false,"root":"example","namespaces":[{"name":"example","value":"example"}],"nodeCount":1,"structure":"example","warnings":["Verify the caller-supplied data before relying on this result."],"errors":["example"]}},{"service_id":"text_deduplicate","name":"Text Deduplicate","description":"Detects exact and normalized duplicate text blocks using deterministic hashes while retaining canonical representatives and source order.","when_to_use":"Use this service when you need this capability: detects exact and normalized duplicate text blocks using deterministic hashes while retaining canonical representatives and source order.","category":"text_analysis","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/text_deduplicate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/text_deduplicate/invoke","mcp_tool":"text_deduplicate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":2,"required":[],"properties":{"items":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"string","minLength":0,"maxLength":65536}},"document":{"type":"string","minLength":1,"maxLength":65536},"caseSensitive":{"type":"boolean"}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["itemCount","exactDuplicateGroups","normalizedDuplicateGroups","canonicalRepresentatives","retainedOrder"],"properties":{"itemCount":{"type":"integer","minimum":1,"maximum":256},"exactDuplicateGroups":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"string","minLength":2,"maxLength":8192}},"normalizedDuplicateGroups":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"string","minLength":2,"maxLength":8192}},"canonicalRepresentatives":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["ordinal","text","exactHash","normalizedHash"],"properties":{"ordinal":{"type":"integer","minimum":0,"maximum":255},"text":{"type":"string","minLength":0,"maxLength":65536},"exactHash":{"type":"string","pattern":"^[0-9a-f]{64}$","minLength":64,"maxLength":64},"normalizedHash":{"type":"string","pattern":"^[0-9a-f]{64}$","minLength":64,"maxLength":64}}}},"retainedOrder":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"integer","minimum":0,"maximum":255}}}},"input_example":{"items":["example","example"]},"output_example":{"itemCount":1,"exactDuplicateGroups":["example"],"normalizedDuplicateGroups":["example"],"canonicalRepresentatives":[{"ordinal":0,"text":"Example caller-supplied content.","exactHash":"0000000000000000000000000000000000000000000000000000000000000000","normalizedHash":"0000000000000000000000000000000000000000000000000000000000000000"}],"retainedOrder":[0]}},{"service_id":"content_type_detect","name":"Content Type Detect","description":"Detects likely bounded content types from inert text or base64 bytes using deterministic signatures and structural signals without execution.","when_to_use":"Use this service when you need this capability: detects likely bounded content types from inert text or base64 bytes using deterministic signatures and structural signals without execution.","category":"content_analysis","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/content_type_detect/invoke","method":"POST","planned_invoke_route":"/api/agent/services/content_type_detect/invoke","mcp_tool":"content_type_detect","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":4,"required":[],"properties":{"text":{"type":"string","minLength":1,"maxLength":65536},"base64":{"type":"string","pattern":"^[A-Za-z0-9+/]*={0,2}$","minLength":1,"maxLength":65536},"declaredContentType":{"type":"string","minLength":1,"maxLength":256},"filename":{"type":"string","minLength":1,"maxLength":1024}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":6,"maxProperties":6,"required":["detectedMime","declaredMime","charset","confidence","structuralSignals","warnings"],"properties":{"detectedMime":{"type":"string","minLength":1,"maxLength":256},"declaredMime":{"type":"string","minLength":0,"maxLength":256},"charset":{"type":"string","minLength":0,"maxLength":64},"confidence":{"type":"string","enum":["low","medium","high"],"minLength":3,"maxLength":6},"structuralSignals":{"type":"array","minItems":1,"maxItems":32,"items":{"type":"string","minLength":1,"maxLength":128}},"warnings":{"type":"array","minItems":0,"maxItems":32,"items":{"type":"string","minLength":1,"maxLength":1024}}}},"input_example":{"text":"{\"example\":true}"},"output_example":{"detectedMime":"example","declaredMime":"example","charset":"example","confidence":"low","structuralSignals":["example"],"warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"heading_structure_audit","name":"Heading Structure Audit","description":"Audits bounded HTML or Markdown heading hierarchy, duplicates, IDs, skipped levels, and empty headings deterministically.","when_to_use":"Use this service when you need this capability: audits bounded HTML or Markdown heading hierarchy, duplicates, IDs, skipped levels, and empty headings deterministically.","category":"content_quality","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/heading_structure_audit/invoke","method":"POST","planned_invoke_route":"/api/agent/services/heading_structure_audit/invoke","mcp_tool":"heading_structure_audit","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":[],"properties":{"html":{"type":"string","minLength":1,"maxLength":65536},"markdown":{"type":"string","minLength":1,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["format","status","outline","findings","summary"],"properties":{"format":{"type":"string","enum":["html","markdown"],"minLength":4,"maxLength":8},"status":{"type":"string","enum":["pass","warn","fail"],"minLength":4,"maxLength":4},"outline":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["level","text","id","ordinal"],"properties":{"level":{"type":"integer","minimum":1,"maximum":6},"text":{"type":"string","minLength":0,"maxLength":8192},"id":{"type":"string","minLength":0,"maxLength":256},"ordinal":{"type":"integer","minimum":0,"maximum":255}}}},"findings":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"object","additionalProperties":false,"minProperties":3,"maxProperties":3,"required":["code","severity","ordinal"],"properties":{"code":{"type":"string","enum":["empty_heading","skipped_level","duplicate_id","duplicate_heading"],"minLength":11,"maxLength":17},"severity":{"type":"string","enum":["warn","fail"],"minLength":4,"maxLength":4},"ordinal":{"type":"integer","minimum":0,"maximum":255}}}},"summary":{"type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["headingCount","h1Count","failCount","warnCount"],"properties":{"headingCount":{"type":"integer","minimum":0,"maximum":256},"h1Count":{"type":"integer","minimum":0,"maximum":256},"failCount":{"type":"integer","minimum":0,"maximum":256},"warnCount":{"type":"integer","minimum":0,"maximum":256}}}}},"input_example":{"markdown":"# Example\n\n### Detail"},"output_example":{"format":"html","status":"pass","outline":[{"level":1,"text":"Example caller-supplied content.","id":"example","ordinal":0}],"findings":[{"code":"empty_heading","severity":"warn","ordinal":0}],"summary":{"headingCount":0,"h1Count":0,"failCount":0,"warnCount":0}}},{"service_id":"http_header_audit","name":"HTTP Header Audit","description":"Audits bounded supplied or safely fetched HTTP headers for caching, security, discovery, CORS, and x402 signals.","when_to_use":"Use this service when you need this capability: audits bounded supplied or safely fetched HTTP headers for caching, security, discovery, CORS, and x402 signals.","category":"web_security","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/http_header_audit/invoke","method":"POST","planned_invoke_route":"/api/agent/services/http_header_audit/invoke","mcp_tool":"http_header_audit","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":2,"required":[],"properties":{"url":{"type":"string","pattern":"^https://","minLength":9,"maxLength":2048},"headers":{"type":"array","minItems":1,"maxItems":128,"items":{"type":"array","minItems":2,"maxItems":2,"items":{"type":"string","minLength":0,"maxLength":8192}}},"status":{"type":"integer","minimum":100,"maximum":599}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":8,"maxProperties":8,"required":["sourceUrl","status","normalizedHeaders","findings","result","cacheSummary","securitySummary","discoverySummary"],"properties":{"sourceUrl":{"type":"string","minLength":0,"maxLength":2048},"status":{"type":"integer","minimum":0,"maximum":599},"normalizedHeaders":{"type":"array","minItems":1,"maxItems":128,"items":{"type":"object","additionalProperties":false,"minProperties":2,"maxProperties":2,"required":["name","values"],"properties":{"name":{"type":"string","minLength":1,"maxLength":256},"values":{"type":"array","minItems":1,"maxItems":128,"items":{"type":"string","minLength":0,"maxLength":8192}}}}},"findings":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"object","additionalProperties":false,"minProperties":3,"maxProperties":3,"required":["code","severity","header"],"properties":{"code":{"type":"string","enum":["duplicate_header","missing_header","cors_wildcard_credentials"],"minLength":14,"maxLength":25},"severity":{"type":"string","enum":["info","warn","fail"],"minLength":4,"maxLength":4},"header":{"type":"string","minLength":1,"maxLength":256}}}},"result":{"type":"string","enum":["pass","warn","fail"],"minLength":4,"maxLength":4},"cacheSummary":{"type":"object","additionalProperties":false,"minProperties":2,"maxProperties":2,"required":["present","missing"],"properties":{"present":{"type":"array","minItems":0,"maxItems":16,"items":{"type":"string","minLength":1,"maxLength":256}},"missing":{"type":"array","minItems":0,"maxItems":16,"items":{"type":"string","minLength":1,"maxLength":256}}}},"securitySummary":{"type":"object","additionalProperties":false,"minProperties":2,"maxProperties":2,"required":["present","missing"],"properties":{"present":{"type":"array","minItems":0,"maxItems":16,"items":{"type":"string","minLength":1,"maxLength":256}},"missing":{"type":"array","minItems":0,"maxItems":16,"items":{"type":"string","minLength":1,"maxLength":256}}}},"discoverySummary":{"type":"object","additionalProperties":false,"minProperties":2,"maxProperties":2,"required":["present","missing"],"properties":{"present":{"type":"array","minItems":0,"maxItems":16,"items":{"type":"string","minLength":1,"maxLength":256}},"missing":{"type":"array","minItems":0,"maxItems":16,"items":{"type":"string","minLength":1,"maxLength":256}}}}}},"input_example":{"headers":[["content-type","text/html"],["cache-control","max-age=60"]]},"output_example":{"sourceUrl":"example","status":0,"normalizedHeaders":[{"name":"example","values":["example"]}],"findings":[{"code":"duplicate_header","severity":"info","header":"example"}],"result":"pass","cacheSummary":{"present":["example"],"missing":["example"]},"securitySummary":{"present":["example"],"missing":["example"]},"discoverySummary":{"present":["example"],"missing":["example"]}}},{"service_id":"fx_pair_list","name":"Daily ECB FX Pair List","description":"Lists bounded daily ECB EUR foreign-exchange reference-rate pairs, not real-time quotes. ECB source data is free; the price covers SignalHarness normalization and delivery. Every result includes source attribution and freshness warnings.","when_to_use":"Use this service when you need this capability: lists bounded daily ECB EUR foreign-exchange reference-rate pairs, not real-time quotes. ECB source data is free; the price covers SignalHarness normalization and delivery. Every result includes source attribution and freshness warnings.","category":"market_data","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/fx_pair_list/invoke","method":"POST","planned_invoke_route":"/api/agent/services/fx_pair_list/invoke","mcp_tool":"fx_pair_list","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":0,"maxProperties":2,"required":[],"properties":{"query":{"type":"string","minLength":0,"maxLength":32},"limit":{"type":"integer","minimum":1,"maximum":256}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["count","pairs","retrievedAt","source","warnings"],"properties":{"count":{"type":"integer","minimum":0,"maximum":256},"pairs":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["base","quote","symbol","name","asOf"],"properties":{"base":{"type":"string","pattern":"^[A-Z]{3}$","minLength":3,"maxLength":3},"quote":{"type":"string","pattern":"^[A-Z]{3}$","minLength":3,"maxLength":3},"symbol":{"type":"string","pattern":"^[A-Z]{3}/[A-Z]{3}$","minLength":7,"maxLength":7},"name":{"type":"string","minLength":1,"maxLength":256},"asOf":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","minLength":10,"maxLength":10}}}},"retrievedAt":{"type":"string","minLength":20,"maxLength":32},"source":{"type":"object","additionalProperties":false,"minProperties":7,"maxProperties":7,"required":["provider","dataset","sourceUrl","freeAccessUrl","retrievedAt","attribution","notice"],"properties":{"provider":{"type":"string","minLength":1,"maxLength":128},"dataset":{"type":"string","minLength":1,"maxLength":256},"sourceUrl":{"type":"string","pattern":"^https://","minLength":9,"maxLength":2048},"freeAccessUrl":{"type":"string","pattern":"^https://","minLength":9,"maxLength":2048},"retrievedAt":{"type":"string","minLength":20,"maxLength":32},"attribution":{"type":"string","minLength":1,"maxLength":256},"notice":{"type":"string","minLength":1,"maxLength":512}}},"warnings":{"type":"array","minItems":0,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":128}}}},"input_example":{"limit":50},"output_example":{"count":0,"pairs":[{"base":"USD","quote":"USD","symbol":"EUR/USD","name":"example","asOf":"2026-09-12"}],"retrievedAt":"example0000000000000","source":{"provider":"example","dataset":"example","sourceUrl":"https://example.com/resource","freeAccessUrl":"https://example.com/resource","retrievedAt":"example0000000000000","attribution":"example","notice":"example"},"warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"fx_rate","name":"Latest Daily ECB FX Reference Rate","description":"Returns the latest daily ECB EUR foreign-exchange reference rate, not a real-time quote. ECB source data is free; the price covers SignalHarness normalization and delivery. Every result identifies the observation date, source, and freshness.","when_to_use":"Use this service when you need this capability: returns the latest daily ECB EUR foreign-exchange reference rate, not a real-time quote. ECB source data is free; the price covers SignalHarness normalization and delivery. Every result identifies the observation date, source, and freshness.","category":"market_data","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/fx_rate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/fx_rate/invoke","mcp_tool":"fx_rate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":2,"maxProperties":2,"required":["base","quote"],"properties":{"base":{"type":"string","enum":["EUR"],"minLength":3,"maxLength":3},"quote":{"type":"string","pattern":"^[A-Z]{3}$","minLength":3,"maxLength":3}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":8,"maxProperties":8,"required":["base","quote","symbol","rate","asOf","retrievedAt","source","warnings"],"properties":{"base":{"type":"string","pattern":"^[A-Z]{3}$","minLength":3,"maxLength":3},"quote":{"type":"string","pattern":"^[A-Z]{3}$","minLength":3,"maxLength":3},"symbol":{"type":"string","pattern":"^[A-Z]{3}/[A-Z]{3}$","minLength":7,"maxLength":7},"rate":{"type":"number","minimum":1e-8,"maximum":1000000000},"asOf":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","minLength":10,"maxLength":10},"retrievedAt":{"type":"string","minLength":20,"maxLength":32},"source":{"type":"object","additionalProperties":false,"minProperties":7,"maxProperties":7,"required":["provider","dataset","sourceUrl","freeAccessUrl","retrievedAt","attribution","notice"],"properties":{"provider":{"type":"string","minLength":1,"maxLength":128},"dataset":{"type":"string","minLength":1,"maxLength":256},"sourceUrl":{"type":"string","pattern":"^https://","minLength":9,"maxLength":2048},"freeAccessUrl":{"type":"string","pattern":"^https://","minLength":9,"maxLength":2048},"retrievedAt":{"type":"string","minLength":20,"maxLength":32},"attribution":{"type":"string","minLength":1,"maxLength":256},"notice":{"type":"string","minLength":1,"maxLength":512}}},"warnings":{"type":"array","minItems":0,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":128}}}},"input_example":{"base":"EUR","quote":"USD"},"output_example":{"base":"USD","quote":"USD","symbol":"EUR/USD","rate":1e-8,"asOf":"2026-09-12","retrievedAt":"example0000000000000","source":{"provider":"example","dataset":"example","sourceUrl":"https://example.com/resource","freeAccessUrl":"https://example.com/resource","retrievedAt":"example0000000000000","attribution":"example","notice":"example"},"warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"fx_rate_history","name":"Daily ECB FX Reference Rate History","description":"Returns up to 256 daily ECB EUR reference-rate observations across a bounded date range, not real-time quotes. ECB source data is free; the price covers SignalHarness normalization and delivery. Every result includes source attribution and freshness warnings.","when_to_use":"Use this service when you need this capability: returns up to 256 daily ECB EUR reference-rate observations across a bounded date range, not real-time quotes. ECB source data is free; the price covers SignalHarness normalization and delivery. Every result includes source attribution and freshness warnings.","category":"market_data","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/fx_rate_history/invoke","method":"POST","planned_invoke_route":"/api/agent/services/fx_rate_history/invoke","mcp_tool":"fx_rate_history","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":5,"required":["base","quote","startDate","endDate"],"properties":{"base":{"type":"string","enum":["EUR"],"minLength":3,"maxLength":3},"quote":{"type":"string","pattern":"^[A-Z]{3}$","minLength":3,"maxLength":3},"startDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","minLength":10,"maxLength":10},"endDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","minLength":10,"maxLength":10},"limit":{"type":"integer","minimum":1,"maximum":256}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":10,"maxProperties":10,"required":["base","quote","symbol","startDate","endDate","count","points","retrievedAt","source","warnings"],"properties":{"base":{"type":"string","pattern":"^[A-Z]{3}$","minLength":3,"maxLength":3},"quote":{"type":"string","pattern":"^[A-Z]{3}$","minLength":3,"maxLength":3},"symbol":{"type":"string","pattern":"^[A-Z]{3}/[A-Z]{3}$","minLength":7,"maxLength":7},"startDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","minLength":10,"maxLength":10},"endDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","minLength":10,"maxLength":10},"count":{"type":"integer","minimum":0,"maximum":256},"points":{"type":"array","minItems":0,"maxItems":256,"items":{"type":"object","additionalProperties":false,"minProperties":3,"maxProperties":3,"required":["date","rate","status"],"properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","minLength":10,"maxLength":10},"rate":{"type":"number","minimum":1e-8,"maximum":1000000000},"status":{"type":"string","minLength":1,"maxLength":32}}}},"retrievedAt":{"type":"string","minLength":20,"maxLength":32},"source":{"type":"object","additionalProperties":false,"minProperties":7,"maxProperties":7,"required":["provider","dataset","sourceUrl","freeAccessUrl","retrievedAt","attribution","notice"],"properties":{"provider":{"type":"string","minLength":1,"maxLength":128},"dataset":{"type":"string","minLength":1,"maxLength":256},"sourceUrl":{"type":"string","pattern":"^https://","minLength":9,"maxLength":2048},"freeAccessUrl":{"type":"string","pattern":"^https://","minLength":9,"maxLength":2048},"retrievedAt":{"type":"string","minLength":20,"maxLength":32},"attribution":{"type":"string","minLength":1,"maxLength":256},"notice":{"type":"string","minLength":1,"maxLength":512}}},"warnings":{"type":"array","minItems":0,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":128}}}},"input_example":{"base":"EUR","quote":"USD","startDate":"2026-09-01","endDate":"2026-09-08","limit":8},"output_example":{"base":"USD","quote":"USD","symbol":"EUR/USD","startDate":"2026-09-12","endDate":"2026-09-12","count":0,"points":[{"date":"2026-09-12","rate":1e-8,"status":"succeeded"}],"retrievedAt":"example0000000000000","source":{"provider":"example","dataset":"example","sourceUrl":"https://example.com/resource","freeAccessUrl":"https://example.com/resource","retrievedAt":"example0000000000000","attribution":"example","notice":"example"},"warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"address_validate","name":"Address Validate","description":"Validate one caller-supplied EVM, Solana, or Bitcoin address for the explicitly selected format.","when_to_use":"Use this service when you need this capability: validate one caller-supplied EVM, Solana, or Bitcoin address for the explicitly selected format.","category":"address_and_chain_identifiers","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/address_validate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/address_validate/invoke","mcp_tool":"address_validate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["address_validation_request"],"properties":{"address_validation_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","address_validation","warnings"],"properties":{"service_id":{"type":"string","const":"address_validate","minLength":16,"maxLength":16},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"address_validation":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"address_validation_request":"{\"kind\":\"evm\",\"address\":\"0x0000000000000000000000000000000000000001\"}"},"output_example":{"service_id":"address_validate","evidence_scope":"caller_supplied_data","address_validation":"{\"kind\":\"evm\",\"normalized\":\"0x0000000000000000000000000000000000000001\",\"valid\":true}","warnings":["Format validation does not prove ownership, activity, or safety."]}},{"service_id":"address_checksum","name":"EVM Address Checksum","description":"Normalize one caller-supplied EVM address to its EIP-55 checksum representation.","when_to_use":"Use this service when you need this capability: normalize one caller-supplied EVM address to its EIP-55 checksum representation.","category":"address_and_chain_identifiers","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/address_checksum/invoke","method":"POST","planned_invoke_route":"/api/agent/services/address_checksum/invoke","mcp_tool":"address_checksum","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["address_checksum_request"],"properties":{"address_checksum_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","checksummed_address","warnings"],"properties":{"service_id":{"type":"string","const":"address_checksum","minLength":16,"maxLength":16},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"checksummed_address":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"address_checksum_request":"{\"address\":\"0x0000000000000000000000000000000000000001\"}"},"output_example":{"service_id":"address_checksum","evidence_scope":"caller_supplied_data","checksummed_address":"{\"address\":\"0x0000000000000000000000000000000000000001\"}","warnings":["Checksum normalization does not prove ownership or contract identity."]}},{"service_id":"chain_identifier_normalize","name":"Chain Identifier Normalize","description":"Normalize and validate an explicitly supplied CAIP-2 chain identifier.","when_to_use":"Use this service when you need this capability: normalize and validate an explicitly supplied CAIP-2 chain identifier.","category":"address_and_chain_identifiers","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/chain_identifier_normalize/invoke","method":"POST","planned_invoke_route":"/api/agent/services/chain_identifier_normalize/invoke","mcp_tool":"chain_identifier_normalize","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["chain_identifier_request"],"properties":{"chain_identifier_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","normalized_chain_identifier","warnings"],"properties":{"service_id":{"type":"string","const":"chain_identifier_normalize","minLength":26,"maxLength":26},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"normalized_chain_identifier":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"chain_identifier_request":"{\"chain_id\":\"eip155:8453\"}"},"output_example":{"service_id":"chain_identifier_normalize","evidence_scope":"caller_supplied_data","normalized_chain_identifier":"{\"caip2\":\"eip155:8453\",\"namespace\":\"eip155\",\"reference\":\"8453\"}","warnings":["Syntax validation does not prove that a network is live or supported."]}},{"service_id":"account_identifier_parse","name":"CAIP-10 Account Parse","description":"Parse a caller-supplied CAIP-10 account identifier into namespace, reference, and address components.","when_to_use":"Use this service when you need this capability: parse a caller-supplied CAIP-10 account identifier into namespace, reference, and address components.","category":"address_and_chain_identifiers","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/account_identifier_parse/invoke","method":"POST","planned_invoke_route":"/api/agent/services/account_identifier_parse/invoke","mcp_tool":"account_identifier_parse","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["account_identifier_request"],"properties":{"account_identifier_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","parsed_account_identifier","warnings"],"properties":{"service_id":{"type":"string","const":"account_identifier_parse","minLength":24,"maxLength":24},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"parsed_account_identifier":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"account_identifier_request":"{\"account_id\":\"eip155:8453:0x0000000000000000000000000000000000000001\"}"},"output_example":{"service_id":"account_identifier_parse","evidence_scope":"caller_supplied_data","parsed_account_identifier":"{\"address\":\"0x0000000000000000000000000000000000000001\",\"caip10\":\"eip155:8453:0x0000000000000000000000000000000000000001\",\"namespace\":\"eip155\",\"reference\":\"8453\"}","warnings":["Parsing does not validate account ownership or on-chain existence."]}},{"service_id":"caip10_compare","name":"CAIP-10 Account Compare","description":"Compare two supplied CAIP-10 identifiers after deterministic normalization.","when_to_use":"Use this service when you need this capability: compare two supplied CAIP-10 identifiers after deterministic normalization.","category":"address_and_chain_identifiers","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/caip10_compare/invoke","method":"POST","planned_invoke_route":"/api/agent/services/caip10_compare/invoke","mcp_tool":"caip10_compare","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["account_comparison_request"],"properties":{"account_comparison_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","account_comparison","warnings"],"properties":{"service_id":{"type":"string","const":"caip10_compare","minLength":14,"maxLength":14},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"account_comparison":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"account_comparison_request":"{\"left\":\"eip155:8453:0x0000000000000000000000000000000000000001\",\"right\":\"eip155:8453:0x0000000000000000000000000000000000000001\"}"},"output_example":{"service_id":"caip10_compare","evidence_scope":"caller_supplied_data","account_comparison":"{\"equal\":true,\"left\":{\"address\":\"0x0000000000000000000000000000000000000001\",\"caip10\":\"eip155:8453:0x0000000000000000000000000000000000000001\",\"namespace\":\"eip155\",\"reference\":\"8453\"},\"right\":{\"address\":\"0x0000000000000000000000000000000000000001\",\"caip10\":\"eip155:8453:0x0000000000000000000000000000000000000001\",\"namespace\":\"eip155\",\"reference\":\"8453\"},\"same_chain\":true}","warnings":["Equality is syntactic and does not link accounts across chains."]}},{"service_id":"payment_uri_parse","name":"Crypto Payment URI Parse","description":"Parse bounded EIP-681, bitcoin, or solana payment URI fields without initiating payment.","when_to_use":"Use this service when you need this capability: parse bounded EIP-681, bitcoin, or solana payment URI fields without initiating payment.","category":"address_and_chain_identifiers","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/payment_uri_parse/invoke","method":"POST","planned_invoke_route":"/api/agent/services/payment_uri_parse/invoke","mcp_tool":"payment_uri_parse","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["payment_uri_request"],"properties":{"payment_uri_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","parsed_payment_uri","warnings"],"properties":{"service_id":{"type":"string","const":"payment_uri_parse","minLength":17,"maxLength":17},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"parsed_payment_uri":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"payment_uri_request":"{\"uri\":\"ethereum:0x0000000000000000000000000000000000000001@8453?value=1000\"}"},"output_example":{"service_id":"payment_uri_parse","evidence_scope":"caller_supplied_data","parsed_payment_uri":"{\"chain_id\":\"8453\",\"function_name\":null,\"parameters\":{\"value\":\"1000\"},\"scheme\":\"ethereum\",\"target\":\"0x0000000000000000000000000000000000000001\"}","warnings":["Parsing never validates the recipient, amount, token, or payment intent."]}},{"service_id":"address_set_compare","name":"Address Set Compare","description":"Compare two bounded sets of supplied identifiers and return intersection and directional differences.","when_to_use":"Use this service when you need this capability: compare two bounded sets of supplied identifiers and return intersection and directional differences.","category":"address_and_chain_identifiers","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/address_set_compare/invoke","method":"POST","planned_invoke_route":"/api/agent/services/address_set_compare/invoke","mcp_tool":"address_set_compare","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["address_set_request"],"properties":{"address_set_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","address_set_comparison","warnings"],"properties":{"service_id":{"type":"string","const":"address_set_compare","minLength":19,"maxLength":19},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"address_set_comparison":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"address_set_request":"{\"left\":[\"0x0000000000000000000000000000000000000001\",\"0x0000000000000000000000000000000000000002\"],\"right\":[\"0x0000000000000000000000000000000000000002\"],\"case_sensitive\":false}"},"output_example":{"service_id":"address_set_compare","evidence_scope":"caller_supplied_data","address_set_comparison":"{\"intersection\":[\"0x0000000000000000000000000000000000000002\"],\"only_left\":[\"0x0000000000000000000000000000000000000001\"],\"only_right\":[]}","warnings":["Comparison is case-normalized only when requested by the caller."]}},{"service_id":"create2_address_compute","name":"CREATE2 Address Compute","description":"Compute an EVM CREATE2 contract address from supplied deployer, salt, and init code.","when_to_use":"Use this service when you need this capability: compute an EVM CREATE2 contract address from supplied deployer, salt, and init code.","category":"address_and_chain_identifiers","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/create2_address_compute/invoke","method":"POST","planned_invoke_route":"/api/agent/services/create2_address_compute/invoke","mcp_tool":"create2_address_compute","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["create2_request"],"properties":{"create2_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","create2_address","warnings"],"properties":{"service_id":{"type":"string","const":"create2_address_compute","minLength":23,"maxLength":23},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"create2_address":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"create2_request":"{\"deployer\":\"0x0000000000000000000000000000000000000001\",\"salt\":\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"init_code\":\"0x00\"}"},"output_example":{"service_id":"create2_address_compute","evidence_scope":"caller_supplied_data","create2_address":"{\"address\":\"0xc660A83B541fde5aEd091688b9E015d7e6B8AC61\"}","warnings":["A computed address does not prove deployment or code identity."]}},{"service_id":"create_address_compute","name":"CREATE Address Compute","description":"Compute an EVM CREATE contract address from supplied deployer and nonce.","when_to_use":"Use this service when you need this capability: compute an EVM CREATE contract address from supplied deployer and nonce.","category":"address_and_chain_identifiers","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/create_address_compute/invoke","method":"POST","planned_invoke_route":"/api/agent/services/create_address_compute/invoke","mcp_tool":"create_address_compute","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["create_request"],"properties":{"create_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","create_address","warnings"],"properties":{"service_id":{"type":"string","const":"create_address_compute","minLength":22,"maxLength":22},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"create_address":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"create_request":"{\"deployer\":\"0x0000000000000000000000000000000000000001\",\"nonce\":\"1\"}"},"output_example":{"service_id":"create_address_compute","evidence_scope":"caller_supplied_data","create_address":"{\"address\":\"0x535B3D7A252fa034Ed71F0C53ec0C6F784cB64E1\"}","warnings":["A computed address does not prove deployment or transaction inclusion."]}},{"service_id":"multichain_address_profile","name":"Multichain Address Profile","description":"Classify bounded caller-supplied addresses by explicit chain format and report validation results.","when_to_use":"Use this service when you need this capability: classify bounded caller-supplied addresses by explicit chain format and report validation results.","category":"address_and_chain_identifiers","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/multichain_address_profile/invoke","method":"POST","planned_invoke_route":"/api/agent/services/multichain_address_profile/invoke","mcp_tool":"multichain_address_profile","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["multichain_profile_request"],"properties":{"multichain_profile_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","multichain_address_profile","warnings"],"properties":{"service_id":{"type":"string","const":"multichain_address_profile","minLength":26,"maxLength":26},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"multichain_address_profile":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"multichain_profile_request":"{\"records\":[{\"kind\":\"evm\",\"address\":\"0x0000000000000000000000000000000000000001\"},{\"kind\":\"solana\",\"address\":\"11111111111111111111111111111111\"}]}"},"output_example":{"service_id":"multichain_address_profile","evidence_scope":"caller_supplied_data","multichain_address_profile":"{\"invalid\":0,\"records\":[{\"index\":0,\"kind\":\"evm\",\"normalized\":\"0x0000000000000000000000000000000000000001\",\"valid\":true},{\"index\":1,\"kind\":\"solana\",\"normalized\":\"11111111111111111111111111111111\",\"valid\":true}],\"total\":2,\"valid\":2}","warnings":["Profile uses supplied records only and is not a balance or activity lookup."]}},{"service_id":"abi_function_encode","name":"ABI Function Encode","description":"Encode function calldata from a supplied ABI, function name, and arguments.","when_to_use":"Use this service when you need this capability: encode function calldata from a supplied ABI, function name, and arguments.","category":"smart_contract_abi_tools","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/abi_function_encode/invoke","method":"POST","planned_invoke_route":"/api/agent/services/abi_function_encode/invoke","mcp_tool":"abi_function_encode","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["abi_function_encode_request"],"properties":{"abi_function_encode_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","encoded_function_data","warnings"],"properties":{"service_id":{"type":"string","const":"abi_function_encode","minLength":19,"maxLength":19},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"encoded_function_data":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"abi_function_encode_request":"{\"abi\":[{\"type\":\"constructor\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"initial\",\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"balanceOf\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}]},{\"type\":\"event\",\"name\":\"Changed\",\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"Insufficient\",\"inputs\":[{\"name\":\"available\",\"type\":\"uint256\"}]}],\"function_name\":\"balanceOf\",\"args\":[\"0x0000000000000000000000000000000000000001\"]}"},"output_example":{"service_id":"abi_function_encode","evidence_scope":"caller_supplied_data","encoded_function_data":"{\"data\":\"0x70a082310000000000000000000000000000000000000000000000000000000000000001\",\"signature\":\"balanceOf(address)\"}","warnings":["Encoding does not simulate execution or prove contract compatibility."]}},{"service_id":"abi_function_decode","name":"ABI Function Decode","description":"Decode supplied function calldata against a supplied ABI.","when_to_use":"Use this service when you need this capability: decode supplied function calldata against a supplied ABI.","category":"smart_contract_abi_tools","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/abi_function_decode/invoke","method":"POST","planned_invoke_route":"/api/agent/services/abi_function_decode/invoke","mcp_tool":"abi_function_decode","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["abi_function_decode_request"],"properties":{"abi_function_decode_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","decoded_function_call","warnings"],"properties":{"service_id":{"type":"string","const":"abi_function_decode","minLength":19,"maxLength":19},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"decoded_function_call":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"abi_function_decode_request":"{\"abi\":[{\"type\":\"constructor\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"initial\",\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"balanceOf\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}]},{\"type\":\"event\",\"name\":\"Changed\",\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"Insufficient\",\"inputs\":[{\"name\":\"available\",\"type\":\"uint256\"}]}],\"data\":\"0x70a082310000000000000000000000000000000000000000000000000000000000000001\"}"},"output_example":{"service_id":"abi_function_decode","evidence_scope":"caller_supplied_data","decoded_function_call":"{\"args\":[\"0x0000000000000000000000000000000000000001\"],\"functionName\":\"balanceOf\"}","warnings":["Decoded values reflect only the supplied ABI and bytes."]}},{"service_id":"abi_result_decode","name":"ABI Result Decode","description":"Decode supplied function return bytes against a supplied ABI and function name.","when_to_use":"Use this service when you need this capability: decode supplied function return bytes against a supplied ABI and function name.","category":"smart_contract_abi_tools","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/abi_result_decode/invoke","method":"POST","planned_invoke_route":"/api/agent/services/abi_result_decode/invoke","mcp_tool":"abi_result_decode","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["abi_result_decode_request"],"properties":{"abi_result_decode_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","decoded_function_result","warnings"],"properties":{"service_id":{"type":"string","const":"abi_result_decode","minLength":17,"maxLength":17},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"decoded_function_result":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"abi_result_decode_request":"{\"abi\":[{\"type\":\"constructor\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"initial\",\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"balanceOf\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}]},{\"type\":\"event\",\"name\":\"Changed\",\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"Insufficient\",\"inputs\":[{\"name\":\"available\",\"type\":\"uint256\"}]}],\"function_name\":\"balanceOf\",\"data\":\"0x0000000000000000000000000000000000000000000000000000000000000005\"}"},"output_example":{"service_id":"abi_result_decode","evidence_scope":"caller_supplied_data","decoded_function_result":"\"5\"","warnings":["Decoded values do not prove that a call occurred or succeeded."]}},{"service_id":"abi_event_decode","name":"ABI Event Decode","description":"Decode supplied EVM log topics and data against a supplied ABI.","when_to_use":"Use this service when you need this capability: decode supplied EVM log topics and data against a supplied ABI.","category":"smart_contract_abi_tools","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/abi_event_decode/invoke","method":"POST","planned_invoke_route":"/api/agent/services/abi_event_decode/invoke","mcp_tool":"abi_event_decode","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["abi_event_decode_request"],"properties":{"abi_event_decode_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","decoded_event","warnings"],"properties":{"service_id":{"type":"string","const":"abi_event_decode","minLength":16,"maxLength":16},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"decoded_event":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"abi_event_decode_request":"{\"abi\":[{\"type\":\"constructor\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"initial\",\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"balanceOf\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}]},{\"type\":\"event\",\"name\":\"Changed\",\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"Insufficient\",\"inputs\":[{\"name\":\"available\",\"type\":\"uint256\"}]}],\"data\":\"0x0000000000000000000000000000000000000000000000000000000000000005\",\"topics\":[\"0xb52dda022b6c1a1f40905a85f257f689aa5d69d850e49cf939d688fbe5af5946\",\"0x0000000000000000000000000000000000000000000000000000000000000001\"]}"},"output_example":{"service_id":"abi_event_decode","evidence_scope":"caller_supplied_data","decoded_event":"{\"args\":{\"account\":\"0x0000000000000000000000000000000000000001\",\"value\":\"5\"},\"eventName\":\"Changed\"}","warnings":["Decoded logs are not independently verified receipts."]}},{"service_id":"abi_event_topics","name":"ABI Event Topics","description":"Construct event filter topics from a supplied ABI, event name, and indexed arguments.","when_to_use":"Use this service when you need this capability: construct event filter topics from a supplied ABI, event name, and indexed arguments.","category":"smart_contract_abi_tools","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/abi_event_topics/invoke","method":"POST","planned_invoke_route":"/api/agent/services/abi_event_topics/invoke","mcp_tool":"abi_event_topics","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["abi_event_topics_request"],"properties":{"abi_event_topics_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","event_topics","warnings"],"properties":{"service_id":{"type":"string","const":"abi_event_topics","minLength":16,"maxLength":16},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"event_topics":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"abi_event_topics_request":"{\"abi\":[{\"type\":\"constructor\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"initial\",\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"balanceOf\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}]},{\"type\":\"event\",\"name\":\"Changed\",\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"Insufficient\",\"inputs\":[{\"name\":\"available\",\"type\":\"uint256\"}]}],\"event_name\":\"Changed\",\"args\":{\"account\":\"0x0000000000000000000000000000000000000001\"}}"},"output_example":{"service_id":"abi_event_topics","evidence_scope":"caller_supplied_data","event_topics":"{\"signature\":\"Changed(address,uint256)\",\"topics\":[\"0xb52dda022b6c1a1f40905a85f257f689aa5d69d850e49cf939d688fbe5af5946\",\"0x0000000000000000000000000000000000000000000000000000000000000001\"]}","warnings":["Constructed topics do not query any chain."]}},{"service_id":"abi_custom_error_decode","name":"ABI Custom Error Decode","description":"Decode supplied revert data against custom errors in a supplied ABI.","when_to_use":"Use this service when you need this capability: decode supplied revert data against custom errors in a supplied ABI.","category":"smart_contract_abi_tools","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/abi_custom_error_decode/invoke","method":"POST","planned_invoke_route":"/api/agent/services/abi_custom_error_decode/invoke","mcp_tool":"abi_custom_error_decode","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["abi_error_decode_request"],"properties":{"abi_error_decode_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","decoded_custom_error","warnings"],"properties":{"service_id":{"type":"string","const":"abi_custom_error_decode","minLength":23,"maxLength":23},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"decoded_custom_error":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"abi_error_decode_request":"{\"abi\":[{\"type\":\"constructor\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"initial\",\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"balanceOf\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}]},{\"type\":\"event\",\"name\":\"Changed\",\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"Insufficient\",\"inputs\":[{\"name\":\"available\",\"type\":\"uint256\"}]}],\"data\":\"0x91bcc5640000000000000000000000000000000000000000000000000000000000000005\"}"},"output_example":{"service_id":"abi_custom_error_decode","evidence_scope":"caller_supplied_data","decoded_custom_error":"{\"abiItem\":{\"inputs\":[{\"name\":\"available\",\"type\":\"uint256\"}],\"name\":\"Insufficient\",\"type\":\"error\"},\"args\":[\"5\"],\"errorName\":\"Insufficient\"}","warnings":["Decoded revert data does not prove transaction execution."]}},{"service_id":"abi_constructor_encode","name":"ABI Constructor Encode","description":"Append ABI-encoded constructor arguments to supplied contract bytecode.","when_to_use":"Use this service when you need this capability: append ABI-encoded constructor arguments to supplied contract bytecode.","category":"smart_contract_abi_tools","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/abi_constructor_encode/invoke","method":"POST","planned_invoke_route":"/api/agent/services/abi_constructor_encode/invoke","mcp_tool":"abi_constructor_encode","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["abi_constructor_request"],"properties":{"abi_constructor_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","encoded_deployment_data","warnings"],"properties":{"service_id":{"type":"string","const":"abi_constructor_encode","minLength":22,"maxLength":22},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"encoded_deployment_data":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"abi_constructor_request":"{\"abi\":[{\"type\":\"constructor\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"initial\",\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"balanceOf\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}]},{\"type\":\"event\",\"name\":\"Changed\",\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"Insufficient\",\"inputs\":[{\"name\":\"available\",\"type\":\"uint256\"}]}],\"bytecode\":\"0x00\",\"args\":[\"1\"]}"},"output_example":{"service_id":"abi_constructor_encode","evidence_scope":"caller_supplied_data","encoded_deployment_data":"{\"data\":\"0x000000000000000000000000000000000000000000000000000000000000000001\"}","warnings":["Output is unsigned data and is never broadcast."]}},{"service_id":"abi_interface_compare","name":"ABI Interface Compare","description":"Compare canonical function, event, and error signatures across two supplied ABIs.","when_to_use":"Use this service when you need this capability: compare canonical function, event, and error signatures across two supplied ABIs.","category":"smart_contract_abi_tools","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/abi_interface_compare/invoke","method":"POST","planned_invoke_route":"/api/agent/services/abi_interface_compare/invoke","mcp_tool":"abi_interface_compare","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["abi_interface_compare_request"],"properties":{"abi_interface_compare_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","abi_interface_comparison","warnings"],"properties":{"service_id":{"type":"string","const":"abi_interface_compare","minLength":21,"maxLength":21},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"abi_interface_comparison":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"abi_interface_compare_request":"{\"left_abi\":[{\"type\":\"constructor\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"initial\",\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"balanceOf\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}]},{\"type\":\"event\",\"name\":\"Changed\",\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"Insufficient\",\"inputs\":[{\"name\":\"available\",\"type\":\"uint256\"}]}],\"right_abi\":[{\"type\":\"constructor\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"initial\",\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"balanceOf\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}]},{\"type\":\"event\",\"name\":\"Changed\",\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"Insufficient\",\"inputs\":[{\"name\":\"available\",\"type\":\"uint256\"}]}]}"},"output_example":{"service_id":"abi_interface_compare","evidence_scope":"caller_supplied_data","abi_interface_comparison":"{\"equal\":true,\"only_left\":[],\"only_right\":[],\"shared\":[\"error:Insufficient(uint256)\",\"event:Changed(address,uint256)\",\"function:balanceOf(address)\"]}","warnings":["Interface similarity does not prove implementation compatibility."]}},{"service_id":"abi_selector_collisions","name":"ABI Selector Collision Detect","description":"Detect four-byte function-selector collisions inside supplied ABI entries.","when_to_use":"Use this service when you need this capability: detect four-byte function-selector collisions inside supplied ABI entries.","category":"smart_contract_abi_tools","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/abi_selector_collisions/invoke","method":"POST","planned_invoke_route":"/api/agent/services/abi_selector_collisions/invoke","mcp_tool":"abi_selector_collisions","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["abi_collision_request"],"properties":{"abi_collision_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","selector_collisions","warnings"],"properties":{"service_id":{"type":"string","const":"abi_selector_collisions","minLength":23,"maxLength":23},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"selector_collisions":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"abi_collision_request":"{\"abi\":[{\"type\":\"constructor\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"initial\",\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"balanceOf\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}]},{\"type\":\"event\",\"name\":\"Changed\",\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"Insufficient\",\"inputs\":[{\"name\":\"available\",\"type\":\"uint256\"}]}]}"},"output_example":{"service_id":"abi_selector_collisions","evidence_scope":"caller_supplied_data","selector_collisions":"{\"collisions\":[],\"selector_count\":1}","warnings":["Only supplied ABI entries are evaluated."]}},{"service_id":"abi_signature_selector","name":"ABI Signature Selector","description":"Compute canonical function or event selectors for supplied signatures.","when_to_use":"Use this service when you need this capability: compute canonical function or event selectors for supplied signatures.","category":"smart_contract_abi_tools","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/abi_signature_selector/invoke","method":"POST","planned_invoke_route":"/api/agent/services/abi_signature_selector/invoke","mcp_tool":"abi_signature_selector","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["abi_signature_request"],"properties":{"abi_signature_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","signature_selectors","warnings"],"properties":{"service_id":{"type":"string","const":"abi_signature_selector","minLength":22,"maxLength":22},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"signature_selectors":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"abi_signature_request":"{\"kind\":\"function\",\"signatures\":[\"balanceOf(address)\",\"transfer(address,uint256)\"]}"},"output_example":{"service_id":"abi_signature_selector","evidence_scope":"caller_supplied_data","signature_selectors":"{\"kind\":\"function\",\"selectors\":[{\"selector\":\"0x70a08231\",\"signature\":\"balanceOf(address)\"},{\"selector\":\"0xa9059cbb\",\"signature\":\"transfer(address,uint256)\"}]}","warnings":["Selectors alone do not prove an interface is implemented."]}},{"service_id":"evm_transaction_inspect","name":"EVM Transaction Inspect","description":"Normalize and summarize a caller-supplied EVM transaction record.","when_to_use":"Use this service when you need this capability: normalize and summarize a caller-supplied EVM transaction record.","category":"evm_transactions_receipts_blocks","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/evm_transaction_inspect/invoke","method":"POST","planned_invoke_route":"/api/agent/services/evm_transaction_inspect/invoke","mcp_tool":"evm_transaction_inspect","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["evm_transaction_request"],"properties":{"evm_transaction_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","transaction_inspection","warnings"],"properties":{"service_id":{"type":"string","const":"evm_transaction_inspect","minLength":23,"maxLength":23},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"transaction_inspection":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"evm_transaction_request":"{\"transaction\":{\"hash\":\"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"nonce\":\"1\",\"value\":\"10\",\"gas\":\"21000\",\"input\":\"0x\"}}"},"output_example":{"service_id":"evm_transaction_inspect","evidence_scope":"caller_supplied_data","transaction_inspection":"{\"from\":\"0x0000000000000000000000000000000000000001\",\"gas_limit\":\"21000\",\"hash\":\"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"input_bytes\":0,\"nonce\":\"1\",\"supplied_fields\":[\"from\",\"gas\",\"hash\",\"input\",\"nonce\",\"to\",\"value\"],\"to\":\"0x0000000000000000000000000000000000000002\",\"type\":null,\"value_atomic\":\"10\"}","warnings":["Supplied transaction fields are not independently verified on-chain."]}},{"service_id":"evm_receipt_summary","name":"EVM Receipt Summary","description":"Summarize status, gas, logs, and contract creation fields from a supplied receipt.","when_to_use":"Use this service when you need this capability: summarize status, gas, logs, and contract creation fields from a supplied receipt.","category":"evm_transactions_receipts_blocks","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/evm_receipt_summary/invoke","method":"POST","planned_invoke_route":"/api/agent/services/evm_receipt_summary/invoke","mcp_tool":"evm_receipt_summary","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["evm_receipt_request"],"properties":{"evm_receipt_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","receipt_summary","warnings"],"properties":{"service_id":{"type":"string","const":"evm_receipt_summary","minLength":19,"maxLength":19},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"receipt_summary":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"evm_receipt_request":"{\"receipt\":{\"transactionHash\":\"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"blockHash\":\"0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\",\"blockNumber\":\"100\",\"status\":\"success\",\"gasUsed\":\"21000\",\"effectiveGasPrice\":\"100\",\"logs\":[]}}"},"output_example":{"service_id":"evm_receipt_summary","evidence_scope":"caller_supplied_data","receipt_summary":"{\"block_hash\":\"0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\",\"block_number\":\"100\",\"contract_address\":null,\"effective_gas_price\":\"100\",\"gas_used\":\"21000\",\"log_count\":0,\"removed_log_count\":0,\"status\":\"success\",\"transaction_hash\":\"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"}","warnings":["Supplied receipt fields are not proof of finality."]}},{"service_id":"evm_fee_breakdown","name":"EVM Fee Breakdown","description":"Calculate exact execution, base-fee, and priority-fee amounts from supplied gas fields.","when_to_use":"Use this service when you need this capability: calculate exact execution, base-fee, and priority-fee amounts from supplied gas fields.","category":"evm_transactions_receipts_blocks","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/evm_fee_breakdown/invoke","method":"POST","planned_invoke_route":"/api/agent/services/evm_fee_breakdown/invoke","mcp_tool":"evm_fee_breakdown","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["evm_fee_request"],"properties":{"evm_fee_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","fee_breakdown","warnings"],"properties":{"service_id":{"type":"string","const":"evm_fee_breakdown","minLength":17,"maxLength":17},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"fee_breakdown":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"evm_fee_request":"{\"gas_used\":\"21000\",\"effective_gas_price\":\"100\",\"base_fee_per_gas\":\"80\"}"},"output_example":{"service_id":"evm_fee_breakdown","evidence_scope":"caller_supplied_data","fee_breakdown":"{\"base_fee_atomic\":\"1680000\",\"gas_used\":\"21000\",\"priority_fee_atomic\":\"420000\",\"total_fee_atomic\":\"2100000\"}","warnings":["All fee inputs must be supplied in atomic units."]}},{"service_id":"evm_transaction_receipt_match","name":"Transaction Receipt Match","description":"Check transaction and receipt identity fields for deterministic consistency.","when_to_use":"Use this service when you need this capability: check transaction and receipt identity fields for deterministic consistency.","category":"evm_transactions_receipts_blocks","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/evm_transaction_receipt_match/invoke","method":"POST","planned_invoke_route":"/api/agent/services/evm_transaction_receipt_match/invoke","mcp_tool":"evm_transaction_receipt_match","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["transaction_receipt_match_request"],"properties":{"transaction_receipt_match_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","transaction_receipt_match","warnings"],"properties":{"service_id":{"type":"string","const":"evm_transaction_receipt_match","minLength":29,"maxLength":29},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"transaction_receipt_match":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"transaction_receipt_match_request":"{\"transaction\":{\"hash\":\"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"nonce\":\"1\",\"value\":\"10\",\"gas\":\"21000\",\"input\":\"0x\",\"blockHash\":\"0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\",\"blockNumber\":\"100\"},\"receipt\":{\"transactionHash\":\"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"blockHash\":\"0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\",\"blockNumber\":\"100\",\"status\":\"success\",\"gasUsed\":\"21000\",\"effectiveGasPrice\":\"100\",\"logs\":[]}}"},"output_example":{"service_id":"evm_transaction_receipt_match","evidence_scope":"caller_supplied_data","transaction_receipt_match":"{\"checks\":{\"block_hash\":true,\"block_number\":true,\"transaction_hash\":true},\"matches\":true}","warnings":["A matching pair is not proof that either record came from a chain."]}},{"service_id":"evm_access_list_analyze","name":"EVM Access List Analyze","description":"Summarize unique addresses, storage keys, duplicates, and intrinsic gas for a supplied access list.","when_to_use":"Use this service when you need this capability: summarize unique addresses, storage keys, duplicates, and intrinsic gas for a supplied access list.","category":"evm_transactions_receipts_blocks","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/evm_access_list_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/evm_access_list_analyze/invoke","mcp_tool":"evm_access_list_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["access_list_request"],"properties":{"access_list_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","access_list_analysis","warnings"],"properties":{"service_id":{"type":"string","const":"evm_access_list_analyze","minLength":23,"maxLength":23},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"access_list_analysis":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"access_list_request":"{\"access_list\":[{\"address\":\"0x0000000000000000000000000000000000000001\",\"storage_keys\":[\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"0x1111111111111111111111111111111111111111111111111111111111111111\"]}]}"},"output_example":{"service_id":"evm_access_list_analyze","evidence_scope":"caller_supplied_data","access_list_analysis":"{\"duplicate_storage_keys\":0,\"entry_count\":1,\"intrinsic_access_list_gas\":\"6200\",\"storage_key_count\":2,\"unique_addresses\":1,\"unique_storage_keys\":2}","warnings":["Analysis does not simulate state access or execution."]}},{"service_id":"evm_block_analyze","name":"EVM Block Analyze","description":"Summarize a supplied EVM block and bounded transaction collection.","when_to_use":"Use this service when you need this capability: summarize a supplied EVM block and bounded transaction collection.","category":"evm_transactions_receipts_blocks","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/evm_block_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/evm_block_analyze/invoke","mcp_tool":"evm_block_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["evm_block_request"],"properties":{"evm_block_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","block_analysis","warnings"],"properties":{"service_id":{"type":"string","const":"evm_block_analyze","minLength":17,"maxLength":17},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"block_analysis":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"evm_block_request":"{\"block\":{\"number\":\"100\",\"hash\":\"0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\",\"parentHash\":\"0xcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc\",\"gasUsed\":\"21000\",\"gasLimit\":\"30000000\",\"transactions\":[{\"hash\":\"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"nonce\":\"1\",\"value\":\"10\",\"gas\":\"21000\",\"input\":\"0x\"}]}}"},"output_example":{"service_id":"evm_block_analyze","evidence_scope":"caller_supplied_data","block_analysis":"{\"gas_limit\":\"30000000\",\"gas_used\":\"21000\",\"gas_utilization\":\"0.07\",\"hash\":\"0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\",\"number\":\"100\",\"parent_hash\":\"0xcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc\",\"total_value_atomic\":\"10\",\"transaction_count\":1}","warnings":["The supplied block is not independently validated or fetched."]}},{"service_id":"evm_block_continuity","name":"EVM Block Continuity Check","description":"Check number and parent-hash continuity across a supplied ordered block sequence.","when_to_use":"Use this service when you need this capability: check number and parent-hash continuity across a supplied ordered block sequence.","category":"evm_transactions_receipts_blocks","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/evm_block_continuity/invoke","method":"POST","planned_invoke_route":"/api/agent/services/evm_block_continuity/invoke","mcp_tool":"evm_block_continuity","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["block_continuity_request"],"properties":{"block_continuity_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","block_continuity","warnings"],"properties":{"service_id":{"type":"string","const":"evm_block_continuity","minLength":20,"maxLength":20},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"block_continuity":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"block_continuity_request":"{\"blocks\":[{\"number\":\"1\",\"hash\":\"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"parentHash\":\"0x0000000000000000000000000000000000000000000000000000000000000000\"},{\"number\":\"2\",\"hash\":\"0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\",\"parentHash\":\"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"}]}"},"output_example":{"service_id":"evm_block_continuity","evidence_scope":"caller_supplied_data","block_continuity":"{\"breaks\":[],\"checked_links\":1,\"continuous\":true}","warnings":["Continuity does not establish canonical-chain membership."]}},{"service_id":"evm_confirmations_calculate","name":"EVM Confirmation Calculate","description":"Calculate confirmation count from supplied inclusion and current block numbers.","when_to_use":"Use this service when you need this capability: calculate confirmation count from supplied inclusion and current block numbers.","category":"evm_transactions_receipts_blocks","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/evm_confirmations_calculate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/evm_confirmations_calculate/invoke","mcp_tool":"evm_confirmations_calculate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["confirmation_request"],"properties":{"confirmation_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","confirmation_calculation","warnings"],"properties":{"service_id":{"type":"string","const":"evm_confirmations_calculate","minLength":27,"maxLength":27},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"confirmation_calculation":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"confirmation_request":"{\"inclusion_block\":\"90\",\"current_block\":\"100\"}"},"output_example":{"service_id":"evm_confirmations_calculate","evidence_scope":"caller_supplied_data","confirmation_calculation":"{\"confirmations\":\"11\",\"current_block\":\"100\",\"inclusion_block\":\"90\"}","warnings":["Current height and inclusion must be caller supplied."]}},{"service_id":"evm_transaction_cost_compare","name":"EVM Transaction Cost Compare","description":"Compare exact supplied gas cost scenarios in atomic units.","when_to_use":"Use this service when you need this capability: compare exact supplied gas cost scenarios in atomic units.","category":"evm_transactions_receipts_blocks","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/evm_transaction_cost_compare/invoke","method":"POST","planned_invoke_route":"/api/agent/services/evm_transaction_cost_compare/invoke","mcp_tool":"evm_transaction_cost_compare","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["transaction_cost_compare_request"],"properties":{"transaction_cost_compare_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","transaction_cost_comparison","warnings"],"properties":{"service_id":{"type":"string","const":"evm_transaction_cost_compare","minLength":28,"maxLength":28},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"transaction_cost_comparison":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"transaction_cost_compare_request":"{\"scenarios\":[{\"name\":\"a\",\"gas_used\":\"21000\",\"gas_price\":\"100\"},{\"name\":\"b\",\"gas_used\":\"21000\",\"gas_price\":\"120\"}]}"},"output_example":{"service_id":"evm_transaction_cost_compare","evidence_scope":"caller_supplied_data","transaction_cost_comparison":"{\"cheapest\":\"a\",\"savings_vs_most_expensive_atomic\":\"420000\",\"scenarios\":[{\"cost_atomic\":\"2100000\",\"name\":\"a\"},{\"cost_atomic\":\"2520000\",\"name\":\"b\"}]}","warnings":["Comparison does not forecast future gas prices."]}},{"service_id":"evm_log_inventory","name":"EVM Log Inventory","description":"Inventory supplied receipt logs by address and topic zero.","when_to_use":"Use this service when you need this capability: inventory supplied receipt logs by address and topic zero.","category":"evm_transactions_receipts_blocks","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/evm_log_inventory/invoke","method":"POST","planned_invoke_route":"/api/agent/services/evm_log_inventory/invoke","mcp_tool":"evm_log_inventory","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["evm_log_inventory_request"],"properties":{"evm_log_inventory_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","log_inventory","warnings"],"properties":{"service_id":{"type":"string","const":"evm_log_inventory","minLength":17,"maxLength":17},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"log_inventory":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"evm_log_inventory_request":"{\"logs\":[{\"address\":\"0x0000000000000000000000000000000000000001\",\"topics\":[\"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"]},{\"address\":\"0x0000000000000000000000000000000000000001\",\"topics\":[\"0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\"]}]}"},"output_example":{"service_id":"evm_log_inventory","evidence_scope":"caller_supplied_data","log_inventory":"{\"by_address\":{\"0x0000000000000000000000000000000000000001\":2},\"by_topic0\":{\"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\":1,\"0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\":1},\"log_count\":2}","warnings":["Inventory is limited to caller-supplied log records."]}},{"service_id":"erc20_transfer_decode","name":"ERC-20 Transfer Decode","description":"Decode supplied ERC-20 transfer calldata or log data.","when_to_use":"Use this service when you need this capability: decode supplied ERC-20 transfer calldata or log data.","category":"tokens_and_transfers","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/erc20_transfer_decode/invoke","method":"POST","planned_invoke_route":"/api/agent/services/erc20_transfer_decode/invoke","mcp_tool":"erc20_transfer_decode","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["erc20_transfer_request"],"properties":{"erc20_transfer_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","decoded_erc20_transfer","warnings"],"properties":{"service_id":{"type":"string","const":"erc20_transfer_decode","minLength":21,"maxLength":21},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"decoded_erc20_transfer":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"erc20_transfer_request":"{\"kind\":\"calldata\",\"data\":\"0xa9059cbb0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a\"}"},"output_example":{"service_id":"erc20_transfer_decode","evidence_scope":"caller_supplied_data","decoded_erc20_transfer":"{\"args\":[\"0x0000000000000000000000000000000000000002\",\"10\"],\"kind\":\"calldata\",\"operation\":\"transfer\"}","warnings":["Decoding does not prove token standard compliance or transfer success."]}},{"service_id":"erc20_approval_decode","name":"ERC-20 Approval Decode","description":"Decode supplied ERC-20 approval calldata or log data.","when_to_use":"Use this service when you need this capability: decode supplied ERC-20 approval calldata or log data.","category":"tokens_and_transfers","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/erc20_approval_decode/invoke","method":"POST","planned_invoke_route":"/api/agent/services/erc20_approval_decode/invoke","mcp_tool":"erc20_approval_decode","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["erc20_approval_request"],"properties":{"erc20_approval_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","decoded_erc20_approval","warnings"],"properties":{"service_id":{"type":"string","const":"erc20_approval_decode","minLength":21,"maxLength":21},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"decoded_erc20_approval":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"erc20_approval_request":"{\"kind\":\"calldata\",\"data\":\"0x095ea7b30000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a\"}"},"output_example":{"service_id":"erc20_approval_decode","evidence_scope":"caller_supplied_data","decoded_erc20_approval":"{\"args\":[\"0x0000000000000000000000000000000000000002\",\"10\"],\"kind\":\"calldata\",\"operation\":\"approve\"}","warnings":["Decoding does not prove allowance state or transaction success."]}},{"service_id":"token_units_convert","name":"Token Unit Convert","description":"Convert exact atomic and decimal token quantities using caller-supplied decimals.","when_to_use":"Use this service when you need this capability: convert exact atomic and decimal token quantities using caller-supplied decimals.","category":"tokens_and_transfers","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/token_units_convert/invoke","method":"POST","planned_invoke_route":"/api/agent/services/token_units_convert/invoke","mcp_tool":"token_units_convert","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["token_units_request"],"properties":{"token_units_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","token_unit_conversion","warnings"],"properties":{"service_id":{"type":"string","const":"token_units_convert","minLength":19,"maxLength":19},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"token_unit_conversion":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"token_units_request":"{\"decimals\":6,\"atomic\":\"1234567\"}"},"output_example":{"service_id":"token_units_convert","evidence_scope":"caller_supplied_data","token_unit_conversion":"{\"atomic\":\"1234567\",\"decimal\":\"1.234567\"}","warnings":["Token decimals are caller supplied and not independently verified."]}},{"service_id":"token_metadata_validate","name":"Token Metadata Validate","description":"Validate bounded supplied token metadata for type, length, decimals, and address consistency.","when_to_use":"Use this service when you need this capability: validate bounded supplied token metadata for type, length, decimals, and address consistency.","category":"tokens_and_transfers","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/token_metadata_validate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/token_metadata_validate/invoke","mcp_tool":"token_metadata_validate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["token_metadata_request"],"properties":{"token_metadata_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","token_metadata_validation","warnings"],"properties":{"service_id":{"type":"string","const":"token_metadata_validate","minLength":23,"maxLength":23},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"token_metadata_validation":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"token_metadata_request":"{\"name\":\"Example\",\"symbol\":\"EX\",\"decimals\":6,\"address\":\"0x0000000000000000000000000000000000000001\"}"},"output_example":{"service_id":"token_metadata_validate","evidence_scope":"caller_supplied_data","token_metadata_validation":"{\"errors\":[],\"normalized\":{\"address\":\"0x0000000000000000000000000000000000000001\",\"decimals\":6,\"name\":\"Example\",\"symbol\":\"EX\"},\"valid\":true}","warnings":["Validation does not authenticate issuer metadata."]}},{"service_id":"token_balance_changes","name":"Token Balance Changes","description":"Calculate per-account token balance deltas from supplied before and after atomic balances.","when_to_use":"Use this service when you need this capability: calculate per-account token balance deltas from supplied before and after atomic balances.","category":"tokens_and_transfers","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/token_balance_changes/invoke","method":"POST","planned_invoke_route":"/api/agent/services/token_balance_changes/invoke","mcp_tool":"token_balance_changes","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["token_balance_changes_request"],"properties":{"token_balance_changes_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","token_balance_changes","warnings"],"properties":{"service_id":{"type":"string","const":"token_balance_changes","minLength":21,"maxLength":21},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"token_balance_changes":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"token_balance_changes_request":"{\"records\":[{\"account\":\"0x0000000000000000000000000000000000000001\",\"before_atomic\":\"5\",\"after_atomic\":\"8\"}]}"},"output_example":{"service_id":"token_balance_changes","evidence_scope":"caller_supplied_data","token_balance_changes":"{\"records\":[{\"account\":\"0x0000000000000000000000000000000000000001\",\"after_atomic\":\"8\",\"before_atomic\":\"5\",\"delta_atomic\":\"3\"}],\"total_delta_atomic\":\"3\"}","warnings":["Records must be complete for the requested comparison scope."]}},{"service_id":"token_transfer_flow","name":"Token Transfer Flow","description":"Aggregate supplied token transfers into inbound, outbound, and net atomic flows.","when_to_use":"Use this service when you need this capability: aggregate supplied token transfers into inbound, outbound, and net atomic flows.","category":"tokens_and_transfers","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/token_transfer_flow/invoke","method":"POST","planned_invoke_route":"/api/agent/services/token_transfer_flow/invoke","mcp_tool":"token_transfer_flow","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["token_transfer_flow_request"],"properties":{"token_transfer_flow_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","token_transfer_flow","warnings"],"properties":{"service_id":{"type":"string","const":"token_transfer_flow","minLength":19,"maxLength":19},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"token_transfer_flow":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"token_transfer_flow_request":"{\"account\":\"0x0000000000000000000000000000000000000001\",\"transfers\":[{\"from\":\"0x0000000000000000000000000000000000000002\",\"to\":\"0x0000000000000000000000000000000000000001\",\"amount_atomic\":\"5\"},{\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"amount_atomic\":\"2\"}]}"},"output_example":{"service_id":"token_transfer_flow","evidence_scope":"caller_supplied_data","token_transfer_flow":"{\"account\":\"0x0000000000000000000000000000000000000001\",\"inbound_atomic\":\"5\",\"net_atomic\":\"3\",\"outbound_atomic\":\"2\"}","warnings":["Results cover only the supplied transfers."]}},{"service_id":"token_holder_concentration","name":"Token Holder Concentration","description":"Calculate holder shares and concentration metrics from supplied balances.","when_to_use":"Use this service when you need this capability: calculate holder shares and concentration metrics from supplied balances.","category":"tokens_and_transfers","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/token_holder_concentration/invoke","method":"POST","planned_invoke_route":"/api/agent/services/token_holder_concentration/invoke","mcp_tool":"token_holder_concentration","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["token_holder_request"],"properties":{"token_holder_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","holder_concentration","warnings"],"properties":{"service_id":{"type":"string","const":"token_holder_concentration","minLength":26,"maxLength":26},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"holder_concentration":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"token_holder_request":"{\"holders\":[{\"account\":\"0x0000000000000000000000000000000000000001\",\"balance_atomic\":\"60\"},{\"account\":\"0x0000000000000000000000000000000000000002\",\"balance_atomic\":\"40\"}]}"},"output_example":{"service_id":"token_holder_concentration","evidence_scope":"caller_supplied_data","holder_concentration":"{\"hhi\":\"0.52\",\"holder_count\":2,\"top_10_share_percent\":\"100\",\"top_1_share_percent\":\"60\",\"total_atomic\":\"100\"}","warnings":["Incomplete holder sets produce incomplete concentration metrics."]}},{"service_id":"token_vesting_schedule","name":"Token Vesting Schedule","description":"Calculate vested and unvested atomic amounts for a supplied linear vesting schedule.","when_to_use":"Use this service when you need this capability: calculate vested and unvested atomic amounts for a supplied linear vesting schedule.","category":"tokens_and_transfers","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/token_vesting_schedule/invoke","method":"POST","planned_invoke_route":"/api/agent/services/token_vesting_schedule/invoke","mcp_tool":"token_vesting_schedule","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["vesting_schedule_request"],"properties":{"vesting_schedule_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","vesting_schedule","warnings"],"properties":{"service_id":{"type":"string","const":"token_vesting_schedule","minLength":22,"maxLength":22},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"vesting_schedule":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"vesting_schedule_request":"{\"total_atomic\":\"1000\",\"start_ms\":1700000000000,\"cliff_ms\":1700000000000,\"end_ms\":1700000001000,\"at_ms\":1700000000500}"},"output_example":{"service_id":"token_vesting_schedule","evidence_scope":"caller_supplied_data","vesting_schedule":"{\"total_atomic\":\"1000\",\"unvested_atomic\":\"500\",\"vested_atomic\":\"500\",\"vested_percent\":\"50\"}","warnings":["Schedule terms and timestamps are caller supplied."]}},{"service_id":"token_unlock_calculate","name":"Token Unlock Calculate","description":"Calculate aggregate unlocked token amounts across supplied cliff and linear grants.","when_to_use":"Use this service when you need this capability: calculate aggregate unlocked token amounts across supplied cliff and linear grants.","category":"tokens_and_transfers","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/token_unlock_calculate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/token_unlock_calculate/invoke","mcp_tool":"token_unlock_calculate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["token_unlock_request"],"properties":{"token_unlock_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","token_unlock_calculation","warnings"],"properties":{"service_id":{"type":"string","const":"token_unlock_calculate","minLength":22,"maxLength":22},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"token_unlock_calculation":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"token_unlock_request":"{\"grants\":[{\"id\":\"g1\",\"total_atomic\":\"1000\",\"start_ms\":1700000000000,\"cliff_ms\":1700000000000,\"end_ms\":1700000001000}],\"at_ms\":1700000000500}"},"output_example":{"service_id":"token_unlock_calculate","evidence_scope":"caller_supplied_data","token_unlock_calculation":"{\"at_ms\":1700000000500,\"grants\":[{\"id\":\"g1\",\"total_atomic\":\"1000\",\"unvested_atomic\":\"500\",\"vested_atomic\":\"500\",\"vested_percent\":\"50\"}],\"locked_atomic\":\"500\",\"unlocked_atomic\":\"500\"}","warnings":["The service does not verify legal entitlement or contract state."]}},{"service_id":"token_allowance_change","name":"Token Allowance Change","description":"Compare supplied token allowances and identify increases, decreases, and unlimited approvals.","when_to_use":"Use this service when you need this capability: compare supplied token allowances and identify increases, decreases, and unlimited approvals.","category":"tokens_and_transfers","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/token_allowance_change/invoke","method":"POST","planned_invoke_route":"/api/agent/services/token_allowance_change/invoke","mcp_tool":"token_allowance_change","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["allowance_change_request"],"properties":{"allowance_change_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","allowance_change_analysis","warnings"],"properties":{"service_id":{"type":"string","const":"token_allowance_change","minLength":22,"maxLength":22},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"allowance_change_analysis":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"allowance_change_request":"{\"records\":[{\"owner\":\"0x0000000000000000000000000000000000000001\",\"spender\":\"0x0000000000000000000000000000000000000002\",\"before_atomic\":\"1\",\"after_atomic\":\"2\"}]}"},"output_example":{"service_id":"token_allowance_change","evidence_scope":"caller_supplied_data","allowance_change_analysis":"{\"decreases\":0,\"increases\":1,\"records\":[{\"after_atomic\":\"2\",\"before_atomic\":\"1\",\"delta_atomic\":\"1\",\"direction\":\"increase\",\"owner\":\"0x0000000000000000000000000000000000000001\",\"spender\":\"0x0000000000000000000000000000000000000002\",\"unlimited_after\":false}],\"unlimited_after\":0}","warnings":["Allowance records are caller supplied and may be stale."]}},{"service_id":"erc721_transfer_decode","name":"ERC-721 Transfer Decode","description":"Decode supplied ERC-721 transfer calldata or event log.","when_to_use":"Use this service when you need this capability: decode supplied ERC-721 transfer calldata or event log.","category":"nft_data_tools","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/erc721_transfer_decode/invoke","method":"POST","planned_invoke_route":"/api/agent/services/erc721_transfer_decode/invoke","mcp_tool":"erc721_transfer_decode","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["erc721_transfer_request"],"properties":{"erc721_transfer_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","decoded_erc721_transfer","warnings"],"properties":{"service_id":{"type":"string","const":"erc721_transfer_decode","minLength":22,"maxLength":22},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"decoded_erc721_transfer":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"erc721_transfer_request":"{\"kind\":\"calldata\",\"data\":\"0x23b872dd000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001\"}"},"output_example":{"service_id":"erc721_transfer_decode","evidence_scope":"caller_supplied_data","decoded_erc721_transfer":"{\"args\":[\"0x0000000000000000000000000000000000000001\",\"0x0000000000000000000000000000000000000002\",\"1\"],\"kind\":\"calldata\",\"operation\":\"transferFrom\"}","warnings":["Decoding does not prove ownership or transfer success."]}},{"service_id":"erc1155_transfer_decode","name":"ERC-1155 Transfer Decode","description":"Decode supplied ERC-1155 single or batch transfer calldata or event log.","when_to_use":"Use this service when you need this capability: decode supplied ERC-1155 single or batch transfer calldata or event log.","category":"nft_data_tools","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/erc1155_transfer_decode/invoke","method":"POST","planned_invoke_route":"/api/agent/services/erc1155_transfer_decode/invoke","mcp_tool":"erc1155_transfer_decode","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["erc1155_transfer_request"],"properties":{"erc1155_transfer_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","decoded_erc1155_transfer","warnings"],"properties":{"service_id":{"type":"string","const":"erc1155_transfer_decode","minLength":23,"maxLength":23},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"decoded_erc1155_transfer":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"erc1155_transfer_request":"{\"kind\":\"calldata\",\"data\":\"0xf242432a000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000\"}"},"output_example":{"service_id":"erc1155_transfer_decode","evidence_scope":"caller_supplied_data","decoded_erc1155_transfer":"{\"args\":[\"0x0000000000000000000000000000000000000001\",\"0x0000000000000000000000000000000000000002\",\"1\",\"2\",\"0x\"],\"kind\":\"calldata\",\"operation\":\"safeTransferFrom\"}","warnings":["Decoding does not prove balances or transfer success."]}},{"service_id":"nft_metadata_validate","name":"NFT Metadata Validate","description":"Validate supplied NFT metadata fields, URI forms, and bounded attribute records.","when_to_use":"Use this service when you need this capability: validate supplied NFT metadata fields, URI forms, and bounded attribute records.","category":"nft_data_tools","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/nft_metadata_validate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/nft_metadata_validate/invoke","mcp_tool":"nft_metadata_validate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["nft_metadata_request"],"properties":{"nft_metadata_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","nft_metadata_validation","warnings"],"properties":{"service_id":{"type":"string","const":"nft_metadata_validate","minLength":21,"maxLength":21},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"nft_metadata_validation":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"nft_metadata_request":"{\"metadata\":{\"name\":\"NFT\",\"image\":\"ipfs://example\",\"attributes\":[{\"trait_type\":\"Color\",\"value\":\"Blue\"}]}}"},"output_example":{"service_id":"nft_metadata_validate","evidence_scope":"caller_supplied_data","nft_metadata_validation":"{\"errors\":[],\"supplied_fields\":[\"attributes\",\"image\",\"name\"],\"valid\":true}","warnings":["Validation does not fetch media or authenticate the collection."]}},{"service_id":"nft_trait_distribution","name":"NFT Trait Distribution","description":"Calculate trait frequencies and rarity shares from supplied NFT metadata.","when_to_use":"Use this service when you need this capability: calculate trait frequencies and rarity shares from supplied NFT metadata.","category":"nft_data_tools","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/nft_trait_distribution/invoke","method":"POST","planned_invoke_route":"/api/agent/services/nft_trait_distribution/invoke","mcp_tool":"nft_trait_distribution","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["nft_trait_request"],"properties":{"nft_trait_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","nft_trait_distribution","warnings"],"properties":{"service_id":{"type":"string","const":"nft_trait_distribution","minLength":22,"maxLength":22},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"nft_trait_distribution":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"nft_trait_request":"{\"items\":[{\"attributes\":[{\"trait_type\":\"Color\",\"value\":\"Blue\"}]},{\"attributes\":[{\"trait_type\":\"Color\",\"value\":\"Red\"}]}]}"},"output_example":{"service_id":"nft_trait_distribution","evidence_scope":"caller_supplied_data","nft_trait_distribution":"{\"item_count\":2,\"traits\":[{\"count\":1,\"share_percent\":\"50\",\"trait_type\":\"Color\",\"value\":\"Blue\"},{\"count\":1,\"share_percent\":\"50\",\"trait_type\":\"Color\",\"value\":\"Red\"}]}","warnings":["Distribution covers only supplied items and traits."]}},{"service_id":"nft_collection_change","name":"NFT Collection Change","description":"Compare two supplied collection snapshots by token ID and metadata digest.","when_to_use":"Use this service when you need this capability: compare two supplied collection snapshots by token ID and metadata digest.","category":"nft_data_tools","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/nft_collection_change/invoke","method":"POST","planned_invoke_route":"/api/agent/services/nft_collection_change/invoke","mcp_tool":"nft_collection_change","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["nft_collection_change_request"],"properties":{"nft_collection_change_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","nft_collection_changes","warnings"],"properties":{"service_id":{"type":"string","const":"nft_collection_change","minLength":21,"maxLength":21},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"nft_collection_changes":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"nft_collection_change_request":"{\"before\":[{\"token_id\":\"1\",\"metadata_hash\":\"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"}],\"after\":[{\"token_id\":\"1\",\"metadata_hash\":\"0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\"},{\"token_id\":\"2\",\"metadata_hash\":\"0xcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc\"}]}"},"output_example":{"service_id":"nft_collection_change","evidence_scope":"caller_supplied_data","nft_collection_changes":"{\"added\":[\"2\"],\"changed\":[\"1\"],\"removed\":[],\"unchanged_count\":0}","warnings":["Snapshots are caller supplied and not chain verified."]}},{"service_id":"nft_ownership_summary","name":"NFT Ownership Summary","description":"Summarize owners and token holdings from supplied ownership records.","when_to_use":"Use this service when you need this capability: summarize owners and token holdings from supplied ownership records.","category":"nft_data_tools","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/nft_ownership_summary/invoke","method":"POST","planned_invoke_route":"/api/agent/services/nft_ownership_summary/invoke","mcp_tool":"nft_ownership_summary","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["nft_ownership_request"],"properties":{"nft_ownership_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","nft_ownership_summary","warnings"],"properties":{"service_id":{"type":"string","const":"nft_ownership_summary","minLength":21,"maxLength":21},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"nft_ownership_summary":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"nft_ownership_request":"{\"records\":[{\"owner\":\"0x0000000000000000000000000000000000000001\",\"token_id\":\"1\"},{\"owner\":\"0x0000000000000000000000000000000000000001\",\"token_id\":\"2\"}]}"},"output_example":{"service_id":"nft_ownership_summary","evidence_scope":"caller_supplied_data","nft_ownership_summary":"{\"owner_count\":1,\"owners\":{\"0x0000000000000000000000000000000000000001\":[\"1\",\"2\"]},\"token_record_count\":2}","warnings":["Summary is not a current ownership lookup."]}},{"service_id":"nft_transfer_history","name":"NFT Transfer History","description":"Order and summarize supplied NFT transfers for one token or collection.","when_to_use":"Use this service when you need this capability: order and summarize supplied NFT transfers for one token or collection.","category":"nft_data_tools","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/nft_transfer_history/invoke","method":"POST","planned_invoke_route":"/api/agent/services/nft_transfer_history/invoke","mcp_tool":"nft_transfer_history","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["nft_history_request"],"properties":{"nft_history_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","nft_transfer_history","warnings"],"properties":{"service_id":{"type":"string","const":"nft_transfer_history","minLength":20,"maxLength":20},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"nft_transfer_history":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"nft_history_request":"{\"transfers\":[{\"token_id\":\"1\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"timestamp\":1700000000000,\"transaction_hash\":\"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"log_index\":0}]}"},"output_example":{"service_id":"nft_transfer_history","evidence_scope":"caller_supplied_data","nft_transfer_history":"{\"first_timestamp_ms\":1700000000000,\"last_timestamp_ms\":1700000000000,\"transfer_count\":1,\"transfers\":[{\"from\":\"0x0000000000000000000000000000000000000001\",\"log_index\":0,\"timestamp_ms\":1700000000000,\"to\":\"0x0000000000000000000000000000000000000002\",\"token_id\":\"1\",\"transaction_hash\":\"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"}]}","warnings":["History completeness depends on supplied records."]}},{"service_id":"nft_uri_template_expand","name":"NFT URI Template Expand","description":"Expand bounded ERC-1155 ID templates or append ERC-721 token IDs to supplied base URIs.","when_to_use":"Use this service when you need this capability: expand bounded ERC-1155 ID templates or append ERC-721 token IDs to supplied base URIs.","category":"nft_data_tools","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/nft_uri_template_expand/invoke","method":"POST","planned_invoke_route":"/api/agent/services/nft_uri_template_expand/invoke","mcp_tool":"nft_uri_template_expand","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["nft_uri_request"],"properties":{"nft_uri_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","expanded_nft_uri","warnings"],"properties":{"service_id":{"type":"string","const":"nft_uri_template_expand","minLength":23,"maxLength":23},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"expanded_nft_uri":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"nft_uri_request":"{\"template\":\"ipfs://example/{id}\",\"token_id\":\"1\"}"},"output_example":{"service_id":"nft_uri_template_expand","evidence_scope":"caller_supplied_data","expanded_nft_uri":"{\"token_id_decimal\":\"1\",\"token_id_hex_64\":\"0000000000000000000000000000000000000000000000000000000000000001\",\"uri\":\"ipfs://example/0000000000000000000000000000000000000000000000000000000000000001\"}","warnings":["URI expansion does not fetch or validate content."]}},{"service_id":"nft_royalty_calculate","name":"NFT Royalty Calculate","description":"Calculate exact royalty amounts from supplied sale value and basis points.","when_to_use":"Use this service when you need this capability: calculate exact royalty amounts from supplied sale value and basis points.","category":"nft_data_tools","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/nft_royalty_calculate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/nft_royalty_calculate/invoke","mcp_tool":"nft_royalty_calculate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["nft_royalty_request"],"properties":{"nft_royalty_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","nft_royalty_calculation","warnings"],"properties":{"service_id":{"type":"string","const":"nft_royalty_calculate","minLength":21,"maxLength":21},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"nft_royalty_calculation":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"nft_royalty_request":"{\"sale_atomic\":\"10000\",\"basis_points\":500}"},"output_example":{"service_id":"nft_royalty_calculate","evidence_scope":"caller_supplied_data","nft_royalty_calculation":"{\"basis_points\":500,\"royalty_atomic\":\"500\",\"sale_atomic\":\"10000\",\"seller_proceeds_before_fees_atomic\":\"9500\"}","warnings":["Royalty configuration and enforceability are not independently verified."]}},{"service_id":"nft_duplicate_media_hashes","name":"NFT Duplicate Media Hash Detect","description":"Group supplied token IDs by identical caller-supplied media hashes.","when_to_use":"Use this service when you need this capability: group supplied token IDs by identical caller-supplied media hashes.","category":"nft_data_tools","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/nft_duplicate_media_hashes/invoke","method":"POST","planned_invoke_route":"/api/agent/services/nft_duplicate_media_hashes/invoke","mcp_tool":"nft_duplicate_media_hashes","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["nft_media_hash_request"],"properties":{"nft_media_hash_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","duplicate_media_hashes","warnings"],"properties":{"service_id":{"type":"string","const":"nft_duplicate_media_hashes","minLength":26,"maxLength":26},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"duplicate_media_hashes":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"nft_media_hash_request":"{\"records\":[{\"token_id\":\"1\",\"media_hash\":\"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"},{\"token_id\":\"2\",\"media_hash\":\"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"}]}"},"output_example":{"service_id":"nft_duplicate_media_hashes","evidence_scope":"caller_supplied_data","duplicate_media_hashes":"{\"duplicate_groups\":[{\"media_hash\":\"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"token_ids\":[\"1\",\"2\"]}],\"unique_hash_count\":1}","warnings":["Hashes are not computed from remote media and are trusted as supplied."]}},{"service_id":"wallet_activity_timeline","name":"Wallet Activity Timeline","description":"Sort and normalize bounded supplied wallet activity records.","when_to_use":"Use this service when you need this capability: sort and normalize bounded supplied wallet activity records.","category":"wallet_activity_analysis","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/wallet_activity_timeline/invoke","method":"POST","planned_invoke_route":"/api/agent/services/wallet_activity_timeline/invoke","mcp_tool":"wallet_activity_timeline","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["wallet_timeline_request"],"properties":{"wallet_timeline_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","wallet_activity_timeline","warnings"],"properties":{"service_id":{"type":"string","const":"wallet_activity_timeline","minLength":24,"maxLength":24},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"wallet_activity_timeline":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"wallet_timeline_request":"{\"records\":[{\"timestamp\":1700000000000,\"transaction_hash\":\"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"amount_atomic\":\"1\"}]}"},"output_example":{"service_id":"wallet_activity_timeline","evidence_scope":"caller_supplied_data","wallet_activity_timeline":"{\"end_ms\":1700000000000,\"record_count\":1,\"records\":[{\"amount_atomic\":\"1\",\"timestamp\":1700000000000,\"timestamp_ms\":1700000000000,\"transaction_hash\":\"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"}],\"start_ms\":1700000000000}","warnings":["Timeline is not a complete or live wallet history."]}},{"service_id":"wallet_asset_flows","name":"Wallet Asset Flows","description":"Aggregate supplied wallet records into exact per-asset inflow, outflow, and net amounts.","when_to_use":"Use this service when you need this capability: aggregate supplied wallet records into exact per-asset inflow, outflow, and net amounts.","category":"wallet_activity_analysis","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/wallet_asset_flows/invoke","method":"POST","planned_invoke_route":"/api/agent/services/wallet_asset_flows/invoke","mcp_tool":"wallet_asset_flows","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["wallet_asset_flow_request"],"properties":{"wallet_asset_flow_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","wallet_asset_flows","warnings"],"properties":{"service_id":{"type":"string","const":"wallet_asset_flows","minLength":18,"maxLength":18},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"wallet_asset_flows":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"wallet_asset_flow_request":"{\"records\":[{\"asset\":\"USDC\",\"direction\":\"in\",\"amount_atomic\":\"10\"},{\"asset\":\"USDC\",\"direction\":\"out\",\"amount_atomic\":\"3\"}]}"},"output_example":{"service_id":"wallet_asset_flows","evidence_scope":"caller_supplied_data","wallet_asset_flows":"{\"assets\":{\"USDC\":{\"inbound_atomic\":\"10\",\"net_atomic\":\"7\",\"outbound_atomic\":\"3\"}}}","warnings":["Results cover only supplied records."]}},{"service_id":"wallet_counterparty_summary","name":"Wallet Counterparty Summary","description":"Summarize supplied interactions by counterparty and direction.","when_to_use":"Use this service when you need this capability: summarize supplied interactions by counterparty and direction.","category":"wallet_activity_analysis","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/wallet_counterparty_summary/invoke","method":"POST","planned_invoke_route":"/api/agent/services/wallet_counterparty_summary/invoke","mcp_tool":"wallet_counterparty_summary","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["wallet_counterparty_request"],"properties":{"wallet_counterparty_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","wallet_counterparty_summary","warnings"],"properties":{"service_id":{"type":"string","const":"wallet_counterparty_summary","minLength":27,"maxLength":27},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"wallet_counterparty_summary":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"wallet_counterparty_request":"{\"records\":[{\"counterparty\":\"0x0000000000000000000000000000000000000002\",\"direction\":\"interaction\"}]}"},"output_example":{"service_id":"wallet_counterparty_summary","evidence_scope":"caller_supplied_data","wallet_counterparty_summary":"{\"counterparties\":{\"0x0000000000000000000000000000000000000002\":{\"in\":0,\"interaction\":1,\"out\":0}},\"counterparty_count\":1}","warnings":["Labels and identities are not inferred or verified."]}},{"service_id":"wallet_gas_spend","name":"Wallet Gas Spend","description":"Calculate exact gas spending from supplied gas-used and effective-price records.","when_to_use":"Use this service when you need this capability: calculate exact gas spending from supplied gas-used and effective-price records.","category":"wallet_activity_analysis","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/wallet_gas_spend/invoke","method":"POST","planned_invoke_route":"/api/agent/services/wallet_gas_spend/invoke","mcp_tool":"wallet_gas_spend","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["wallet_gas_request"],"properties":{"wallet_gas_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","wallet_gas_spend","warnings"],"properties":{"service_id":{"type":"string","const":"wallet_gas_spend","minLength":16,"maxLength":16},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"wallet_gas_spend":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"wallet_gas_request":"{\"records\":[{\"transaction_hash\":\"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"gas_used\":\"21000\",\"gas_price\":\"100\"}]}"},"output_example":{"service_id":"wallet_gas_spend","evidence_scope":"caller_supplied_data","wallet_gas_spend":"{\"records\":[{\"fee_atomic\":\"2100000\",\"transaction_hash\":\"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"}],\"total_gas_atomic\":\"2100000\",\"transaction_count\":1}","warnings":["Gas data is caller supplied and does not include omitted chains or transactions."]}},{"service_id":"wallet_nonce_gaps","name":"Wallet Nonce Gap Detect","description":"Find missing and duplicate nonces in a supplied account transaction sequence.","when_to_use":"Use this service when you need this capability: find missing and duplicate nonces in a supplied account transaction sequence.","category":"wallet_activity_analysis","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/wallet_nonce_gaps/invoke","method":"POST","planned_invoke_route":"/api/agent/services/wallet_nonce_gaps/invoke","mcp_tool":"wallet_nonce_gaps","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["wallet_nonce_request"],"properties":{"wallet_nonce_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","wallet_nonce_gaps","warnings"],"properties":{"service_id":{"type":"string","const":"wallet_nonce_gaps","minLength":17,"maxLength":17},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"wallet_nonce_gaps":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"wallet_nonce_request":"{\"nonces\":[\"1\",\"3\",\"3\"]}"},"output_example":{"service_id":"wallet_nonce_gaps","evidence_scope":"caller_supplied_data","wallet_nonce_gaps":"{\"duplicates\":[\"3\"],\"maximum_nonce\":\"3\",\"minimum_nonce\":\"1\",\"missing\":[\"2\"],\"truncated\":false}","warnings":["Pending and replaced transactions may affect interpretation."]}},{"service_id":"wallet_replacement_transactions","name":"Wallet Replacement Transaction Detect","description":"Group supplied transactions sharing sender and nonce and identify fee-ranked replacements.","when_to_use":"Use this service when you need this capability: group supplied transactions sharing sender and nonce and identify fee-ranked replacements.","category":"wallet_activity_analysis","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/wallet_replacement_transactions/invoke","method":"POST","planned_invoke_route":"/api/agent/services/wallet_replacement_transactions/invoke","mcp_tool":"wallet_replacement_transactions","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["wallet_replacement_request"],"properties":{"wallet_replacement_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","wallet_replacement_groups","warnings"],"properties":{"service_id":{"type":"string","const":"wallet_replacement_transactions","minLength":31,"maxLength":31},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"wallet_replacement_groups":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"wallet_replacement_request":"{\"transactions\":[{\"from\":\"0x0000000000000000000000000000000000000001\",\"nonce\":\"1\",\"gas_price\":\"100\",\"transaction_hash\":\"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"},{\"from\":\"0x0000000000000000000000000000000000000001\",\"nonce\":\"1\",\"gas_price\":\"120\",\"transaction_hash\":\"0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\"}]}"},"output_example":{"service_id":"wallet_replacement_transactions","evidence_scope":"caller_supplied_data","wallet_replacement_groups":"{\"replacement_groups\":[{\"identity\":\"0x0000000000000000000000000000000000000001:1\",\"transactions\":[{\"gas_price\":\"120\",\"transaction_hash\":\"0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\"},{\"gas_price\":\"100\",\"transaction_hash\":\"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"}]}]}","warnings":["Replacement status is inferred only from supplied records."]}},{"service_id":"wallet_allowance_exposure","name":"Wallet Allowance Exposure","description":"Summarize supplied token allowance exposure by spender and flag unlimited values.","when_to_use":"Use this service when you need this capability: summarize supplied token allowance exposure by spender and flag unlimited values.","category":"wallet_activity_analysis","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/wallet_allowance_exposure/invoke","method":"POST","planned_invoke_route":"/api/agent/services/wallet_allowance_exposure/invoke","mcp_tool":"wallet_allowance_exposure","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["wallet_allowance_request"],"properties":{"wallet_allowance_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","wallet_allowance_exposure","warnings"],"properties":{"service_id":{"type":"string","const":"wallet_allowance_exposure","minLength":25,"maxLength":25},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"wallet_allowance_exposure":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"wallet_allowance_request":"{\"allowances\":[{\"token\":\"0x0000000000000000000000000000000000000001\",\"spender\":\"0x0000000000000000000000000000000000000002\",\"amount_atomic\":\"115792089237316195423570985008687907853269984665640564039457584007913129639935\"}]}"},"output_example":{"service_id":"wallet_allowance_exposure","evidence_scope":"caller_supplied_data","wallet_allowance_exposure":"{\"allowance_count\":1,\"allowances\":[{\"amount_atomic\":\"115792089237316195423570985008687907853269984665640564039457584007913129639935\",\"spender\":\"0x0000000000000000000000000000000000000002\",\"token\":\"0x0000000000000000000000000000000000000001\",\"unlimited\":true}],\"unlimited_count\":1}","warnings":["The service does not query or revoke allowances."]}},{"service_id":"wallet_duplicate_records","name":"Wallet Duplicate Record Detect","description":"Detect duplicate supplied activity records by transaction, log, and chain identity.","when_to_use":"Use this service when you need this capability: detect duplicate supplied activity records by transaction, log, and chain identity.","category":"wallet_activity_analysis","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/wallet_duplicate_records/invoke","method":"POST","planned_invoke_route":"/api/agent/services/wallet_duplicate_records/invoke","mcp_tool":"wallet_duplicate_records","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["wallet_duplicate_request"],"properties":{"wallet_duplicate_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","wallet_duplicate_records","warnings"],"properties":{"service_id":{"type":"string","const":"wallet_duplicate_records","minLength":24,"maxLength":24},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"wallet_duplicate_records":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"wallet_duplicate_request":"{\"records\":[{\"chain_id\":\"eip155:8453\",\"transaction_hash\":\"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"log_index\":0},{\"chain_id\":\"eip155:8453\",\"transaction_hash\":\"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"log_index\":0}]}"},"output_example":{"service_id":"wallet_duplicate_records","evidence_scope":"caller_supplied_data","wallet_duplicate_records":"{\"duplicate_groups\":[{\"identity\":\"eip155:8453:0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:0\",\"indexes\":[0,1]}],\"unique_record_count\":1}","warnings":["Missing identifiers may prevent duplicate detection."]}},{"service_id":"wallet_multichain_snapshot","name":"Wallet Multichain Snapshot","description":"Normalize supplied per-chain asset balances into one bounded snapshot.","when_to_use":"Use this service when you need this capability: normalize supplied per-chain asset balances into one bounded snapshot.","category":"wallet_activity_analysis","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/wallet_multichain_snapshot/invoke","method":"POST","planned_invoke_route":"/api/agent/services/wallet_multichain_snapshot/invoke","mcp_tool":"wallet_multichain_snapshot","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["wallet_multichain_request"],"properties":{"wallet_multichain_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","wallet_multichain_snapshot","warnings"],"properties":{"service_id":{"type":"string","const":"wallet_multichain_snapshot","minLength":26,"maxLength":26},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"wallet_multichain_snapshot":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"wallet_multichain_request":"{\"balances\":[{\"chain_id\":\"eip155:8453\",\"asset\":\"USDC\",\"balance_atomic\":\"10\",\"as_of\":1700000000000}]}"},"output_example":{"service_id":"wallet_multichain_snapshot","evidence_scope":"caller_supplied_data","wallet_multichain_snapshot":"{\"chains\":[\"eip155:8453\"],\"position_count\":1,\"positions\":[{\"as_of_ms\":1700000000000,\"asset\":\"USDC\",\"balance_atomic\":\"10\",\"chain_id\":\"eip155:8453\"}]}","warnings":["Balances and prices are caller supplied and may be stale."]}},{"service_id":"wallet_period_compare","name":"Wallet Period Compare","description":"Compare two supplied wallet activity periods by count, asset flow, and gas spend.","when_to_use":"Use this service when you need this capability: compare two supplied wallet activity periods by count, asset flow, and gas spend.","category":"wallet_activity_analysis","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/wallet_period_compare/invoke","method":"POST","planned_invoke_route":"/api/agent/services/wallet_period_compare/invoke","mcp_tool":"wallet_period_compare","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["wallet_period_request"],"properties":{"wallet_period_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","wallet_period_comparison","warnings"],"properties":{"service_id":{"type":"string","const":"wallet_period_compare","minLength":21,"maxLength":21},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"wallet_period_comparison":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"wallet_period_request":"{\"before\":[{\"amount_atomic\":\"1\",\"gas_used\":\"1\",\"gas_price\":\"2\"}],\"after\":[{\"amount_atomic\":\"3\",\"gas_used\":\"2\",\"gas_price\":\"2\"}]}"},"output_example":{"service_id":"wallet_period_compare","evidence_scope":"caller_supplied_data","wallet_period_comparison":"{\"after\":{\"amount_atomic\":\"3\",\"gas_atomic\":\"4\",\"record_count\":1},\"amount_change_atomic\":\"2\",\"before\":{\"amount_atomic\":\"1\",\"gas_atomic\":\"2\",\"record_count\":1},\"gas_change_atomic\":\"2\",\"record_count_change\":0}","warnings":["Period coverage must be supplied consistently by the caller."]}},{"service_id":"defi_constant_product_quote","name":"Constant Product AMM Quote","description":"Calculate a fee-adjusted constant-product AMM output from supplied reserves and input.","when_to_use":"Use this service when you need this capability: calculate a fee-adjusted constant-product AMM output from supplied reserves and input.","category":"defi_calculations","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/defi_constant_product_quote/invoke","method":"POST","planned_invoke_route":"/api/agent/services/defi_constant_product_quote/invoke","mcp_tool":"defi_constant_product_quote","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["amm_quote_request"],"properties":{"amm_quote_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","amm_quote","warnings"],"properties":{"service_id":{"type":"string","const":"defi_constant_product_quote","minLength":27,"maxLength":27},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"amm_quote":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"amm_quote_request":"{\"reserve_in\":\"1000\",\"reserve_out\":\"2000\",\"amount_in\":\"10\",\"fee_bps\":30}"},"output_example":{"service_id":"defi_constant_product_quote","evidence_scope":"caller_supplied_data","amm_quote":"{\"amount_out\":\"19.743160687941225977\",\"effective_amount_in\":\"9.97\",\"execution_price\":\"1.974316068794122597\",\"invariant_model\":\"constant_product\",\"price_impact_percent\":\"1.284196560293\",\"spot_price\":\"2\"}","warnings":["Quote ignores routing, MEV, state changes, and token transfer fees."]}},{"service_id":"defi_price_impact","name":"AMM Price Impact","description":"Calculate constant-product execution price and price impact from supplied pool state.","when_to_use":"Use this service when you need this capability: calculate constant-product execution price and price impact from supplied pool state.","category":"defi_calculations","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/defi_price_impact/invoke","method":"POST","planned_invoke_route":"/api/agent/services/defi_price_impact/invoke","mcp_tool":"defi_price_impact","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["price_impact_request"],"properties":{"price_impact_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","price_impact","warnings"],"properties":{"service_id":{"type":"string","const":"defi_price_impact","minLength":17,"maxLength":17},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"price_impact":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"price_impact_request":"{\"reserve_in\":\"1000\",\"reserve_out\":\"2000\",\"amount_in\":\"10\",\"fee_bps\":30}"},"output_example":{"service_id":"defi_price_impact","evidence_scope":"caller_supplied_data","price_impact":"{\"execution_price\":\"1.974316068794122597\",\"price_impact_percent\":\"1.284196560293\",\"spot_price\":\"2\"}","warnings":["Calculation is a deterministic model, not an executable quote."]}},{"service_id":"defi_liquidity_share","name":"Liquidity Share Calculate","description":"Calculate a provider share from supplied LP balance and total supply.","when_to_use":"Use this service when you need this capability: calculate a provider share from supplied LP balance and total supply.","category":"defi_calculations","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/defi_liquidity_share/invoke","method":"POST","planned_invoke_route":"/api/agent/services/defi_liquidity_share/invoke","mcp_tool":"defi_liquidity_share","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["liquidity_share_request"],"properties":{"liquidity_share_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","liquidity_share","warnings"],"properties":{"service_id":{"type":"string","const":"defi_liquidity_share","minLength":20,"maxLength":20},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"liquidity_share":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"liquidity_share_request":"{\"lp_balance\":\"10\",\"lp_total_supply\":\"100\"}"},"output_example":{"service_id":"defi_liquidity_share","evidence_scope":"caller_supplied_data","liquidity_share":"{\"share\":\"0.1\",\"share_percent\":\"10\"}","warnings":["LP balances and supply are caller supplied."]}},{"service_id":"defi_liquidity_change","name":"Liquidity Change Calculate","description":"Calculate proportional reserve deposits or withdrawals for a supplied LP share change.","when_to_use":"Use this service when you need this capability: calculate proportional reserve deposits or withdrawals for a supplied LP share change.","category":"defi_calculations","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/defi_liquidity_change/invoke","method":"POST","planned_invoke_route":"/api/agent/services/defi_liquidity_change/invoke","mcp_tool":"defi_liquidity_change","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["liquidity_change_request"],"properties":{"liquidity_change_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","liquidity_change","warnings"],"properties":{"service_id":{"type":"string","const":"defi_liquidity_change","minLength":21,"maxLength":21},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"liquidity_change":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"liquidity_change_request":"{\"reserve0\":\"1000\",\"reserve1\":\"2000\",\"lp_total_supply\":\"100\",\"lp_change\":\"10\"}"},"output_example":{"service_id":"defi_liquidity_change","evidence_scope":"caller_supplied_data","liquidity_change":"{\"lp_change\":\"10\",\"proportional_share\":\"0.1\",\"token0_change\":\"100\",\"token1_change\":\"200\"}","warnings":["Calculation excludes protocol-specific rounding and fees."]}},{"service_id":"defi_impermanent_loss","name":"Impermanent Loss Calculate","description":"Calculate standard two-asset constant-product impermanent loss from a supplied price ratio.","when_to_use":"Use this service when you need this capability: calculate standard two-asset constant-product impermanent loss from a supplied price ratio.","category":"defi_calculations","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/defi_impermanent_loss/invoke","method":"POST","planned_invoke_route":"/api/agent/services/defi_impermanent_loss/invoke","mcp_tool":"defi_impermanent_loss","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["impermanent_loss_request"],"properties":{"impermanent_loss_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","impermanent_loss","warnings"],"properties":{"service_id":{"type":"string","const":"defi_impermanent_loss","minLength":21,"maxLength":21},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"impermanent_loss":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"impermanent_loss_request":"{\"price_ratio\":\"2\"}"},"output_example":{"service_id":"defi_impermanent_loss","evidence_scope":"caller_supplied_data","impermanent_loss":"{\"impermanent_loss_percent\":\"-5.719095841794\",\"model\":\"two_asset_50_50_constant_product\",\"price_ratio\":\"2\",\"value_ratio_vs_hold\":\"0.942809041582\"}","warnings":["Model excludes fees, incentives, and concentrated liquidity."]}},{"service_id":"defi_concentrated_liquidity_amounts","name":"Concentrated Liquidity Amounts","description":"Calculate token amounts for supplied liquidity and square-root price bounds.","when_to_use":"Use this service when you need this capability: calculate token amounts for supplied liquidity and square-root price bounds.","category":"defi_calculations","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/defi_concentrated_liquidity_amounts/invoke","method":"POST","planned_invoke_route":"/api/agent/services/defi_concentrated_liquidity_amounts/invoke","mcp_tool":"defi_concentrated_liquidity_amounts","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["concentrated_liquidity_request"],"properties":{"concentrated_liquidity_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","concentrated_liquidity_amounts","warnings"],"properties":{"service_id":{"type":"string","const":"defi_concentrated_liquidity_amounts","minLength":35,"maxLength":35},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"concentrated_liquidity_amounts":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"concentrated_liquidity_request":"{\"liquidity\":\"100\",\"sqrt_price\":\"2\",\"sqrt_lower\":\"1\",\"sqrt_upper\":\"3\"}"},"output_example":{"service_id":"defi_concentrated_liquidity_amounts","evidence_scope":"caller_supplied_data","concentrated_liquidity_amounts":"{\"amount0\":\"16.666666666666666666\",\"amount1\":\"100\",\"region\":\"in_range\"}","warnings":["Caller must supply protocol-compatible liquidity and square-root prices."]}},{"service_id":"defi_lending_health_factor","name":"Lending Health Factor","description":"Calculate a weighted lending health factor from supplied collateral, debt, prices, and thresholds.","when_to_use":"Use this service when you need this capability: calculate a weighted lending health factor from supplied collateral, debt, prices, and thresholds.","category":"defi_calculations","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/defi_lending_health_factor/invoke","method":"POST","planned_invoke_route":"/api/agent/services/defi_lending_health_factor/invoke","mcp_tool":"defi_lending_health_factor","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["lending_health_request"],"properties":{"lending_health_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","lending_health_factor","warnings"],"properties":{"service_id":{"type":"string","const":"defi_lending_health_factor","minLength":26,"maxLength":26},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"lending_health_factor":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"lending_health_request":"{\"collateral\":[{\"amount\":\"2\",\"price\":\"100\",\"liquidation_threshold_bps\":8000}],\"debt\":[{\"amount\":\"1\",\"price\":\"100\"}]}"},"output_example":{"service_id":"defi_lending_health_factor","evidence_scope":"caller_supplied_data","lending_health_factor":"{\"adjusted_collateral_value\":\"160\",\"debt_value\":\"100\",\"health_factor\":\"1.6\",\"liquidatable_at_or_below_one\":false}","warnings":["Protocol rules, prices, and positions are caller supplied."]}},{"service_id":"defi_liquidation_threshold","name":"Liquidation Threshold Calculate","description":"Calculate maximum debt and liquidation distance from supplied collateral values and thresholds.","when_to_use":"Use this service when you need this capability: calculate maximum debt and liquidation distance from supplied collateral values and thresholds.","category":"defi_calculations","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/defi_liquidation_threshold/invoke","method":"POST","planned_invoke_route":"/api/agent/services/defi_liquidation_threshold/invoke","mcp_tool":"defi_liquidation_threshold","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["liquidation_threshold_request"],"properties":{"liquidation_threshold_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","liquidation_threshold","warnings"],"properties":{"service_id":{"type":"string","const":"defi_liquidation_threshold","minLength":26,"maxLength":26},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"liquidation_threshold":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"liquidation_threshold_request":"{\"collateral\":[{\"value\":\"200\",\"liquidation_threshold_bps\":8000}],\"current_debt\":\"100\"}"},"output_example":{"service_id":"defi_liquidation_threshold","evidence_scope":"caller_supplied_data","liquidation_threshold":"{\"collateral_value\":\"200\",\"current_debt\":\"100\",\"distance_to_threshold\":\"60\",\"maximum_debt_at_threshold\":\"160\"}","warnings":["This is not a liquidation prediction or live protocol check."]}},{"service_id":"defi_staking_projection","name":"Staking Projection","description":"Project deterministic staking growth from supplied principal, APR, duration, and compounding frequency.","when_to_use":"Use this service when you need this capability: project deterministic staking growth from supplied principal, APR, duration, and compounding frequency.","category":"defi_calculations","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/defi_staking_projection/invoke","method":"POST","planned_invoke_route":"/api/agent/services/defi_staking_projection/invoke","mcp_tool":"defi_staking_projection","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["staking_projection_request"],"properties":{"staking_projection_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","staking_projection","warnings"],"properties":{"service_id":{"type":"string","const":"defi_staking_projection","minLength":23,"maxLength":23},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"staking_projection":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"staking_projection_request":"{\"principal\":\"100\",\"apr_percent\":\"5\",\"days\":365,\"compounds_per_year\":12}"},"output_example":{"service_id":"defi_staking_projection","evidence_scope":"caller_supplied_data","staking_projection":"{\"assumptions\":{\"compounds_per_year\":12,\"days\":365},\"principal\":\"100\",\"projected_amount\":\"105.116189788173\",\"projected_reward\":\"5.116189788173\"}","warnings":["Projection is not a yield guarantee and excludes slashing and price risk."]}},{"service_id":"defi_apr_apy_convert","name":"APR APY Convert","description":"Convert supplied APR to APY or APY to APR for an explicit compounding frequency.","when_to_use":"Use this service when you need this capability: convert supplied APR to APY or APY to APR for an explicit compounding frequency.","category":"defi_calculations","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/defi_apr_apy_convert/invoke","method":"POST","planned_invoke_route":"/api/agent/services/defi_apr_apy_convert/invoke","mcp_tool":"defi_apr_apy_convert","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["apr_apy_request"],"properties":{"apr_apy_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","apr_apy_conversion","warnings"],"properties":{"service_id":{"type":"string","const":"defi_apr_apy_convert","minLength":20,"maxLength":20},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"apr_apy_conversion":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"apr_apy_request":"{\"mode\":\"apr_to_apy\",\"rate_percent\":\"5\",\"compounds_per_year\":12}"},"output_example":{"service_id":"defi_apr_apy_convert","evidence_scope":"caller_supplied_data","apr_apy_conversion":"{\"compounds_per_year\":12,\"input_rate_percent\":\"5\",\"mode\":\"apr_to_apy\",\"output_rate_percent\":\"5.116189788173\"}","warnings":["Rates are mathematical inputs, not provider offers."]}},{"service_id":"ohlcv_validate","name":"OHLCV Dataset Validate","description":"Validate ordering, finite values, candle invariants, and interval consistency in supplied OHLCV data.","when_to_use":"Use this service when you need this capability: validate ordering, finite values, candle invariants, and interval consistency in supplied OHLCV data.","category":"crypto_market_dataset_analysis","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/ohlcv_validate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/ohlcv_validate/invoke","mcp_tool":"ohlcv_validate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["ohlcv_validation_request"],"properties":{"ohlcv_validation_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","ohlcv_validation","warnings"],"properties":{"service_id":{"type":"string","const":"ohlcv_validate","minLength":14,"maxLength":14},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"ohlcv_validation":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"ohlcv_validation_request":"{\"candles\":[{\"timestamp\":1700000000000,\"open\":\"10\",\"high\":\"12\",\"low\":\"9\",\"close\":\"11\",\"volume\":\"100\"},{\"timestamp\":1700000060000,\"open\":\"11\",\"high\":\"13\",\"low\":\"10\",\"close\":\"12\",\"volume\":\"120\"}]}"},"output_example":{"service_id":"ohlcv_validate","evidence_scope":"caller_supplied_data","ohlcv_validation":"{\"candle_count\":2,\"errors\":[],\"errors_truncated\":false,\"valid\":true}","warnings":["Validation does not establish source accuracy or market completeness."]}},{"service_id":"trades_to_candles","name":"Trades to Candles","description":"Aggregate bounded supplied trades into deterministic OHLCV candles.","when_to_use":"Use this service when you need this capability: aggregate bounded supplied trades into deterministic OHLCV candles.","category":"crypto_market_dataset_analysis","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/trades_to_candles/invoke","method":"POST","planned_invoke_route":"/api/agent/services/trades_to_candles/invoke","mcp_tool":"trades_to_candles","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["trade_candle_request"],"properties":{"trade_candle_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","generated_candles","warnings"],"properties":{"service_id":{"type":"string","const":"trades_to_candles","minLength":17,"maxLength":17},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"generated_candles":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"trade_candle_request":"{\"interval_ms\":60000,\"trades\":[{\"timestamp\":1700000000000,\"price\":\"10\",\"volume\":\"2\"},{\"timestamp\":1700000001000,\"price\":\"11\",\"volume\":\"3\"}]}"},"output_example":{"service_id":"trades_to_candles","evidence_scope":"caller_supplied_data","generated_candles":"{\"candles\":[{\"close\":\"11\",\"high\":\"11\",\"low\":\"10\",\"open\":\"10\",\"timestamp_ms\":1699999980000,\"trade_count\":2,\"volume\":\"5\"}],\"interval_ms\":60000}","warnings":["Output covers only supplied trades and interval boundaries."]}},{"service_id":"candles_resample","name":"Candle Resample","description":"Resample supplied ordered OHLCV candles to a larger fixed interval.","when_to_use":"Use this service when you need this capability: resample supplied ordered OHLCV candles to a larger fixed interval.","category":"crypto_market_dataset_analysis","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/candles_resample/invoke","method":"POST","planned_invoke_route":"/api/agent/services/candles_resample/invoke","mcp_tool":"candles_resample","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["candle_resample_request"],"properties":{"candle_resample_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","resampled_candles","warnings"],"properties":{"service_id":{"type":"string","const":"candles_resample","minLength":16,"maxLength":16},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"resampled_candles":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"candle_resample_request":"{\"interval_ms\":120000,\"candles\":[{\"timestamp\":1700000000000,\"open\":\"10\",\"high\":\"12\",\"low\":\"9\",\"close\":\"11\",\"volume\":\"100\"},{\"timestamp\":1700000060000,\"open\":\"11\",\"high\":\"13\",\"low\":\"10\",\"close\":\"12\",\"volume\":\"120\"}]}"},"output_example":{"service_id":"candles_resample","evidence_scope":"caller_supplied_data","resampled_candles":"{\"candles\":[{\"close\":\"11\",\"high\":\"12\",\"low\":\"9\",\"open\":\"10\",\"source_candle_count\":1,\"timestamp_ms\":1699999920000,\"volume\":\"100\"},{\"close\":\"12\",\"high\":\"13\",\"low\":\"10\",\"open\":\"11\",\"source_candle_count\":1,\"timestamp_ms\":1700000040000,\"volume\":\"120\"}],\"interval_ms\":120000}","warnings":["Missing source intervals remain gaps and are not fabricated."]}},{"service_id":"market_vwap","name":"Market VWAP","description":"Calculate volume-weighted average price from supplied trades or candles.","when_to_use":"Use this service when you need this capability: calculate volume-weighted average price from supplied trades or candles.","category":"crypto_market_dataset_analysis","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/market_vwap/invoke","method":"POST","planned_invoke_route":"/api/agent/services/market_vwap/invoke","mcp_tool":"market_vwap","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["vwap_request"],"properties":{"vwap_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","vwap_calculation","warnings"],"properties":{"service_id":{"type":"string","const":"market_vwap","minLength":11,"maxLength":11},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"vwap_calculation":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"vwap_request":"{\"records\":[{\"timestamp\":1700000000000,\"price\":\"10\",\"volume\":\"2\"},{\"timestamp\":1700000001000,\"price\":\"12\",\"volume\":\"1\"}]}"},"output_example":{"service_id":"market_vwap","evidence_scope":"caller_supplied_data","vwap_calculation":"{\"observation_count\":2,\"total_volume\":\"3\",\"vwap\":\"10.666666666666666666\"}","warnings":["VWAP reflects only supplied data and volume."]}},{"service_id":"market_twap","name":"Market TWAP","description":"Calculate time-weighted average price from supplied observations and timestamps.","when_to_use":"Use this service when you need this capability: calculate time-weighted average price from supplied observations and timestamps.","category":"crypto_market_dataset_analysis","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/market_twap/invoke","method":"POST","planned_invoke_route":"/api/agent/services/market_twap/invoke","mcp_tool":"market_twap","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["twap_request"],"properties":{"twap_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","twap_calculation","warnings"],"properties":{"service_id":{"type":"string","const":"market_twap","minLength":11,"maxLength":11},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"twap_calculation":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"twap_request":"{\"records\":[{\"timestamp\":1700000000000,\"price\":\"10\"},{\"timestamp\":1700000001000,\"price\":\"12\"}]}"},"output_example":{"service_id":"market_twap","evidence_scope":"caller_supplied_data","twap_calculation":"{\"duration_ms\":\"1000\",\"observation_count\":2,\"twap\":\"10\",\"weighting\":\"left_continuous\"}","warnings":["TWAP coverage and observation quality are caller controlled."]}},{"service_id":"market_returns","name":"Market Returns","description":"Calculate simple and logarithmic returns from supplied ordered price observations.","when_to_use":"Use this service when you need this capability: calculate simple and logarithmic returns from supplied ordered price observations.","category":"crypto_market_dataset_analysis","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/market_returns/invoke","method":"POST","planned_invoke_route":"/api/agent/services/market_returns/invoke","mcp_tool":"market_returns","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["market_returns_request"],"properties":{"market_returns_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","market_returns","warnings"],"properties":{"service_id":{"type":"string","const":"market_returns","minLength":14,"maxLength":14},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"market_returns":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"market_returns_request":"{\"prices\":[\"10\",\"11\",\"12\"]}"},"output_example":{"service_id":"market_returns","evidence_scope":"caller_supplied_data","market_returns":"{\"logarithmic_returns\":[\"0.095310179804324935\",\"0.087011376989629685\"],\"observation_count\":3,\"simple_returns\":[\"0.1\",\"0.090909090909090909\"]}","warnings":["Returns are historical calculations, not forecasts."]}},{"service_id":"market_volatility","name":"Market Volatility","description":"Calculate bounded sample or population volatility from supplied returns.","when_to_use":"Use this service when you need this capability: calculate bounded sample or population volatility from supplied returns.","category":"crypto_market_dataset_analysis","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/market_volatility/invoke","method":"POST","planned_invoke_route":"/api/agent/services/market_volatility/invoke","mcp_tool":"market_volatility","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["market_volatility_request"],"properties":{"market_volatility_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","market_volatility","warnings"],"properties":{"service_id":{"type":"string","const":"market_volatility","minLength":17,"maxLength":17},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"market_volatility":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"market_volatility_request":"{\"returns\":[\"0.1\",\"-0.05\",\"0.02\"],\"sample\":true,\"annualization_factor\":365}"},"output_example":{"service_id":"market_volatility","evidence_scope":"caller_supplied_data","market_volatility":"{\"annualization_factor\":365,\"mean\":\"0.023333333333333334\",\"sample\":true,\"variance\":\"0.005633333333333334\",\"volatility\":\"1.433933982673772478\"}","warnings":["Volatility depends on supplied sampling and is not predictive."]}},{"service_id":"market_drawdown","name":"Market Drawdown","description":"Calculate drawdown series and maximum drawdown from supplied prices.","when_to_use":"Use this service when you need this capability: calculate drawdown series and maximum drawdown from supplied prices.","category":"crypto_market_dataset_analysis","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/market_drawdown/invoke","method":"POST","planned_invoke_route":"/api/agent/services/market_drawdown/invoke","mcp_tool":"market_drawdown","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["market_drawdown_request"],"properties":{"market_drawdown_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","market_drawdown","warnings"],"properties":{"service_id":{"type":"string","const":"market_drawdown","minLength":15,"maxLength":15},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"market_drawdown":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"market_drawdown_request":"{\"prices\":[\"10\",\"12\",\"9\",\"11\"]}"},"output_example":{"service_id":"market_drawdown","evidence_scope":"caller_supplied_data","market_drawdown":"{\"maximum_drawdown\":\"-0.25\",\"maximum_drawdown_percent\":\"-25\",\"series\":[{\"drawdown\":\"0\",\"index\":0},{\"drawdown\":\"0\",\"index\":1},{\"drawdown\":\"-0.25\",\"index\":2},{\"drawdown\":\"-0.083333333333333333\",\"index\":3}]}","warnings":["Results cover only the supplied observation period."]}},{"service_id":"market_correlation","name":"Market Correlation","description":"Calculate Pearson correlation for two aligned supplied numeric series.","when_to_use":"Use this service when you need this capability: calculate Pearson correlation for two aligned supplied numeric series.","category":"crypto_market_dataset_analysis","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/market_correlation/invoke","method":"POST","planned_invoke_route":"/api/agent/services/market_correlation/invoke","mcp_tool":"market_correlation","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["market_correlation_request"],"properties":{"market_correlation_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","market_correlation","warnings"],"properties":{"service_id":{"type":"string","const":"market_correlation","minLength":18,"maxLength":18},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"market_correlation":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"market_correlation_request":"{\"left\":[\"1\",\"2\",\"3\"],\"right\":[\"2\",\"4\",\"6\"]}"},"output_example":{"service_id":"market_correlation","evidence_scope":"caller_supplied_data","market_correlation":"{\"correlation\":\"1\",\"observation_count\":3}","warnings":["Correlation is not causation and depends on alignment and sampling."]}},{"service_id":"orderbook_depth","name":"Order Book Depth","description":"Aggregate supplied bid and ask levels within caller-specified depth or basis-point bands.","when_to_use":"Use this service when you need this capability: aggregate supplied bid and ask levels within caller-specified depth or basis-point bands.","category":"crypto_market_dataset_analysis","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/orderbook_depth/invoke","method":"POST","planned_invoke_route":"/api/agent/services/orderbook_depth/invoke","mcp_tool":"orderbook_depth","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["orderbook_depth_request"],"properties":{"orderbook_depth_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","orderbook_depth","warnings"],"properties":{"service_id":{"type":"string","const":"orderbook_depth","minLength":15,"maxLength":15},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"orderbook_depth":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"orderbook_depth_request":"{\"bids\":[{\"price\":\"99\",\"quantity\":\"2\"}],\"asks\":[{\"price\":\"101\",\"quantity\":\"3\"}],\"level_limit\":10}"},"output_example":{"service_id":"orderbook_depth","evidence_scope":"caller_supplied_data","orderbook_depth":"{\"ask_depth\":{\"levels\":1,\"notional\":\"303\",\"quantity\":\"3\"},\"best_ask\":\"101\",\"best_bid\":\"99\",\"bid_depth\":{\"levels\":1,\"notional\":\"198\",\"quantity\":\"2\"},\"level_limit\":10}","warnings":["The order book is caller supplied and may be stale or incomplete."]}},{"service_id":"message_hash_eip191","name":"EIP-191 Message Hash","description":"Compute the standard EIP-191 personal-message hash for supplied text or bytes.","when_to_use":"Use this service when you need this capability: compute the standard EIP-191 personal-message hash for supplied text or bytes.","category":"signatures_proofs_contract_diagnostics","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/message_hash_eip191/invoke","method":"POST","planned_invoke_route":"/api/agent/services/message_hash_eip191/invoke","mcp_tool":"message_hash_eip191","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["message_hash_request"],"properties":{"message_hash_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","message_hash","warnings"],"properties":{"service_id":{"type":"string","const":"message_hash_eip191","minLength":19,"maxLength":19},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"message_hash":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"message_hash_request":"{\"message\":\"SignalHarness public test vector\",\"encoding\":\"utf8\"}"},"output_example":{"service_id":"message_hash_eip191","evidence_scope":"caller_supplied_data","message_hash":"{\"encoding\":\"utf8\",\"hash\":\"0x43c3ce76740c0da4b23274e62f830220acfc4cb8d66dc3c373c6f58db8620442\"}","warnings":["Hashing does not sign or prove authorship."]}},{"service_id":"typed_data_hash_eip712","name":"EIP-712 Typed Data Hash","description":"Compute an EIP-712 typed-data digest from a supplied domain, types, primary type, and message.","when_to_use":"Use this service when you need this capability: compute an EIP-712 typed-data digest from a supplied domain, types, primary type, and message.","category":"signatures_proofs_contract_diagnostics","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/typed_data_hash_eip712/invoke","method":"POST","planned_invoke_route":"/api/agent/services/typed_data_hash_eip712/invoke","mcp_tool":"typed_data_hash_eip712","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["typed_data_hash_request"],"properties":{"typed_data_hash_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","typed_data_hash","warnings"],"properties":{"service_id":{"type":"string","const":"typed_data_hash_eip712","minLength":22,"maxLength":22},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"typed_data_hash":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"typed_data_hash_request":"{\"domain\":{\"name\":\"SignalHarness\",\"version\":\"1\",\"chainId\":8453},\"types\":{\"Note\":[{\"name\":\"contents\",\"type\":\"string\"}]},\"primary_type\":\"Note\",\"message\":{\"contents\":\"test\"}}"},"output_example":{"service_id":"typed_data_hash_eip712","evidence_scope":"caller_supplied_data","typed_data_hash":"{\"hash\":\"0x8db8c5ec3114da2288a018bc3f8bae3e5e0ef77c3848832fe9adbea12c047e1b\",\"primary_type\":\"Note\"}","warnings":["Hashing does not sign, submit, or validate application intent."]}},{"service_id":"eoa_signature_verify","name":"EOA Signature Verify","description":"Verify a supplied EVM message signature against a supplied address.","when_to_use":"Use this service when you need this capability: verify a supplied EVM message signature against a supplied address.","category":"signatures_proofs_contract_diagnostics","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/eoa_signature_verify/invoke","method":"POST","planned_invoke_route":"/api/agent/services/eoa_signature_verify/invoke","mcp_tool":"eoa_signature_verify","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["eoa_signature_request"],"properties":{"eoa_signature_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","eoa_signature_verification","warnings"],"properties":{"service_id":{"type":"string","const":"eoa_signature_verify","minLength":20,"maxLength":20},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"eoa_signature_verification":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"eoa_signature_request":"{\"address\":\"0x0000000000000000000000000000000000000001\",\"message\":\"test\",\"signature\":\"0x010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011b\"}"},"output_example":{"service_id":"eoa_signature_verify","evidence_scope":"caller_supplied_data","eoa_signature_verification":"{\"address\":\"0x0000000000000000000000000000000000000001\",\"encoding\":\"utf8\",\"valid\":false}","warnings":["Verification proves key control for the supplied message only, not identity or authorization."]}},{"service_id":"typed_data_inspect","name":"Typed Data Inspect","description":"Inspect supplied EIP-712 types for dependencies, cycles, and referenced fields.","when_to_use":"Use this service when you need this capability: inspect supplied EIP-712 types for dependencies, cycles, and referenced fields.","category":"signatures_proofs_contract_diagnostics","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/typed_data_inspect/invoke","method":"POST","planned_invoke_route":"/api/agent/services/typed_data_inspect/invoke","mcp_tool":"typed_data_inspect","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["typed_data_inspection_request"],"properties":{"typed_data_inspection_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","typed_data_inspection","warnings"],"properties":{"service_id":{"type":"string","const":"typed_data_inspect","minLength":18,"maxLength":18},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"typed_data_inspection":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"typed_data_inspection_request":"{\"domain\":{\"name\":\"SignalHarness\",\"version\":\"1\",\"chainId\":8453},\"types\":{\"Note\":[{\"name\":\"contents\",\"type\":\"string\"}]},\"primary_type\":\"Note\",\"message\":{\"contents\":\"test\"}}"},"output_example":{"service_id":"typed_data_inspect","evidence_scope":"caller_supplied_data","typed_data_inspection":"{\"cycles\":[],\"dependencies\":{\"Note\":[]},\"digest\":\"0x8db8c5ec3114da2288a018bc3f8bae3e5e0ef77c3848832fe9adbea12c047e1b\",\"primary_type\":\"Note\",\"type_count\":1}","warnings":["Inspection does not prove signer intent or contract acceptance."]}},{"service_id":"permit_inspect_eip2612","name":"EIP-2612 Permit Inspect","description":"Decode and summarize supplied EIP-2612 permit calldata or typed message fields.","when_to_use":"Use this service when you need this capability: decode and summarize supplied EIP-2612 permit calldata or typed message fields.","category":"signatures_proofs_contract_diagnostics","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/permit_inspect_eip2612/invoke","method":"POST","planned_invoke_route":"/api/agent/services/permit_inspect_eip2612/invoke","mcp_tool":"permit_inspect_eip2612","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["permit_inspection_request"],"properties":{"permit_inspection_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","permit_inspection","warnings"],"properties":{"service_id":{"type":"string","const":"permit_inspect_eip2612","minLength":22,"maxLength":22},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"permit_inspection":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"permit_inspection_request":"{\"owner\":\"0x0000000000000000000000000000000000000001\",\"spender\":\"0x0000000000000000000000000000000000000002\",\"value\":\"100\",\"nonce\":\"1\",\"deadline\":\"2000000000\",\"now_ms\":1700000000000}"},"output_example":{"service_id":"permit_inspect_eip2612","evidence_scope":"caller_supplied_data","permit_inspection":"{\"deadline\":\"2000000000\",\"expired_at_ms\":false,\"nonce\":\"1\",\"owner\":\"0x0000000000000000000000000000000000000001\",\"source\":\"fields\",\"spender\":\"0x0000000000000000000000000000000000000002\",\"value\":\"100\"}","warnings":["Inspection does not verify nonce, signature, balance, or allowance state."]}},{"service_id":"merkle_root_compute","name":"Merkle Root Compute","description":"Compute a Keccak-256 Merkle root from supplied leaf hashes using explicit pair-order rules.","when_to_use":"Use this service when you need this capability: compute a Keccak-256 Merkle root from supplied leaf hashes using explicit pair-order rules.","category":"signatures_proofs_contract_diagnostics","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/merkle_root_compute/invoke","method":"POST","planned_invoke_route":"/api/agent/services/merkle_root_compute/invoke","mcp_tool":"merkle_root_compute","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["merkle_root_request"],"properties":{"merkle_root_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","merkle_root","warnings"],"properties":{"service_id":{"type":"string","const":"merkle_root_compute","minLength":19,"maxLength":19},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"merkle_root":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"merkle_root_request":"{\"leaves\":[\"0x5fe7f977e71dba2ea1a68e21057beebb9be2ac30c6410aa38d4f3fbe41dcffd2\",\"0xf2ee15ea639b73fa3db9b34a245bdfa015c260c598b211bf05a1ecc4b3e3b4f2\"],\"sorted_pairs\":true}"},"output_example":{"service_id":"merkle_root_compute","evidence_scope":"caller_supplied_data","merkle_root":"{\"layer_widths\":[2,1],\"root\":\"0x71d8979cbfae9b197a4fbcc7d387b1fae9560e2f284d30b4e90c80f6bc074f57\",\"sorted_pairs\":true}","warnings":["The service trusts supplied leaves and never proves inclusion by itself."]}},{"service_id":"merkle_proof_verify","name":"Merkle Proof Verify","description":"Verify a supplied Keccak-256 Merkle proof with explicit sorted or positional pairing.","when_to_use":"Use this service when you need this capability: verify a supplied Keccak-256 Merkle proof with explicit sorted or positional pairing.","category":"signatures_proofs_contract_diagnostics","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/merkle_proof_verify/invoke","method":"POST","planned_invoke_route":"/api/agent/services/merkle_proof_verify/invoke","mcp_tool":"merkle_proof_verify","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["merkle_proof_request"],"properties":{"merkle_proof_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","merkle_proof_verification","warnings"],"properties":{"service_id":{"type":"string","const":"merkle_proof_verify","minLength":19,"maxLength":19},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"merkle_proof_verification":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"merkle_proof_request":"{\"leaf\":\"0x5fe7f977e71dba2ea1a68e21057beebb9be2ac30c6410aa38d4f3fbe41dcffd2\",\"proof\":[\"0xf2ee15ea639b73fa3db9b34a245bdfa015c260c598b211bf05a1ecc4b3e3b4f2\"],\"root\":\"0x71d8979cbfae9b197a4fbcc7d387b1fae9560e2f284d30b4e90c80f6bc074f57\",\"sorted_pairs\":true}"},"output_example":{"service_id":"merkle_proof_verify","evidence_scope":"caller_supplied_data","merkle_proof_verification":"{\"computed_root\":\"0x71d8979cbfae9b197a4fbcc7d387b1fae9560e2f284d30b4e90c80f6bc074f57\",\"expected_root\":\"0x71d8979cbfae9b197a4fbcc7d387b1fae9560e2f284d30b4e90c80f6bc074f57\",\"sorted_pairs\":true,\"valid\":true}","warnings":["Proof validity does not authenticate the meaning of the leaf."]}},{"service_id":"log_bloom_check","name":"EVM Log Bloom Check","description":"Test supplied addresses or topics against a supplied 2048-bit EVM log bloom.","when_to_use":"Use this service when you need this capability: test supplied addresses or topics against a supplied 2048-bit EVM log bloom.","category":"signatures_proofs_contract_diagnostics","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/log_bloom_check/invoke","method":"POST","planned_invoke_route":"/api/agent/services/log_bloom_check/invoke","mcp_tool":"log_bloom_check","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["log_bloom_request"],"properties":{"log_bloom_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","log_bloom_check","warnings"],"properties":{"service_id":{"type":"string","const":"log_bloom_check","minLength":15,"maxLength":15},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"log_bloom_check":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"log_bloom_request":"{\"bloom\":\"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\"values\":[\"0x0000000000000000000000000000000000000001\"]}"},"output_example":{"service_id":"log_bloom_check","evidence_scope":"caller_supplied_data","log_bloom_check":"{\"all_possibly_present\":false,\"results\":[{\"bit_indexes\":[1128,128,1585],\"possibly_present\":false,\"value\":\"0x0000000000000000000000000000000000000001\"}]}","warnings":["Bloom matches are probabilistic and may be false positives."]}},{"service_id":"evm_storage_slot_compute","name":"EVM Storage Slot Compute","description":"Compute mapping or dynamic-array storage slots from supplied Solidity layout inputs.","when_to_use":"Use this service when you need this capability: compute mapping or dynamic-array storage slots from supplied Solidity layout inputs.","category":"signatures_proofs_contract_diagnostics","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/evm_storage_slot_compute/invoke","method":"POST","planned_invoke_route":"/api/agent/services/evm_storage_slot_compute/invoke","mcp_tool":"evm_storage_slot_compute","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["storage_slot_request"],"properties":{"storage_slot_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","computed_storage_slot","warnings"],"properties":{"service_id":{"type":"string","const":"evm_storage_slot_compute","minLength":24,"maxLength":24},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"computed_storage_slot":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"storage_slot_request":"{\"kind\":\"mapping\",\"slot\":\"0\",\"key_type\":\"address\",\"key\":\"0x0000000000000000000000000000000000000001\"}"},"output_example":{"service_id":"evm_storage_slot_compute","evidence_scope":"caller_supplied_data","computed_storage_slot":"{\"key_type\":\"address\",\"kind\":\"mapping\",\"slot\":\"0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d\"}","warnings":["The caller must supply the correct layout and key encoding."]}},{"service_id":"abi_encoding_diagnose","name":"ABI Encoding Diagnose","description":"Check supplied ABI-encoded bytes for hex, selector, word-alignment, and optional decode consistency.","when_to_use":"Use this service when you need this capability: check supplied ABI-encoded bytes for hex, selector, word-alignment, and optional decode consistency.","category":"signatures_proofs_contract_diagnostics","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/abi_encoding_diagnose/invoke","method":"POST","planned_invoke_route":"/api/agent/services/abi_encoding_diagnose/invoke","mcp_tool":"abi_encoding_diagnose","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["abi_diagnostic_request"],"properties":{"abi_diagnostic_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","abi_encoding_diagnostic","warnings"],"properties":{"service_id":{"type":"string","const":"abi_encoding_diagnose","minLength":21,"maxLength":21},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"abi_encoding_diagnostic":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"abi_diagnostic_request":"{\"abi\":[{\"type\":\"constructor\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"initial\",\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"balanceOf\",\"stateMutability\":\"view\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}]},{\"type\":\"event\",\"name\":\"Changed\",\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"Insufficient\",\"inputs\":[{\"name\":\"available\",\"type\":\"uint256\"}]}],\"data\":\"0x70a082310000000000000000000000000000000000000000000000000000000000000001\"}"},"output_example":{"service_id":"abi_encoding_diagnose","evidence_scope":"caller_supplied_data","abi_encoding_diagnostic":"{\"byte_length\":36,\"decode_valid\":true,\"decoded\":{\"args\":[\"0x0000000000000000000000000000000000000001\"],\"functionName\":\"balanceOf\"},\"has_selector\":true,\"payload_word_aligned\":true,\"selector\":\"0x70a08231\",\"valid_hex\":true}","warnings":["Diagnostics do not simulate execution or prove contract behavior."]}},{"service_id":"bitcoin_transaction_decode","name":"Bitcoin Transaction Decode","description":"Decode a bounded supplied raw Bitcoin transaction into version, inputs, outputs, witness, and locktime.","when_to_use":"Use this service when you need this capability: decode a bounded supplied raw Bitcoin transaction into version, inputs, outputs, witness, and locktime.","category":"bitcoin_transaction_tools","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/bitcoin_transaction_decode/invoke","method":"POST","planned_invoke_route":"/api/agent/services/bitcoin_transaction_decode/invoke","mcp_tool":"bitcoin_transaction_decode","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["bitcoin_transaction_request"],"properties":{"bitcoin_transaction_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","decoded_bitcoin_transaction","warnings"],"properties":{"service_id":{"type":"string","const":"bitcoin_transaction_decode","minLength":26,"maxLength":26},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"decoded_bitcoin_transaction":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"bitcoin_transaction_request":"{\"raw_transaction\":\"0x01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff00ffffffff01e803000000000000015100000000\"}"},"output_example":{"service_id":"bitcoin_transaction_decode","evidence_scope":"caller_supplied_data","decoded_bitcoin_transaction":"{\"input_count\":1,\"inputs\":[{\"script_sig\":\"\",\"sequence\":4294967295,\"txid\":\"0000000000000000000000000000000000000000000000000000000000000000\",\"vout\":4294967295,\"witness\":[]}],\"locktime\":0,\"output_count\":1,\"outputs\":[{\"script_pub_key\":\"51\",\"script_type\":\"unknown_or_nonstandard\",\"value_sats\":\"1000\"}],\"segwit\":false,\"version\":1}","warnings":["Decoding does not verify signatures, scripts, inclusion, or UTXO availability."]}},{"service_id":"bitcoin_txid_compute","name":"Bitcoin Transaction ID Compute","description":"Compute txid and wtxid from a supplied raw Bitcoin transaction.","when_to_use":"Use this service when you need this capability: compute txid and wtxid from a supplied raw Bitcoin transaction.","category":"bitcoin_transaction_tools","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/bitcoin_txid_compute/invoke","method":"POST","planned_invoke_route":"/api/agent/services/bitcoin_txid_compute/invoke","mcp_tool":"bitcoin_txid_compute","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["bitcoin_txid_request"],"properties":{"bitcoin_txid_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","bitcoin_transaction_ids","warnings"],"properties":{"service_id":{"type":"string","const":"bitcoin_txid_compute","minLength":20,"maxLength":20},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"bitcoin_transaction_ids":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"bitcoin_txid_request":"{\"raw_transaction\":\"0x01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff00ffffffff01e803000000000000015100000000\"}"},"output_example":{"service_id":"bitcoin_txid_compute","evidence_scope":"caller_supplied_data","bitcoin_transaction_ids":"{\"identifiers_equal\":true,\"segwit\":false,\"txid\":\"cdb9f8dfefadc40b90a8eb090bcadc4d9a83ad5fbe38645e3e9b2fa234f032de\",\"wtxid\":\"cdb9f8dfefadc40b90a8eb090bcadc4d9a83ad5fbe38645e3e9b2fa234f032de\"}","warnings":["Identifiers do not prove broadcast, inclusion, or validity."]}},{"service_id":"bitcoin_weight_vsize","name":"Bitcoin Weight and Vsize","description":"Calculate stripped size, total size, weight, and virtual size for a supplied transaction.","when_to_use":"Use this service when you need this capability: calculate stripped size, total size, weight, and virtual size for a supplied transaction.","category":"bitcoin_transaction_tools","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/bitcoin_weight_vsize/invoke","method":"POST","planned_invoke_route":"/api/agent/services/bitcoin_weight_vsize/invoke","mcp_tool":"bitcoin_weight_vsize","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["bitcoin_weight_request"],"properties":{"bitcoin_weight_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","bitcoin_weight_vsize","warnings"],"properties":{"service_id":{"type":"string","const":"bitcoin_weight_vsize","minLength":20,"maxLength":20},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"bitcoin_weight_vsize":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"bitcoin_weight_request":"{\"raw_transaction\":\"0x01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff00ffffffff01e803000000000000015100000000\"}"},"output_example":{"service_id":"bitcoin_weight_vsize","evidence_scope":"caller_supplied_data","bitcoin_weight_vsize":"{\"stripped_size\":61,\"total_size\":61,\"virtual_size\":61,\"weight\":244,\"witness_size\":0}","warnings":["The transaction is not script-validated."]}},{"service_id":"bitcoin_fee_calculate","name":"Bitcoin Fee Calculate","description":"Calculate fee and fee rate from supplied input values and raw transaction outputs.","when_to_use":"Use this service when you need this capability: calculate fee and fee rate from supplied input values and raw transaction outputs.","category":"bitcoin_transaction_tools","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/bitcoin_fee_calculate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/bitcoin_fee_calculate/invoke","mcp_tool":"bitcoin_fee_calculate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["bitcoin_fee_request"],"properties":{"bitcoin_fee_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","bitcoin_fee_calculation","warnings"],"properties":{"service_id":{"type":"string","const":"bitcoin_fee_calculate","minLength":21,"maxLength":21},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"bitcoin_fee_calculation":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"bitcoin_fee_request":"{\"raw_transaction\":\"0x01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff00ffffffff01e803000000000000015100000000\",\"input_values_sats\":[\"2000\"]}"},"output_example":{"service_id":"bitcoin_fee_calculate","evidence_scope":"caller_supplied_data","bitcoin_fee_calculation":"{\"fee_rate_sat_per_vbyte\":\"16.39344262\",\"fee_sats\":\"1000\",\"input_total_sats\":\"2000\",\"output_total_sats\":\"1000\",\"virtual_size\":61}","warnings":["Input values must be complete and are trusted as supplied."]}},{"service_id":"bitcoin_utxo_selection","name":"Bitcoin UTXO Selection Calculate","description":"Select a deterministic bounded UTXO subset for a supplied target and fee estimate.","when_to_use":"Use this service when you need this capability: select a deterministic bounded UTXO subset for a supplied target and fee estimate.","category":"bitcoin_transaction_tools","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/bitcoin_utxo_selection/invoke","method":"POST","planned_invoke_route":"/api/agent/services/bitcoin_utxo_selection/invoke","mcp_tool":"bitcoin_utxo_selection","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["bitcoin_utxo_request"],"properties":{"bitcoin_utxo_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","bitcoin_utxo_selection","warnings"],"properties":{"service_id":{"type":"string","const":"bitcoin_utxo_selection","minLength":22,"maxLength":22},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"bitcoin_utxo_selection":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"bitcoin_utxo_request":"{\"utxos\":[{\"txid\":\"1111111111111111111111111111111111111111111111111111111111111111\",\"vout\":0,\"value_sats\":\"20000\"}],\"target_sats\":\"10000\",\"fee_rate_sat_per_vbyte\":\"1\"}"},"output_example":{"service_id":"bitcoin_utxo_selection","evidence_scope":"caller_supplied_data","bitcoin_utxo_selection":"{\"estimated_change_sats\":\"9860\",\"estimated_fee_sats\":\"140\",\"input_total_sats\":\"20000\",\"model\":\"p2wpkh_inputs_two_outputs\",\"selected\":[{\"txid\":\"1111111111111111111111111111111111111111111111111111111111111111\",\"value_sats\":\"20000\",\"vout\":0}],\"target_sats\":\"10000\"}","warnings":["This is a calculation only and does not lock, spend, or verify UTXOs."]}},{"service_id":"bitcoin_script_classify","name":"Bitcoin Script Classify","description":"Classify supplied scriptPubKey hex using standard output templates.","when_to_use":"Use this service when you need this capability: classify supplied scriptPubKey hex using standard output templates.","category":"bitcoin_transaction_tools","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/bitcoin_script_classify/invoke","method":"POST","planned_invoke_route":"/api/agent/services/bitcoin_script_classify/invoke","mcp_tool":"bitcoin_script_classify","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["bitcoin_script_request"],"properties":{"bitcoin_script_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","bitcoin_script_classification","warnings"],"properties":{"service_id":{"type":"string","const":"bitcoin_script_classify","minLength":23,"maxLength":23},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"bitcoin_script_classification":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"bitcoin_script_request":"{\"scripts\":[\"76a914111111111111111111111111111111111111111188ac\",\"00142222222222222222222222222222222222222222\"]}"},"output_example":{"service_id":"bitcoin_script_classify","evidence_scope":"caller_supplied_data","bitcoin_script_classification":"{\"scripts\":[{\"byte_length\":25,\"script_hex\":\"76a914111111111111111111111111111111111111111188ac\",\"type\":\"p2pkh\"},{\"byte_length\":22,\"script_hex\":\"00142222222222222222222222222222222222222222\",\"type\":\"p2wpkh\"}]}","warnings":["Classification does not execute or validate scripts."]}},{"service_id":"bitcoin_psbt_inspect","name":"Bitcoin PSBT Inspect","description":"Inspect a bounded supplied PSBT envelope and summarize map key types without signing.","when_to_use":"Use this service when you need this capability: inspect a bounded supplied PSBT envelope and summarize map key types without signing.","category":"bitcoin_transaction_tools","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/bitcoin_psbt_inspect/invoke","method":"POST","planned_invoke_route":"/api/agent/services/bitcoin_psbt_inspect/invoke","mcp_tool":"bitcoin_psbt_inspect","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["bitcoin_psbt_request"],"properties":{"bitcoin_psbt_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","bitcoin_psbt_inspection","warnings"],"properties":{"service_id":{"type":"string","const":"bitcoin_psbt_inspect","minLength":20,"maxLength":20},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"bitcoin_psbt_inspection":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"bitcoin_psbt_request":"{\"psbt_base64\":\"cHNidP8A\"}"},"output_example":{"service_id":"bitcoin_psbt_inspect","evidence_scope":"caller_supplied_data","bitcoin_psbt_inspection":"{\"global_entry_count\":0,\"map_count\":1,\"maps\":[{\"entry_count\":0,\"index\":0,\"key_types\":[]}],\"psbt_version\":\"v0_or_unspecified\"}","warnings":["Inspection does not finalize, sign, or prove PSBT validity."]}},{"service_id":"bitcoin_locktime_interpret","name":"Bitcoin Locktime Interpret","description":"Interpret supplied locktime and sequence values using Bitcoin threshold rules.","when_to_use":"Use this service when you need this capability: interpret supplied locktime and sequence values using Bitcoin threshold rules.","category":"bitcoin_transaction_tools","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/bitcoin_locktime_interpret/invoke","method":"POST","planned_invoke_route":"/api/agent/services/bitcoin_locktime_interpret/invoke","mcp_tool":"bitcoin_locktime_interpret","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["bitcoin_locktime_request"],"properties":{"bitcoin_locktime_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","bitcoin_locktime_interpretation","warnings"],"properties":{"service_id":{"type":"string","const":"bitcoin_locktime_interpret","minLength":26,"maxLength":26},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"bitcoin_locktime_interpretation":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"bitcoin_locktime_request":"{\"locktime\":500,\"sequences\":[4294967294]}"},"output_example":{"service_id":"bitcoin_locktime_interpret","evidence_scope":"caller_supplied_data","bitcoin_locktime_interpretation":"{\"final_sequence_count\":0,\"kind\":\"block_height\",\"locktime\":500,\"locktime_enabled\":true,\"replace_by_fee_signaled\":false}","warnings":["Interpretation does not prove transaction eligibility or chain state."]}},{"service_id":"bitcoin_block_header_inspect","name":"Bitcoin Block Header Inspect","description":"Decode an 80-byte supplied Bitcoin block header and compute its header hash and target.","when_to_use":"Use this service when you need this capability: decode an 80-byte supplied Bitcoin block header and compute its header hash and target.","category":"bitcoin_transaction_tools","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/bitcoin_block_header_inspect/invoke","method":"POST","planned_invoke_route":"/api/agent/services/bitcoin_block_header_inspect/invoke","mcp_tool":"bitcoin_block_header_inspect","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["bitcoin_header_request"],"properties":{"bitcoin_header_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","bitcoin_block_header","warnings"],"properties":{"service_id":{"type":"string","const":"bitcoin_block_header_inspect","minLength":28,"maxLength":28},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"bitcoin_block_header":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"bitcoin_header_request":"{\"header_hex\":\"0x0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a29ab5f49ffff001d1dac2b7c\"}"},"output_example":{"service_id":"bitcoin_block_header_inspect","evidence_scope":"caller_supplied_data","bitcoin_block_header":"{\"bits\":486604799,\"block_hash\":\"000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f\",\"merkle_root\":\"4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b\",\"nonce\":2083236893,\"previous_block_hash\":\"0000000000000000000000000000000000000000000000000000000000000000\",\"target_hex\":\"00000000ffff0000000000000000000000000000000000000000000000000000\",\"timestamp\":1231006505,\"version\":1}","warnings":["The header is not checked against consensus history or proof-of-work unless requested fields permit it."]}},{"service_id":"bitcoin_merkle_proof_verify","name":"Bitcoin Merkle Proof Verify","description":"Verify a supplied Bitcoin double-SHA-256 Merkle branch using explicit transaction index.","when_to_use":"Use this service when you need this capability: verify a supplied Bitcoin double-SHA-256 Merkle branch using explicit transaction index.","category":"bitcoin_transaction_tools","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/bitcoin_merkle_proof_verify/invoke","method":"POST","planned_invoke_route":"/api/agent/services/bitcoin_merkle_proof_verify/invoke","mcp_tool":"bitcoin_merkle_proof_verify","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["bitcoin_merkle_request"],"properties":{"bitcoin_merkle_request":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","bitcoin_merkle_verification","warnings"],"properties":{"service_id":{"type":"string","const":"bitcoin_merkle_proof_verify","minLength":27,"maxLength":27},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"bitcoin_merkle_verification":{"type":"string","minLength":1,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"bitcoin_merkle_request":"{\"txid\":\"1111111111111111111111111111111111111111111111111111111111111111\",\"proof\":[],\"index\":0,\"merkle_root\":\"1111111111111111111111111111111111111111111111111111111111111111\"}"},"output_example":{"service_id":"bitcoin_merkle_proof_verify","evidence_scope":"caller_supplied_data","bitcoin_merkle_verification":"{\"computed_merkle_root\":\"1111111111111111111111111111111111111111111111111111111111111111\",\"expected_merkle_root\":\"1111111111111111111111111111111111111111111111111111111111111111\",\"valid\":true}","warnings":["Proof validity does not prove the header belongs to the best chain."]}},{"service_id":"solana_legacy_transaction_decode","name":"Solana Legacy Transaction Decoder","description":"Turn serialized legacy transaction bytes into reviewable message, signature, account, and instruction fields.","when_to_use":"Use this service when you need this capability: turn serialized legacy transaction bytes into reviewable message, signature, account, and instruction fields.","category":"chain_tools_solana","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/solana_legacy_transaction_decode/invoke","method":"POST","planned_invoke_route":"/api/agent/services/solana_legacy_transaction_decode/invoke","mcp_tool":"solana_legacy_transaction_decode","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"solana_legacy_transaction_decode","minLength":32,"maxLength":32},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana","minLength":6,"maxLength":6},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transaction_base64\":\"AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=\"}"},"output_example":{"service_id":"solana_legacy_transaction_decode","evidence_scope":"caller_supplied_data","analyzed_network":"solana","analysis_json":"{\"address_table_lookups\":[],\"compiled_instructions\":[],\"header\":{\"numReadonlySignedAccounts\":0,\"numReadonlyUnsignedAccounts\":0,\"numRequiredSignatures\":1},\"recent_blockhash\":\"11111111111111111111111111111111\",\"serialized_bytes\":134,\"signature_count\":1,\"static_account_keys\":[\"11111111111111111111111111111111\"],\"version\":\"legacy\"}","warnings":["Decoding supplied bytes does not prove inclusion, execution, or finality."]}},{"service_id":"solana_versioned_transaction_decode","name":"Solana Versioned Transaction Decoder","description":"Decode supplied Solana legacy or versioned transaction bytes with explicit version handling.","when_to_use":"Use this service when you need this capability: decode supplied Solana legacy or versioned transaction bytes with explicit version handling.","category":"chain_tools_solana","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/solana_versioned_transaction_decode/invoke","method":"POST","planned_invoke_route":"/api/agent/services/solana_versioned_transaction_decode/invoke","mcp_tool":"solana_versioned_transaction_decode","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"solana_versioned_transaction_decode","minLength":35,"maxLength":35},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana","minLength":6,"maxLength":6},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transaction_base64\":\"AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=\"}"},"output_example":{"service_id":"solana_versioned_transaction_decode","evidence_scope":"caller_supplied_data","analyzed_network":"solana","analysis_json":"{\"address_table_lookups\":[],\"compiled_instructions\":[],\"header\":{\"numReadonlySignedAccounts\":0,\"numReadonlyUnsignedAccounts\":0,\"numRequiredSignatures\":1},\"recent_blockhash\":\"11111111111111111111111111111111\",\"serialized_bytes\":134,\"signature_count\":1,\"static_account_keys\":[\"11111111111111111111111111111111\"],\"version\":\"legacy\"}","warnings":["Loaded lookup addresses require caller-supplied table data."]}},{"service_id":"solana_v0_message_analyze","name":"Solana v0 Message Analyzer","description":"Analyze a supplied v0 message for static keys, lookup-table use, and instruction fanout.","when_to_use":"Use this service when you need this capability: analyze a supplied v0 message for static keys, lookup-table use, and instruction fanout.","category":"chain_tools_solana","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/solana_v0_message_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/solana_v0_message_analyze/invoke","mcp_tool":"solana_v0_message_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"solana_v0_message_analyze","minLength":25,"maxLength":25},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana","minLength":6,"maxLength":6},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"message\":{\"version\":0,\"header\":{\"numRequiredSignatures\":1,\"numReadonlySignedAccounts\":0,\"numReadonlyUnsignedAccounts\":0},\"static_account_keys\":[\"11111111111111111111111111111111\"],\"address_table_lookups\":[],\"instructions\":[]}}"},"output_example":{"service_id":"solana_v0_message_analyze","evidence_scope":"caller_supplied_data","analyzed_network":"solana","analysis_json":"{\"instruction_count\":0,\"lookup_count\":0,\"readonly_lookup_indexes\":[],\"static_key_count\":1,\"valid_v0\":true,\"version\":0,\"warnings\":[],\"writable_lookup_indexes\":[]}","warnings":["Does not fetch Address Lookup Tables or simulate execution."]}},{"service_id":"solana_alt_resolve","name":"Solana Address Lookup Table Resolver","description":"Resolve writable and read-only lookup indexes against caller-supplied ALT address arrays.","when_to_use":"Use this service when you need this capability: resolve writable and read-only lookup indexes against caller-supplied ALT address arrays.","category":"chain_tools_solana","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/solana_alt_resolve/invoke","method":"POST","planned_invoke_route":"/api/agent/services/solana_alt_resolve/invoke","mcp_tool":"solana_alt_resolve","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"solana_alt_resolve","minLength":18,"maxLength":18},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana","minLength":6,"maxLength":6},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"lookups\":[{\"account_key\":\"11111111111111111111111111111111\",\"writable_indexes\":[0],\"readonly_indexes\":[1]}],\"tables\":{\"11111111111111111111111111111111\":[\"11111111111111111111111111111111\",\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"]}}"},"output_example":{"service_id":"solana_alt_resolve","evidence_scope":"caller_supplied_data","analyzed_network":"solana","analysis_json":"{\"complete\":true,\"loaded_addresses\":[\"11111111111111111111111111111111\",\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"],\"readonly\":[{\"address\":\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\",\"index\":1,\"lookup\":0}],\"unresolved\":[],\"writable\":[{\"address\":\"11111111111111111111111111111111\",\"index\":0,\"lookup\":0}]}","warnings":["Tables and addresses are trusted as supplied and are not chain verified."]}},{"service_id":"solana_pda_derive","name":"Solana PDA Derivation","description":"Derive the canonical Program Derived Address and bump from supplied seeds and program ID.","when_to_use":"Use this service when you need this capability: derive the canonical Program Derived Address and bump from supplied seeds and program ID.","category":"chain_tools_solana","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/solana_pda_derive/invoke","method":"POST","planned_invoke_route":"/api/agent/services/solana_pda_derive/invoke","mcp_tool":"solana_pda_derive","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"solana_pda_derive","minLength":17,"maxLength":17},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana","minLength":6,"maxLength":6},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"program_id\":\"11111111111111111111111111111111\",\"seeds\":[\"test\"]}"},"output_example":{"service_id":"solana_pda_derive","evidence_scope":"caller_supplied_data","analyzed_network":"solana","analysis_json":"{\"address\":\"H68a6HmNocBWoDtYo2PDxX3ciRHLUosfsnH9b2r7xNPJ\",\"bump\":255}","warnings":["Derivation does not prove the PDA account exists or is owned as expected."]}},{"service_id":"solana_pda_verify","name":"Solana PDA Verification","description":"Verify a claimed PDA and optional bump against supplied seeds and program ID.","when_to_use":"Use this service when you need this capability: verify a claimed PDA and optional bump against supplied seeds and program ID.","category":"chain_tools_solana","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/solana_pda_verify/invoke","method":"POST","planned_invoke_route":"/api/agent/services/solana_pda_verify/invoke","mcp_tool":"solana_pda_verify","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"solana_pda_verify","minLength":17,"maxLength":17},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana","minLength":6,"maxLength":6},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"program_id\":\"11111111111111111111111111111111\",\"seeds\":[\"test\"],\"address\":\"8Bb7E1hSjoG9rVraQqH6QJ4VYq9vD1g5p7h9oPQx8d3K\"}"},"output_example":{"service_id":"solana_pda_verify","evidence_scope":"caller_supplied_data","analyzed_network":"solana","analysis_json":"{\"address\":\"H68a6HmNocBWoDtYo2PDxX3ciRHLUosfsnH9b2r7xNPJ\",\"bump\":255,\"bump_match\":null,\"canonical_match\":false,\"supplied_address\":\"8Bb7E1hSjoG9rVraQqH6QJ4VYq9vD1g5p7h9oPQx8d3K\"}","warnings":["Verification is mathematical only and does not inspect account state."]}},{"service_id":"solana_ata_derive","name":"Solana Associated Token Account Derivation","description":"Derive an associated token account for supplied owner, mint, and token-program IDs.","when_to_use":"Use this service when you need this capability: derive an associated token account for supplied owner, mint, and token-program IDs.","category":"chain_tools_solana","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/solana_ata_derive/invoke","method":"POST","planned_invoke_route":"/api/agent/services/solana_ata_derive/invoke","mcp_tool":"solana_ata_derive","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"solana_ata_derive","minLength":17,"maxLength":17},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana","minLength":6,"maxLength":6},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"owner\":\"11111111111111111111111111111111\",\"mint\":\"11111111111111111111111111111111\",\"token_program_id\":\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"}"},"output_example":{"service_id":"solana_ata_derive","evidence_scope":"caller_supplied_data","analyzed_network":"solana","analysis_json":"{\"associated_token_account\":\"2a8MS8dWyyYNgBHgtzeTwrsDKsE6RnCoUqnonB4C8Xc3\",\"associated_token_program_id\":\"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\",\"bump\":255,\"mint\":\"11111111111111111111111111111111\",\"owner\":\"11111111111111111111111111111111\",\"token_program_id\":\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"}","warnings":["Does not prove the token account is initialized or usable."]}},{"service_id":"solana_account_meta_analyze","name":"Solana Account Meta Analyzer","description":"Analyze supplied account metas for duplicate keys, signer roles, and writable privileges.","when_to_use":"Use this service when you need this capability: analyze supplied account metas for duplicate keys, signer roles, and writable privileges.","category":"chain_tools_solana","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/solana_account_meta_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/solana_account_meta_analyze/invoke","mcp_tool":"solana_account_meta_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"solana_account_meta_analyze","minLength":27,"maxLength":27},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana","minLength":6,"maxLength":6},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"account_metas\":[{\"pubkey\":\"11111111111111111111111111111111\",\"is_signer\":true,\"is_writable\":true},{\"pubkey\":\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\",\"is_signer\":false,\"is_writable\":false}]}"},"output_example":{"service_id":"solana_account_meta_analyze","evidence_scope":"caller_supplied_data","analyzed_network":"solana","analysis_json":"{\"accounts\":[{\"indexes\":[0],\"is_signer\":true,\"is_writable\":true,\"pubkey\":\"11111111111111111111111111111111\"},{\"indexes\":[1],\"is_signer\":false,\"is_writable\":false,\"pubkey\":\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"}],\"duplicate_keys\":[],\"signer_count\":1,\"unique_count\":2,\"writable_count\":1}","warnings":["Metas are caller supplied and may omit inner-instruction privileges."]}},{"service_id":"solana_signer_writable_analyze","name":"Solana Signer and Writable Account Analysis","description":"Classify supplied message accounts by signer and writable status using header rules.","when_to_use":"Use this service when you need this capability: classify supplied message accounts by signer and writable status using header rules.","category":"chain_tools_solana","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/solana_signer_writable_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/solana_signer_writable_analyze/invoke","mcp_tool":"solana_signer_writable_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"solana_signer_writable_analyze","minLength":30,"maxLength":30},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana","minLength":6,"maxLength":6},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"header\":{\"numRequiredSignatures\":1,\"numReadonlySignedAccounts\":0,\"numReadonlyUnsignedAccounts\":1},\"account_keys\":[\"11111111111111111111111111111111\",\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"]}"},"output_example":{"service_id":"solana_signer_writable_analyze","evidence_scope":"caller_supplied_data","analyzed_network":"solana","analysis_json":"{\"accounts\":[{\"index\":0,\"is_signer\":true,\"is_writable\":true,\"pubkey\":\"11111111111111111111111111111111\"},{\"index\":1,\"is_signer\":false,\"is_writable\":false,\"pubkey\":\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"}],\"readonly_count\":1,\"signer_count\":1,\"writable_count\":1}","warnings":["Loaded ALT accounts require explicit writable/read-only classification."]}},{"service_id":"solana_compute_budget_decode","name":"Solana Compute Budget Decoder","description":"Decode bounded Compute Budget instruction data into documented variants and values.","when_to_use":"Use this service when you need this capability: decode bounded Compute Budget instruction data into documented variants and values.","category":"chain_tools_solana","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/solana_compute_budget_decode/invoke","method":"POST","planned_invoke_route":"/api/agent/services/solana_compute_budget_decode/invoke","mcp_tool":"solana_compute_budget_decode","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"solana_compute_budget_decode","minLength":28,"maxLength":28},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana","minLength":6,"maxLength":6},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"instructions\":[{\"program_id\":\"11111111111111111111111111111111\",\"type\":\"transfer\",\"source\":\"11111111111111111111111111111111\",\"destination\":\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\",\"lamports\":\"1000\"}]}"},"output_example":{"service_id":"solana_compute_budget_decode","evidence_scope":"caller_supplied_data","analyzed_network":"solana","analysis_json":"{\"configuration\":{\"transfer\":null},\"duplicates\":[],\"instructions\":[{\"index\":0,\"kind\":\"transfer\",\"value\":null}]}","warnings":["Legacy/v0 semantics differ from upcoming v1 message configuration."]}},{"service_id":"solana_compute_unit_analyze","name":"Solana Compute Unit Analysis","description":"Compare supplied CU consumption, requested limit, and instruction defaults.","when_to_use":"Use this service when you need this capability: compare supplied CU consumption, requested limit, and instruction defaults.","category":"chain_tools_solana","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/solana_compute_unit_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/solana_compute_unit_analyze/invoke","mcp_tool":"solana_compute_unit_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"solana_compute_unit_analyze","minLength":27,"maxLength":27},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana","minLength":6,"maxLength":6},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"units_consumed\":\"180000\",\"compute_unit_limit\":\"200000\"}"},"output_example":{"service_id":"solana_compute_unit_analyze","evidence_scope":"caller_supplied_data","analyzed_network":"solana","analysis_json":"{\"compute_unit_limit\":\"200000\",\"headroom\":\"20000\",\"units_consumed\":\"180000\",\"utilization_ppm\":\"900000\",\"within_limit\":true}","warnings":["Consumption and limits are supplied observations, not a simulation."]}},{"service_id":"solana_priority_fee_calculate","name":"Solana Priority Fee Calculator","description":"Calculate the legacy/v0 priority fee using exact micro-lamport arithmetic.","when_to_use":"Use this service when you need this capability: calculate the legacy/v0 priority fee using exact micro-lamport arithmetic.","category":"chain_tools_solana","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/solana_priority_fee_calculate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/solana_priority_fee_calculate/invoke","mcp_tool":"solana_priority_fee_calculate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"solana_priority_fee_calculate","minLength":29,"maxLength":29},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana","minLength":6,"maxLength":6},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"compute_unit_price_micro_lamports\":\"1000\",\"compute_unit_limit\":\"200000\"}"},"output_example":{"service_id":"solana_priority_fee_calculate","evidence_scope":"caller_supplied_data","analyzed_network":"solana","analysis_json":"{\"compute_unit_limit\":\"200000\",\"compute_unit_price_micro_lamports\":\"1000\",\"priority_fee_lamports\":\"200\",\"rounding\":\"ceiling\"}","warnings":["Does not estimate a live competitive CU price."]}},{"service_id":"solana_sol_transfer_decode","name":"Solana SOL Transfer Decoder","description":"Decode supplied System Program transfer instruction fields and validate lamport bounds.","when_to_use":"Use this service when you need this capability: decode supplied System Program transfer instruction fields and validate lamport bounds.","category":"chain_tools_solana","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/solana_sol_transfer_decode/invoke","method":"POST","planned_invoke_route":"/api/agent/services/solana_sol_transfer_decode/invoke","mcp_tool":"solana_sol_transfer_decode","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"solana_sol_transfer_decode","minLength":26,"maxLength":26},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana","minLength":6,"maxLength":6},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"instruction\":{\"program_id\":\"11111111111111111111111111111111\",\"type\":\"transfer\",\"source\":\"11111111111111111111111111111111\",\"destination\":\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\",\"lamports\":\"1000\",\"amount\":\"1000\"},\"account_keys\":[\"11111111111111111111111111111111\",\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"]}"},"output_example":{"service_id":"solana_sol_transfer_decode","evidence_scope":"caller_supplied_data","analyzed_network":"solana","analysis_json":"{\"account_indexes\":[],\"authority\":null,\"destination\":\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\",\"lamports\":\"1000\",\"program_id\":\"11111111111111111111111111111111\",\"resolved_accounts\":[],\"source\":\"11111111111111111111111111111111\",\"structurally_valid\":true,\"variant\":\"transfer\"}","warnings":["Does not prove execution or current balances."]}},{"service_id":"solana_spl_transfer_decode","name":"Solana SPL Token Transfer Decoder","description":"Normalize supplied SPL Token transfer or transferChecked instruction data.","when_to_use":"Use this service when you need this capability: normalize supplied SPL Token transfer or transferChecked instruction data.","category":"chain_tools_solana","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/solana_spl_transfer_decode/invoke","method":"POST","planned_invoke_route":"/api/agent/services/solana_spl_transfer_decode/invoke","mcp_tool":"solana_spl_transfer_decode","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"solana_spl_transfer_decode","minLength":26,"maxLength":26},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana","minLength":6,"maxLength":6},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"instruction\":{\"program_id\":\"11111111111111111111111111111111\",\"type\":\"transfer\",\"source\":\"11111111111111111111111111111111\",\"destination\":\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\",\"lamports\":\"1000\",\"amount\":\"1000\"},\"account_keys\":[\"11111111111111111111111111111111\",\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"]}"},"output_example":{"service_id":"solana_spl_transfer_decode","evidence_scope":"caller_supplied_data","analyzed_network":"solana","analysis_json":"{\"account_indexes\":[],\"amount_atomic\":\"1000\",\"authority\":null,\"decimals\":null,\"destination\":\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\",\"display_amount\":null,\"program_id\":\"11111111111111111111111111111111\",\"resolved_accounts\":[],\"source\":\"11111111111111111111111111111111\",\"variant\":\"transfer\"}","warnings":["Mint decimals and account ownership are not inferred."]}},{"service_id":"solana_spl_approval_analyze","name":"Solana SPL Approval and Authority Analysis","description":"Analyze supplied approve, revoke, set-authority, or close-account token instructions.","when_to_use":"Use this service when you need this capability: analyze supplied approve, revoke, set-authority, or close-account token instructions.","category":"chain_tools_solana","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/solana_spl_approval_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/solana_spl_approval_analyze/invoke","mcp_tool":"solana_spl_approval_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"solana_spl_approval_analyze","minLength":27,"maxLength":27},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana","minLength":6,"maxLength":6},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"instructions\":[{\"program_id\":\"11111111111111111111111111111111\",\"type\":\"transfer\",\"source\":\"11111111111111111111111111111111\",\"destination\":\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\",\"lamports\":\"1000\"}]}"},"output_example":{"service_id":"solana_spl_approval_analyze","evidence_scope":"caller_supplied_data","analyzed_network":"solana","analysis_json":"{\"changes\":[{\"account\":\"11111111111111111111111111111111\",\"action\":\"transfer\",\"amount_atomic\":null,\"authority\":null,\"delegate\":null,\"index\":0}],\"risk_flags\":[]}","warnings":["Does not query current authority or allowance state."]}},{"service_id":"solana_spl_mint_decode","name":"Solana SPL Mint Account Decoder","description":"Decode a supplied SPL mint-account field set into supply and authority semantics.","when_to_use":"Use this service when you need this capability: decode a supplied SPL mint-account field set into supply and authority semantics.","category":"chain_tools_solana","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/solana_spl_mint_decode/invoke","method":"POST","planned_invoke_route":"/api/agent/services/solana_spl_mint_decode/invoke","mcp_tool":"solana_spl_mint_decode","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"solana_spl_mint_decode","minLength":22,"maxLength":22},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana","minLength":6,"maxLength":6},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"mint_account\":{\"supply\":\"1000000\",\"decimals\":6,\"is_initialized\":true,\"mint_authority\":\"11111111111111111111111111111111\",\"freeze_authority\":null}}"},"output_example":{"service_id":"solana_spl_mint_decode","evidence_scope":"caller_supplied_data","analyzed_network":"solana","analysis_json":"{\"decimals\":6,\"display_supply\":\"1\",\"freeze_authority\":null,\"is_initialized\":true,\"mint_authority\":\"11111111111111111111111111111111\",\"supply_atomic\":\"1000000\"}","warnings":["Caller must identify the Token program and supply correct decoded fields."]}},{"service_id":"solana_spl_token_account_decode","name":"Solana SPL Token Account Decoder","description":"Decode a supplied SPL token-account field set into ownership and balance semantics.","when_to_use":"Use this service when you need this capability: decode a supplied SPL token-account field set into ownership and balance semantics.","category":"chain_tools_solana","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/solana_spl_token_account_decode/invoke","method":"POST","planned_invoke_route":"/api/agent/services/solana_spl_token_account_decode/invoke","mcp_tool":"solana_spl_token_account_decode","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"solana_spl_token_account_decode","minLength":31,"maxLength":31},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana","minLength":6,"maxLength":6},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"token_account\":{\"mint\":\"11111111111111111111111111111111\",\"owner\":\"11111111111111111111111111111111\",\"amount\":\"1000\",\"state\":\"initialized\",\"delegate\":null,\"close_authority\":null}}"},"output_example":{"service_id":"solana_spl_token_account_decode","evidence_scope":"caller_supplied_data","analyzed_network":"solana","analysis_json":"{\"amount_atomic\":\"1000\",\"close_authority\":null,\"decimals\":null,\"delegate\":null,\"delegated_amount\":null,\"display_amount\":null,\"is_native_reserve\":null,\"mint\":\"11111111111111111111111111111111\",\"owner\":\"11111111111111111111111111111111\",\"state\":\"initialized\"}","warnings":["Does not authenticate the account data source."]}},{"service_id":"solana_token2022_extensions_parse","name":"Solana Token-2022 Extension Parser","description":"Parse supplied Token-2022 extension records into a bounded typed inventory.","when_to_use":"Use this service when you need this capability: parse supplied Token-2022 extension records into a bounded typed inventory.","category":"chain_tools_solana","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/solana_token2022_extensions_parse/invoke","method":"POST","planned_invoke_route":"/api/agent/services/solana_token2022_extensions_parse/invoke","mcp_tool":"solana_token2022_extensions_parse","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"solana_token2022_extensions_parse","minLength":33,"maxLength":33},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana","minLength":6,"maxLength":6},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"account_type\":\"mint\",\"extensions\":[{\"type\":\"transfer_fee_config\",\"basis_points\":25}]}"},"output_example":{"service_id":"solana_token2022_extensions_parse","evidence_scope":"caller_supplied_data","analyzed_network":"solana","analysis_json":"{\"account_type\":\"mint\",\"duplicates\":[],\"extensions\":[{\"configuration\":{\"basis_points\":25},\"index\":0,\"type\":\"transfer_fee_config\"}],\"unknown_types\":[]}","warnings":["Does not decode unknown binary extension layouts without supplied typed records."]}},{"service_id":"solana_token2022_compatibility_report","name":"Solana Token-2022 Compatibility Report","description":"Compare supplied Token-2022 extensions against caller-declared application support.","when_to_use":"Use this service when you need this capability: compare supplied Token-2022 extensions against caller-declared application support.","category":"chain_tools_solana","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/solana_token2022_compatibility_report/invoke","method":"POST","planned_invoke_route":"/api/agent/services/solana_token2022_compatibility_report/invoke","mcp_tool":"solana_token2022_compatibility_report","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"solana_token2022_compatibility_report","minLength":37,"maxLength":37},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana","minLength":6,"maxLength":6},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"extensions\":[{\"type\":\"transfer_fee_config\",\"basis_points\":25}],\"supported_extensions\":[\"transfer_fee_config\"]}"},"output_example":{"service_id":"solana_token2022_compatibility_report","evidence_scope":"caller_supplied_data","analyzed_network":"solana","analysis_json":"{\"compatible\":true,\"required_review\":[],\"supported\":[\"transfer_fee_config\"],\"unsupported\":[]}","warnings":["Application capabilities are caller declared; no universal safety claim is made."]}},{"service_id":"solana_token_authority_risk","name":"Solana Token Authority and Freeze Risk Report","description":"Assess supplied mint/freeze/delegate/close authorities and Token-2022 controls.","when_to_use":"Use this service when you need this capability: assess supplied mint/freeze/delegate/close authorities and Token-2022 controls.","category":"chain_tools_solana","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/solana_token_authority_risk/invoke","method":"POST","planned_invoke_route":"/api/agent/services/solana_token_authority_risk/invoke","mcp_tool":"solana_token_authority_risk","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"solana_token_authority_risk","minLength":27,"maxLength":27},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana","minLength":6,"maxLength":6},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"mint\":{\"mint_authority\":\"11111111111111111111111111111111\",\"freeze_authority\":null,\"extensions\":[]},\"accounts\":[{\"owner\":\"11111111111111111111111111111111\",\"delegate\":null,\"close_authority\":null}]}"},"output_example":{"service_id":"solana_token_authority_risk","evidence_scope":"caller_supplied_data","analyzed_network":"solana","analysis_json":"{\"close_authorities\":[],\"delegates\":[],\"evidence_gaps\":[\"current_chain_state_not_queried\"],\"freeze_authority\":null,\"mint_authority\":\"11111111111111111111111111111111\",\"risk_flags\":[\"mutable_supply\"]}","warnings":["Flags are not a contract-safety rating and use supplied data only."]}},{"service_id":"solana_transaction_logs_structure","name":"Solana Transaction Log Structurer","description":"Structure supplied program logs into invocation depth, success/failure, and message records.","when_to_use":"Use this service when you need this capability: structure supplied program logs into invocation depth, success/failure, and message records.","category":"chain_tools_solana","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/solana_transaction_logs_structure/invoke","method":"POST","planned_invoke_route":"/api/agent/services/solana_transaction_logs_structure/invoke","mcp_tool":"solana_transaction_logs_structure","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"solana_transaction_logs_structure","minLength":33,"maxLength":33},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana","minLength":6,"maxLength":6},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"log_messages\":[\"Program 11111111111111111111111111111111 invoke [1]\",\"Program 11111111111111111111111111111111 success\"]}"},"output_example":{"service_id":"solana_transaction_logs_structure","evidence_scope":"caller_supplied_data","analyzed_network":"solana","analysis_json":"{\"failures\":[],\"frames\":[{\"depth\":1,\"end_index\":1,\"outcome\":\"success\",\"program_id\":\"11111111111111111111111111111111\",\"start_index\":0}],\"messages\":[],\"warnings\":[]}","warnings":["Logs may be incomplete or truncated by the caller."]}},{"service_id":"solana_inner_instructions_analyze","name":"Solana Inner Instruction Analyzer","description":"Relate supplied inner instructions to their parent instruction indexes and programs.","when_to_use":"Use this service when you need this capability: relate supplied inner instructions to their parent instruction indexes and programs.","category":"chain_tools_solana","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/solana_inner_instructions_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/solana_inner_instructions_analyze/invoke","mcp_tool":"solana_inner_instructions_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"solana_inner_instructions_analyze","minLength":33,"maxLength":33},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana","minLength":6,"maxLength":6},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"inner_instructions\":[{\"index\":0,\"instructions\":[{\"programIdIndex\":0,\"accounts\":[0],\"data\":\"\"}]}],\"account_keys\":[\"11111111111111111111111111111111\",\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"]}"},"output_example":{"service_id":"solana_inner_instructions_analyze","evidence_scope":"caller_supplied_data","analyzed_network":"solana","analysis_json":"{\"cpi_count\":1,\"groups\":[{\"children\":[{\"account_indexes\":[0],\"child_index\":0,\"program_id\":\"11111111111111111111111111111111\",\"program_id_index\":0,\"resolved_accounts\":[\"11111111111111111111111111111111\"]}],\"parent_instruction_index\":0}],\"program_inventory\":[\"11111111111111111111111111111111\"],\"unresolved\":[]}","warnings":["Does not infer missing inner instructions."]}},{"service_id":"solana_sol_balance_changes","name":"Solana Pre/Post SOL Balance Change Report","description":"Calculate exact lamport deltas from supplied pre/post balance arrays.","when_to_use":"Use this service when you need this capability: calculate exact lamport deltas from supplied pre/post balance arrays.","category":"chain_tools_solana","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/solana_sol_balance_changes/invoke","method":"POST","planned_invoke_route":"/api/agent/services/solana_sol_balance_changes/invoke","mcp_tool":"solana_sol_balance_changes","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"solana_sol_balance_changes","minLength":26,"maxLength":26},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana","minLength":6,"maxLength":6},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"account_keys\":[\"11111111111111111111111111111111\",\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"],\"pre_balances\":[\"1000\",\"0\"],\"post_balances\":[\"900\",\"100\"]}"},"output_example":{"service_id":"solana_sol_balance_changes","evidence_scope":"caller_supplied_data","analyzed_network":"solana","analysis_json":"{\"changes\":[{\"account\":\"11111111111111111111111111111111\",\"after\":\"900\",\"before\":\"1000\",\"delta\":\"-100\"},{\"account\":\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\",\"after\":\"100\",\"before\":\"0\",\"delta\":\"100\"}],\"conservation_difference\":\"0\",\"total_after\":\"1000\",\"total_before\":\"1000\"}","warnings":["Fees and rewards are not assigned unless separately supplied."]}},{"service_id":"solana_token_balance_changes","name":"Solana Pre/Post Token Balance Report","description":"Reconcile supplied Solana pre/post token balances by account index and mint.","when_to_use":"Use this service when you need this capability: reconcile supplied Solana pre/post token balances by account index and mint.","category":"chain_tools_solana","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/solana_token_balance_changes/invoke","method":"POST","planned_invoke_route":"/api/agent/services/solana_token_balance_changes/invoke","mcp_tool":"solana_token_balance_changes","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"solana_token_balance_changes","minLength":28,"maxLength":28},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana","minLength":6,"maxLength":6},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"pre_token_balances\":[{\"account_index\":0,\"amount\":\"10\"}],\"post_token_balances\":[{\"account_index\":0,\"amount\":\"15\"}]}"},"output_example":{"service_id":"solana_token_balance_changes","evidence_scope":"caller_supplied_data","analyzed_network":"solana","analysis_json":"{\"changes\":[{\"after\":\"15\",\"before\":\"10\",\"delta\":\"5\",\"key\":\"0\"}]}","warnings":["Decimals are used only when supplied consistently."]}},{"service_id":"solana_durable_nonce_inspect","name":"Solana Durable Nonce Transaction Inspection","description":"Inspect supplied nonce-account and transaction evidence for durable-nonce usage.","when_to_use":"Use this service when you need this capability: inspect supplied nonce-account and transaction evidence for durable-nonce usage.","category":"chain_tools_solana","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/solana_durable_nonce_inspect/invoke","method":"POST","planned_invoke_route":"/api/agent/services/solana_durable_nonce_inspect/invoke","mcp_tool":"solana_durable_nonce_inspect","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"solana_durable_nonce_inspect","minLength":28,"maxLength":28},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana","minLength":6,"maxLength":6},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transaction\":{\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"chain_id\":\"solana\",\"type\":\"0x2\",\"nonce\":\"1\",\"gas_limit\":\"21000\",\"gas_used\":\"21000\",\"base_fee_per_gas\":\"100\",\"max_fee_per_gas\":\"120\",\"max_priority_fee_per_gas\":\"5\",\"effective_gas_price\":\"105\",\"value\":\"0\",\"data\":\"0xa9059cbb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064\",\"instructions\":[],\"account_keys\":[]},\"nonce_account\":{\"nonce\":\"11111111111111111111111111111111\",\"authority\":\"11111111111111111111111111111111\"}}"},"output_example":{"service_id":"solana_durable_nonce_inspect","evidence_scope":"caller_supplied_data","analyzed_network":"solana","analysis_json":"{\"advance_first\":false,\"advance_instruction_index\":-1,\"authority\":\"11111111111111111111111111111111\",\"nonce\":\"11111111111111111111111111111111\",\"nonce_matches_blockhash\":false,\"transaction_blockhash\":null,\"warnings\":[\"advance nonce instruction not supplied\"]}","warnings":["Does not query nonce freshness or reserve balance."]}},{"service_id":"solana_ed25519_instruction_inspect","name":"Solana Ed25519 Instruction Inspection","description":"Inspect supplied Ed25519 precompile offsets, counts, and referenced message regions.","when_to_use":"Use this service when you need this capability: inspect supplied Ed25519 precompile offsets, counts, and referenced message regions.","category":"chain_tools_solana","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/solana_ed25519_instruction_inspect/invoke","method":"POST","planned_invoke_route":"/api/agent/services/solana_ed25519_instruction_inspect/invoke","mcp_tool":"solana_ed25519_instruction_inspect","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"solana_ed25519_instruction_inspect","minLength":34,"maxLength":34},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana","minLength":6,"maxLength":6},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"instruction_data_hex\":\"0x00\"}"},"output_example":{"service_id":"solana_ed25519_instruction_inspect","evidence_scope":"caller_supplied_data","analyzed_network":"solana","analysis_json":"{\"algorithm\":\"ed25519\",\"cryptographic_verification_performed\":false,\"data_bytes\":1,\"offset_table_bytes\":0,\"signature_count\":0,\"structurally_valid\":true,\"trailing_bytes\":0}","warnings":["Structural inspection does not cryptographically verify signatures."]}},{"service_id":"solana_secp256k1_instruction_inspect","name":"Solana Secp256k1 Instruction Inspection","description":"Inspect supplied Secp256k1 precompile offsets, counts, and referenced regions.","when_to_use":"Use this service when you need this capability: inspect supplied Secp256k1 precompile offsets, counts, and referenced regions.","category":"chain_tools_solana","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/solana_secp256k1_instruction_inspect/invoke","method":"POST","planned_invoke_route":"/api/agent/services/solana_secp256k1_instruction_inspect/invoke","mcp_tool":"solana_secp256k1_instruction_inspect","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"solana_secp256k1_instruction_inspect","minLength":36,"maxLength":36},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana","minLength":6,"maxLength":6},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"instruction_data_hex\":\"0x00\"}"},"output_example":{"service_id":"solana_secp256k1_instruction_inspect","evidence_scope":"caller_supplied_data","analyzed_network":"solana","analysis_json":"{\"algorithm\":\"secp256k1\",\"cryptographic_verification_performed\":false,\"data_bytes\":1,\"offset_table_bytes\":0,\"signature_count\":0,\"structurally_valid\":true,\"trailing_bytes\":0}","warnings":["Structural inspection does not recover or authenticate signers."]}},{"service_id":"solana_idl_instruction_decode","name":"Solana IDL-Assisted Instruction Decoder","description":"Decode supplied instruction data and accounts against a bounded caller-supplied IDL fragment.","when_to_use":"Use this service when you need this capability: decode supplied instruction data and accounts against a bounded caller-supplied IDL fragment.","category":"chain_tools_solana","version":"1.0.0","amount_atomic":"20000","price_usdc":"0.02","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/solana_idl_instruction_decode/invoke","method":"POST","planned_invoke_route":"/api/agent/services/solana_idl_instruction_decode/invoke","mcp_tool":"solana_idl_instruction_decode","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"solana_idl_instruction_decode","minLength":29,"maxLength":29},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana","minLength":6,"maxLength":6},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"idl\":{\"instructions\":[{\"name\":\"noop\",\"discriminator\":[1,2,3,4,5,6,7,8],\"accounts\":[],\"args\":[]}]},\"instruction\":{\"program_id\":\"11111111111111111111111111111111\",\"type\":\"transfer\",\"source\":\"11111111111111111111111111111111\",\"destination\":\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\",\"lamports\":\"1000\",\"amount\":\"1000\"}}"},"output_example":{"service_id":"solana_idl_instruction_decode","evidence_scope":"caller_supplied_data","analyzed_network":"solana","analysis_json":"{\"accounts\":[],\"arguments\":{},\"discriminator\":[],\"instruction_name\":null,\"matched\":false,\"unmatched_data_hex\":\"0x\"}","warnings":["Accuracy depends entirely on the supplied IDL and supported primitive types."]}},{"service_id":"solana_program_account_relationships","name":"Solana Program and Account Relationship Report","description":"Build a bounded graph from supplied top-level and inner instruction account references.","when_to_use":"Use this service when you need this capability: build a bounded graph from supplied top-level and inner instruction account references.","category":"chain_tools_solana","version":"1.0.0","amount_atomic":"20000","price_usdc":"0.02","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/solana_program_account_relationships/invoke","method":"POST","planned_invoke_route":"/api/agent/services/solana_program_account_relationships/invoke","mcp_tool":"solana_program_account_relationships","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"solana_program_account_relationships","minLength":36,"maxLength":36},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana","minLength":6,"maxLength":6},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"instructions\":[{\"program_id\":\"11111111111111111111111111111111\",\"type\":\"transfer\",\"source\":\"11111111111111111111111111111111\",\"destination\":\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\",\"lamports\":\"1000\"}],\"inner_instructions\":[{\"index\":0,\"instructions\":[{\"programIdIndex\":0,\"accounts\":[0],\"data\":\"\"}]}],\"account_keys\":[\"11111111111111111111111111111111\",\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"]}"},"output_example":{"service_id":"solana_program_account_relationships","evidence_scope":"caller_supplied_data","analyzed_network":"solana","analysis_json":"{\"edges\":[{\"account\":\"11111111111111111111111111111111\",\"account_index\":0,\"instruction_index\":1,\"is_signer\":false,\"is_writable\":false,\"program\":\"11111111111111111111111111111111\"}],\"hotspots\":[],\"programs\":[\"11111111111111111111111111111111\"],\"unresolved\":[]}","warnings":["Relationships show supplied references, not ownership or semantic intent."]}},{"service_id":"solana_transaction_complexity_report","name":"Full Solana Transaction Complexity Report","description":"Combine supplied message, metadata, logs, and balances into a transaction complexity report.","when_to_use":"Use this service when you need this capability: combine supplied message, metadata, logs, and balances into a transaction complexity report.","category":"chain_tools_solana","version":"1.0.0","amount_atomic":"25000","price_usdc":"0.025","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/solana_transaction_complexity_report/invoke","method":"POST","planned_invoke_route":"/api/agent/services/solana_transaction_complexity_report/invoke","mcp_tool":"solana_transaction_complexity_report","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"solana_transaction_complexity_report","minLength":36,"maxLength":36},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana","minLength":6,"maxLength":6},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transaction\":{\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"chain_id\":\"solana\",\"type\":\"0x2\",\"nonce\":\"1\",\"gas_limit\":\"21000\",\"gas_used\":\"21000\",\"base_fee_per_gas\":\"100\",\"max_fee_per_gas\":\"120\",\"max_priority_fee_per_gas\":\"5\",\"effective_gas_price\":\"105\",\"value\":\"0\",\"data\":\"0xa9059cbb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064\",\"instructions\":[],\"account_keys\":[]},\"meta\":{\"err\":null,\"fee\":\"5000\",\"logMessages\":[],\"innerInstructions\":[],\"preBalances\":[\"1000\"],\"postBalances\":[\"995\"],\"computeUnitsConsumed\":\"10\"}}"},"output_example":{"service_id":"solana_transaction_complexity_report","evidence_scope":"caller_supplied_data","analyzed_network":"solana","analysis_json":"{\"band\":\"low\",\"counts\":{\"calls\":0,\"inner\":0,\"instructions\":0,\"keys\":0,\"logs\":0},\"interpretation\":\"structural_complexity_only\",\"network\":\"solana\",\"score\":0}","warnings":["Complexity is not safety, confirmation, or finality."]}},{"service_id":"base_address_chain_validate","name":"Base Address and Chain Validation","description":"Validate a supplied EVM address and require Base mainnet chain ID 8453 or Base Sepolia 84532.","when_to_use":"Use this service when you need this capability: validate a supplied EVM address and require Base mainnet chain ID 8453 or Base Sepolia 84532.","category":"chain_tools_base","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/base_address_chain_validate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/base_address_chain_validate/invoke","mcp_tool":"base_address_chain_validate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"base_address_chain_validate","minLength":27,"maxLength":27},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"base","minLength":4,"maxLength":4},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"address\":\"0x0000000000000000000000000000000000000001\",\"chain_id\":\"8453\"}"},"output_example":{"service_id":"base_address_chain_validate","evidence_scope":"caller_supplied_data","analyzed_network":"base","analysis_json":"{\"address\":\"0x0000000000000000000000000000000000000001\",\"chain_id\":\"8453\",\"network\":\"base_mainnet\",\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"},\"valid\":true}","warnings":["Does not prove ownership, code, or account existence."]}},{"service_id":"base_eip1559_transaction_decode","name":"Base EIP-1559 Transaction Decoder","description":"Decode supplied type-2 transaction fields and enforce Base chain identity.","when_to_use":"Use this service when you need this capability: decode supplied type-2 transaction fields and enforce Base chain identity.","category":"chain_tools_base","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/base_eip1559_transaction_decode/invoke","method":"POST","planned_invoke_route":"/api/agent/services/base_eip1559_transaction_decode/invoke","mcp_tool":"base_eip1559_transaction_decode","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"base_eip1559_transaction_decode","minLength":31,"maxLength":31},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"base","minLength":4,"maxLength":4},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transaction\":{\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"chain_id\":\"8453\",\"type\":\"0x2\",\"nonce\":\"1\",\"gas_limit\":\"21000\",\"gas_used\":\"21000\",\"base_fee_per_gas\":\"100\",\"max_fee_per_gas\":\"120\",\"max_priority_fee_per_gas\":\"5\",\"effective_gas_price\":\"105\",\"value\":\"0\",\"data\":\"0xa9059cbb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064\",\"instructions\":[],\"account_keys\":[]}}"},"output_example":{"service_id":"base_eip1559_transaction_decode","evidence_scope":"caller_supplied_data","analyzed_network":"base","analysis_json":"{\"calldata_bytes\":68,\"chain_id\":\"8453\",\"data\":\"0xa9059cbb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064\",\"gas_limit\":\"21000\",\"max_fee_per_gas\":\"120\",\"max_priority_fee_per_gas\":\"5\",\"network\":\"base_mainnet\",\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"},\"nonce\":\"1\",\"to\":\"0x0000000000000000000000000000000000000002\",\"type\":\"0x2\",\"value\":\"0\"}","warnings":["Unsigned or supplied transaction data does not prove broadcast or inclusion."]}},{"service_id":"base_transaction_type_inspect","name":"Base Transaction Type Inspection","description":"Classify supplied Base legacy, access-list, EIP-1559, blob, set-code, or deposit transaction evidence.","when_to_use":"Use this service when you need this capability: classify supplied Base legacy, access-list, EIP-1559, blob, set-code, or deposit transaction evidence.","category":"chain_tools_base","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/base_transaction_type_inspect/invoke","method":"POST","planned_invoke_route":"/api/agent/services/base_transaction_type_inspect/invoke","mcp_tool":"base_transaction_type_inspect","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"base_transaction_type_inspect","minLength":29,"maxLength":29},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"base","minLength":4,"maxLength":4},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transaction\":{\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"chain_id\":\"8453\",\"type\":\"0x2\",\"nonce\":\"1\",\"gas_limit\":\"21000\",\"gas_used\":\"21000\",\"base_fee_per_gas\":\"100\",\"max_fee_per_gas\":\"120\",\"max_priority_fee_per_gas\":\"5\",\"effective_gas_price\":\"105\",\"value\":\"0\",\"data\":\"0xa9059cbb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064\",\"instructions\":[],\"account_keys\":[]}}"},"output_example":{"service_id":"base_transaction_type_inspect","evidence_scope":"caller_supplied_data","analyzed_network":"base","analysis_json":"{\"base_specific\":false,\"classification\":\"eip1559\",\"expected_fields\":[\"max_fee_per_gas\",\"max_priority_fee_per_gas\"],\"missing_fields\":[],\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"},\"type\":\"0x2\"}","warnings":["Future types remain unknown unless their fields are supplied and documented."]}},{"service_id":"base_deposit_transaction_inspect","name":"Base Deposit Transaction Inspection","description":"Inspect caller-supplied OP Stack deposit transaction fields including source hash and mint/value.","when_to_use":"Use this service when you need this capability: inspect caller-supplied OP Stack deposit transaction fields including source hash and mint/value.","category":"chain_tools_base","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/base_deposit_transaction_inspect/invoke","method":"POST","planned_invoke_route":"/api/agent/services/base_deposit_transaction_inspect/invoke","mcp_tool":"base_deposit_transaction_inspect","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"base_deposit_transaction_inspect","minLength":32,"maxLength":32},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"base","minLength":4,"maxLength":4},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"deposit_transaction\":{\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"chain_id\":\"8453\",\"type\":\"0x7e\",\"nonce\":\"1\",\"gas_limit\":\"21000\",\"gas_used\":\"21000\",\"base_fee_per_gas\":\"100\",\"max_fee_per_gas\":\"120\",\"max_priority_fee_per_gas\":\"5\",\"effective_gas_price\":\"105\",\"value\":\"0\",\"data\":\"0xa9059cbb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064\",\"instructions\":[],\"account_keys\":[],\"source_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"mint\":\"0\",\"is_system_transaction\":false}}"},"output_example":{"service_id":"base_deposit_transaction_inspect","evidence_scope":"caller_supplied_data","analyzed_network":"base","analysis_json":"{\"consistency_warnings\":[],\"from\":\"0x0000000000000000000000000000000000000001\",\"gas_limit\":\"21000\",\"is_deposit\":true,\"is_system_transaction\":false,\"mint\":\"0\",\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"},\"source_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"to\":\"0x0000000000000000000000000000000000000002\",\"type\":\"0x7e\",\"value\":\"0\"}","warnings":["Does not prove the L1 event, derivation, inclusion, or finality."]}},{"service_id":"base_calldata_decode","name":"Base Calldata Decoder","description":"Decode supplied Base calldata against a bounded caller-supplied ABI.","when_to_use":"Use this service when you need this capability: decode supplied Base calldata against a bounded caller-supplied ABI.","category":"chain_tools_base","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/base_calldata_decode/invoke","method":"POST","planned_invoke_route":"/api/agent/services/base_calldata_decode/invoke","mcp_tool":"base_calldata_decode","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"base_calldata_decode","minLength":20,"maxLength":20},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"base","minLength":4,"maxLength":4},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"abi\":[{\"type\":\"function\",\"name\":\"transfer\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}]}],\"data\":\"0xa9059cbb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064\",\"chain_id\":\"8453\"}"},"output_example":{"service_id":"base_calldata_decode","evidence_scope":"caller_supplied_data","analyzed_network":"base","analysis_json":"{\"args\":[\"0x0000000000000000000000000000000000000002\",\"100\"],\"calldata_bytes\":68,\"function_name\":\"transfer\",\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"},\"selector\":\"0xa9059cbb\"}","warnings":["A supplied ABI may be incorrect and decoding does not simulate execution."]}},{"service_id":"base_contract_creation_inspect","name":"Base Contract Creation Inspection","description":"Inspect supplied Base contract-creation transaction fields and init-code metrics.","when_to_use":"Use this service when you need this capability: inspect supplied Base contract-creation transaction fields and init-code metrics.","category":"chain_tools_base","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/base_contract_creation_inspect/invoke","method":"POST","planned_invoke_route":"/api/agent/services/base_contract_creation_inspect/invoke","mcp_tool":"base_contract_creation_inspect","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"base_contract_creation_inspect","minLength":30,"maxLength":30},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"base","minLength":4,"maxLength":4},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transaction\":{\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":null,\"chain_id\":\"8453\",\"type\":\"0x2\",\"nonce\":\"1\",\"gas_limit\":\"21000\",\"gas_used\":\"21000\",\"base_fee_per_gas\":\"100\",\"max_fee_per_gas\":\"120\",\"max_priority_fee_per_gas\":\"5\",\"effective_gas_price\":\"105\",\"value\":\"0\",\"data\":\"0xa9059cbb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064\",\"instructions\":[],\"account_keys\":[]}}"},"output_example":{"service_id":"base_contract_creation_inspect","evidence_scope":"caller_supplied_data","analyzed_network":"base","analysis_json":"{\"creator\":\"0x0000000000000000000000000000000000000001\",\"expected_address\":null,\"gas_limit\":\"21000\",\"init_code_bytes\":68,\"init_code_hash\":\"0x53893ee34a7f44a17cb623aa779750e71b27d6a76064cb515b6c5c42a4a973f7\",\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"},\"nonce\":\"1\",\"value\":\"0\",\"warnings\":[\"expected address requires a supplied creator and nonce derivation\"]}","warnings":["Does not prove deployment, runtime bytecode, or contract safety."]}},{"service_id":"base_event_log_decode","name":"Base Event and Log Decoder","description":"Decode supplied Base log topics/data against a bounded ABI and preserve log identity.","when_to_use":"Use this service when you need this capability: decode supplied Base log topics/data against a bounded ABI and preserve log identity.","category":"chain_tools_base","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/base_event_log_decode/invoke","method":"POST","planned_invoke_route":"/api/agent/services/base_event_log_decode/invoke","mcp_tool":"base_event_log_decode","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"base_event_log_decode","minLength":21,"maxLength":21},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"base","minLength":4,"maxLength":4},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"abi\":[{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}]}],\"log\":{\"address\":\"0x0000000000000000000000000000000000000001\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x0000000000000000000000000000000000000000000000000000000000000001\",\"0x0000000000000000000000000000000000000000000000000000000000000002\"],\"data\":\"0x0000000000000000000000000000000000000000000000000000000000000064\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"log_index\":0,\"block_number\":1},\"chain_id\":\"8453\"}"},"output_example":{"service_id":"base_event_log_decode","evidence_scope":"caller_supplied_data","analyzed_network":"base","analysis_json":"{\"address\":\"0x0000000000000000000000000000000000000001\",\"args\":{\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"value\":\"100\"},\"block_number\":1,\"event_name\":\"Transfer\",\"log_index\":0,\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"},\"removed\":false,\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\"}","warnings":["Supplied logs are not independently verified."]}},{"service_id":"base_receipt_analyze","name":"Base Transaction Receipt Analyzer","description":"Analyze supplied Base receipt status, gas, logs, creation, and L1 fee fields.","when_to_use":"Use this service when you need this capability: analyze supplied Base receipt status, gas, logs, creation, and L1 fee fields.","category":"chain_tools_base","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/base_receipt_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/base_receipt_analyze/invoke","mcp_tool":"base_receipt_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"base_receipt_analyze","minLength":20,"maxLength":20},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"base","minLength":4,"maxLength":4},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"receipt\":{\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"chain_id\":\"8453\",\"type\":\"0x2\",\"status\":\"0x1\",\"gas_used\":\"21000\",\"effective_gas_price\":\"105\",\"logs\":[{\"address\":\"0x0000000000000000000000000000000000000001\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x0000000000000000000000000000000000000000000000000000000000000001\",\"0x0000000000000000000000000000000000000000000000000000000000000002\"],\"data\":\"0x0000000000000000000000000000000000000000000000000000000000000064\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"log_index\":0,\"block_number\":1}]}}"},"output_example":{"service_id":"base_receipt_analyze","evidence_scope":"caller_supplied_data","analyzed_network":"base","analysis_json":"{\"contract_address\":null,\"effective_gas_price\":\"105\",\"execution_fee\":\"2205000\",\"gas_used\":\"21000\",\"l1_fee\":\"0\",\"log_count\":1,\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"},\"status\":\"0x1\",\"successful\":true,\"total_supplied_fee\":\"2205000\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"warnings\":[\"receipt authenticity and finality are not verified\"]}","warnings":["Receipt data does not establish safe or finalized status."]}},{"service_id":"base_transaction_receipt_consistency","name":"Base Transaction and Receipt Consistency","description":"Check supplied Base transaction and receipt identity, gas, destination, and type fields.","when_to_use":"Use this service when you need this capability: check supplied Base transaction and receipt identity, gas, destination, and type fields.","category":"chain_tools_base","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/base_transaction_receipt_consistency/invoke","method":"POST","planned_invoke_route":"/api/agent/services/base_transaction_receipt_consistency/invoke","mcp_tool":"base_transaction_receipt_consistency","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"base_transaction_receipt_consistency","minLength":36,"maxLength":36},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"base","minLength":4,"maxLength":4},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transaction\":{\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"chain_id\":\"8453\",\"type\":\"0x2\",\"nonce\":\"1\",\"gas_limit\":\"21000\",\"gas_used\":\"21000\",\"base_fee_per_gas\":\"100\",\"max_fee_per_gas\":\"120\",\"max_priority_fee_per_gas\":\"5\",\"effective_gas_price\":\"105\",\"value\":\"0\",\"data\":\"0xa9059cbb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064\",\"instructions\":[],\"account_keys\":[]},\"receipt\":{\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"chain_id\":\"8453\",\"type\":\"0x2\",\"status\":\"0x1\",\"gas_used\":\"21000\",\"effective_gas_price\":\"105\",\"logs\":[{\"address\":\"0x0000000000000000000000000000000000000001\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x0000000000000000000000000000000000000000000000000000000000000001\",\"0x0000000000000000000000000000000000000000000000000000000000000002\"],\"data\":\"0x0000000000000000000000000000000000000000000000000000000000000064\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"log_index\":0,\"block_number\":1}]}}"},"output_example":{"service_id":"base_transaction_receipt_consistency","evidence_scope":"caller_supplied_data","analyzed_network":"base","analysis_json":"{\"checks\":[{\"field\":\"hash\",\"match\":true,\"receipt\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"transaction\":\"0x1111111111111111111111111111111111111111111111111111111111111111\"},{\"field\":\"transaction_hash\",\"match\":true,\"receipt\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"transaction\":\"0x1111111111111111111111111111111111111111111111111111111111111111\"},{\"field\":\"from\",\"match\":true,\"receipt\":\"0x0000000000000000000000000000000000000001\",\"transaction\":\"0x0000000000000000000000000000000000000001\"},{\"field\":\"to\",\"match\":true,\"receipt\":\"0x0000000000000000000000000000000000000002\",\"transaction\":\"0x0000000000000000000000000000000000000002\"},{\"field\":\"type\",\"match\":true,\"receipt\":\"0x2\",\"transaction\":\"0x2\"},{\"field\":\"chain_id\",\"match\":true,\"receipt\":\"8453\",\"transaction\":\"8453\"}],\"consistent\":true,\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"}}","warnings":["Consistent supplied records are not proof of authenticity."]}},{"service_id":"base_effective_gas_price_calculate","name":"Base Effective Gas Price Calculation","description":"Calculate effective type-2 gas price from supplied base fee, fee cap, and priority cap.","when_to_use":"Use this service when you need this capability: calculate effective type-2 gas price from supplied base fee, fee cap, and priority cap.","category":"chain_tools_base","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/base_effective_gas_price_calculate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/base_effective_gas_price_calculate/invoke","mcp_tool":"base_effective_gas_price_calculate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"base_effective_gas_price_calculate","minLength":34,"maxLength":34},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"base","minLength":4,"maxLength":4},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"base_fee_per_gas\":\"100\",\"max_fee_per_gas\":\"120\",\"max_priority_fee_per_gas\":\"5\"}"},"output_example":{"service_id":"base_effective_gas_price_calculate","evidence_scope":"caller_supplied_data","analyzed_network":"base","analysis_json":"{\"base_fee_per_gas\":\"100\",\"cap_headroom\":\"20\",\"effective_gas_price\":\"105\",\"execution_fee\":\"0\",\"gas\":\"0\",\"max_fee_per_gas\":\"120\",\"max_priority_fee_per_gas\":\"5\",\"mode\":\"evm_effective_price\",\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"},\"realized_priority_fee_per_gas\":\"5\"}","warnings":["Does not estimate future or live fees."]}},{"service_id":"base_fee_cap_analyze","name":"Base Fee Cap Analysis","description":"Compare supplied Base max fee and base fee values and quantify headroom.","when_to_use":"Use this service when you need this capability: compare supplied Base max fee and base fee values and quantify headroom.","category":"chain_tools_base","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/base_fee_cap_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/base_fee_cap_analyze/invoke","mcp_tool":"base_fee_cap_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"base_fee_cap_analyze","minLength":20,"maxLength":20},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"base","minLength":4,"maxLength":4},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"gas_limit\":\"21000\",\"base_fee_per_gas\":\"100\",\"max_fee_per_gas\":\"120\",\"chain_id\":\"8453\"}"},"output_example":{"service_id":"base_fee_cap_analyze","evidence_scope":"caller_supplied_data","analyzed_network":"base","analysis_json":"{\"base_fee_per_gas\":\"100\",\"cap_headroom\":\"20\",\"effective_gas_price\":\"100\",\"execution_fee\":\"2100000\",\"gas\":\"21000\",\"max_fee_per_gas\":\"120\",\"max_priority_fee_per_gas\":\"0\",\"mode\":\"evm_fee\",\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"},\"realized_priority_fee_per_gas\":\"0\"}","warnings":["No live inclusion probability is estimated."]}},{"service_id":"base_priority_fee_analyze","name":"Base Priority Fee Analysis","description":"Analyze supplied effective, base, and priority-fee caps for a Base transaction.","when_to_use":"Use this service when you need this capability: analyze supplied effective, base, and priority-fee caps for a Base transaction.","category":"chain_tools_base","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/base_priority_fee_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/base_priority_fee_analyze/invoke","mcp_tool":"base_priority_fee_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"base_priority_fee_analyze","minLength":25,"maxLength":25},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"base","minLength":4,"maxLength":4},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"gas_used\":\"21000\",\"base_fee_per_gas\":\"100\",\"effective_gas_price\":\"105\",\"max_priority_fee_per_gas\":\"5\",\"chain_id\":\"8453\"}"},"output_example":{"service_id":"base_priority_fee_analyze","evidence_scope":"caller_supplied_data","analyzed_network":"base","analysis_json":"{\"base_fee_per_gas\":\"100\",\"cap_headroom\":\"5\",\"effective_gas_price\":\"105\",\"execution_fee\":\"2205000\",\"gas\":\"21000\",\"max_fee_per_gas\":\"105\",\"max_priority_fee_per_gas\":\"5\",\"mode\":\"evm_fee\",\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"},\"realized_priority_fee_per_gas\":\"5\"}","warnings":["Does not recommend a live tip."]}},{"service_id":"base_l2_execution_fee_calculate","name":"Base L2 Execution Fee Calculation","description":"Calculate exact Base L2 execution fee from supplied gas used and effective gas price.","when_to_use":"Use this service when you need this capability: calculate exact Base L2 execution fee from supplied gas used and effective gas price.","category":"chain_tools_base","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/base_l2_execution_fee_calculate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/base_l2_execution_fee_calculate/invoke","mcp_tool":"base_l2_execution_fee_calculate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"base_l2_execution_fee_calculate","minLength":31,"maxLength":31},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"base","minLength":4,"maxLength":4},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"gas_used\":\"21000\",\"effective_gas_price\":\"105\",\"chain_id\":\"8453\"}"},"output_example":{"service_id":"base_l2_execution_fee_calculate","evidence_scope":"caller_supplied_data","analyzed_network":"base","analysis_json":"{\"base_fee_per_gas\":\"0\",\"cap_headroom\":\"105\",\"effective_gas_price\":\"105\",\"execution_fee\":\"2205000\",\"gas\":\"21000\",\"max_fee_per_gas\":\"105\",\"max_priority_fee_per_gas\":\"0\",\"mode\":\"evm_fee\",\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"},\"realized_priority_fee_per_gas\":\"105\"}","warnings":["Excludes L1 data and operator fees unless separately supplied."]}},{"service_id":"base_l1_data_fee_analyze","name":"Base L1 Data Fee Analysis","description":"Analyze supplied OP Stack L1 data-fee inputs or receipt fee fields by named upgrade formula.","when_to_use":"Use this service when you need this capability: analyze supplied OP Stack L1 data-fee inputs or receipt fee fields by named upgrade formula.","category":"chain_tools_base","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/base_l1_data_fee_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/base_l1_data_fee_analyze/invoke","mcp_tool":"base_l1_data_fee_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"base_l1_data_fee_analyze","minLength":24,"maxLength":24},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"base","minLength":4,"maxLength":4},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"fee_model\":\"supplied_receipt\",\"inputs\":{\"l1_fee\":\"500\"}}"},"output_example":{"service_id":"base_l1_data_fee_analyze","evidence_scope":"caller_supplied_data","analyzed_network":"base","analysis_json":"{\"components\":{\"l1_fee\":\"500\"},\"fee_model\":\"supplied_receipt\",\"l1_data_fee\":\"500\",\"missing_evidence\":[],\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"}}","warnings":["Caller must supply current protocol parameters; the service never invents them."]}},{"service_id":"base_total_transaction_cost","name":"Base Total L1/L2 Cost Report","description":"Reconcile supplied Base L2 execution, L1 data, and operator fees.","when_to_use":"Use this service when you need this capability: reconcile supplied Base L2 execution, L1 data, and operator fees.","category":"chain_tools_base","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/base_total_transaction_cost/invoke","method":"POST","planned_invoke_route":"/api/agent/services/base_total_transaction_cost/invoke","mcp_tool":"base_total_transaction_cost","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"base_total_transaction_cost","minLength":27,"maxLength":27},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"base","minLength":4,"maxLength":4},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"l2_execution_fee\":\"2205000\",\"l1_data_fee\":\"500\",\"chain_id\":\"8453\"}"},"output_example":{"service_id":"base_total_transaction_cost","evidence_scope":"caller_supplied_data","analyzed_network":"base","analysis_json":"{\"components\":{\"l1_data_fee\":\"500\",\"l2_execution_fee\":\"2205000\"},\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"},\"total_wei\":\"2205500\"}","warnings":["Only supplied components are included."]}},{"service_id":"base_erc20_transfer_decode","name":"Base ERC-20 Transfer Decoder","description":"Decode supplied Base ERC-20 transfer calldata or event evidence.","when_to_use":"Use this service when you need this capability: decode supplied Base ERC-20 transfer calldata or event evidence.","category":"chain_tools_base","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/base_erc20_transfer_decode/invoke","method":"POST","planned_invoke_route":"/api/agent/services/base_erc20_transfer_decode/invoke","mcp_tool":"base_erc20_transfer_decode","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"base_erc20_transfer_decode","minLength":26,"maxLength":26},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"base","minLength":4,"maxLength":4},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transfer\":{\"token\":\"0x0000000000000000000000000000000000000001\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"amount_atomic\":\"100\"},\"chain_id\":\"8453\"}"},"output_example":{"service_id":"base_erc20_transfer_decode","evidence_scope":"caller_supplied_data","analyzed_network":"base","analysis_json":"{\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"},\"total_atomic\":\"100\",\"transfers\":[{\"amount_atomic\":\"100\",\"from\":\"0x0000000000000000000000000000000000000001\",\"index\":0,\"log_index\":null,\"to\":\"0x0000000000000000000000000000000000000002\",\"token\":\"0x0000000000000000000000000000000000000001\",\"transaction_hash\":null}]}","warnings":["Token decimals and transfer success are not inferred."]}},{"service_id":"base_erc20_approval_exposure","name":"Base ERC-20 Approval and Allowance Exposure","description":"Analyze supplied Base approvals and allowance snapshots by spender.","when_to_use":"Use this service when you need this capability: analyze supplied Base approvals and allowance snapshots by spender.","category":"chain_tools_base","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/base_erc20_approval_exposure/invoke","method":"POST","planned_invoke_route":"/api/agent/services/base_erc20_approval_exposure/invoke","mcp_tool":"base_erc20_approval_exposure","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"base_erc20_approval_exposure","minLength":28,"maxLength":28},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"base","minLength":4,"maxLength":4},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"approvals\":[{\"token\":\"0x0000000000000000000000000000000000000001\",\"owner\":\"0x0000000000000000000000000000000000000001\",\"spender\":\"0x0000000000000000000000000000000000000002\",\"before\":\"0\",\"after\":\"100\"}],\"chain_id\":\"8453\"}"},"output_example":{"service_id":"base_erc20_approval_exposure","evidence_scope":"caller_supplied_data","analyzed_network":"base","analysis_json":"{\"approvals\":[{\"after\":\"100\",\"before\":\"0\",\"delta\":\"100\",\"owner\":\"0x0000000000000000000000000000000000000001\",\"spender\":\"0x0000000000000000000000000000000000000002\",\"token\":\"0x0000000000000000000000000000000000000001\",\"unlimited\":false}],\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"},\"spender_exposure\":[{\"spender\":\"0x0000000000000000000000000000000000000002\",\"total_after\":\"100\",\"unlimited\":false}]}","warnings":["Does not query or revoke current allowances."]}},{"service_id":"base_erc721_transfer_analyze","name":"Base ERC-721 Transfer Analysis","description":"Decode and correlate supplied Base ERC-721 transfer events by token ID.","when_to_use":"Use this service when you need this capability: decode and correlate supplied Base ERC-721 transfer events by token ID.","category":"chain_tools_base","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/base_erc721_transfer_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/base_erc721_transfer_analyze/invoke","mcp_tool":"base_erc721_transfer_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"base_erc721_transfer_analyze","minLength":28,"maxLength":28},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"base","minLength":4,"maxLength":4},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transfers\":[{\"chain\":\"8453\",\"asset\":\"0x0000000000000000000000000000000000000001\",\"asset_id\":\"0x0000000000000000000000000000000000000001\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"amount_atomic\":\"100\",\"stage\":\"lock\"}],\"chain_id\":\"8453\"}"},"output_example":{"service_id":"base_erc721_transfer_analyze","evidence_scope":"caller_supplied_data","analyzed_network":"base","analysis_json":"{\"duplicate_positions\":[],\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"},\"standard\":\"ERC-721\",\"total_units\":\"1\",\"transfers\":[{\"amount\":\"1\",\"from\":\"0x0000000000000000000000000000000000000001\",\"index\":0,\"log_index\":null,\"operator\":null,\"to\":\"0x0000000000000000000000000000000000000002\",\"token\":null,\"token_id\":\"0\",\"transaction_hash\":null}]}","warnings":["Does not prove current ownership or completeness."]}},{"service_id":"base_erc1155_transfer_analyze","name":"Base ERC-1155 Transfer Analysis","description":"Decode supplied single and batch ERC-1155 Base transfer evidence.","when_to_use":"Use this service when you need this capability: decode supplied single and batch ERC-1155 Base transfer evidence.","category":"chain_tools_base","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/base_erc1155_transfer_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/base_erc1155_transfer_analyze/invoke","mcp_tool":"base_erc1155_transfer_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"base_erc1155_transfer_analyze","minLength":29,"maxLength":29},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"base","minLength":4,"maxLength":4},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transfers\":[{\"chain\":\"8453\",\"asset\":\"0x0000000000000000000000000000000000000001\",\"asset_id\":\"0x0000000000000000000000000000000000000001\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"amount_atomic\":\"100\",\"stage\":\"lock\"}],\"chain_id\":\"8453\"}"},"output_example":{"service_id":"base_erc1155_transfer_analyze","evidence_scope":"caller_supplied_data","analyzed_network":"base","analysis_json":"{\"duplicate_positions\":[],\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"},\"standard\":\"ERC-1155\",\"total_units\":\"1\",\"transfers\":[{\"amount\":\"1\",\"from\":\"0x0000000000000000000000000000000000000001\",\"index\":0,\"log_index\":null,\"operator\":null,\"to\":\"0x0000000000000000000000000000000000000002\",\"token\":null,\"token_id\":\"0\",\"transaction_hash\":null}]}","warnings":["Does not prove balances or receipt authenticity."]}},{"service_id":"base_permit_inspect","name":"Base Permit Inspection","description":"Inspect supplied EIP-2612 or Permit2-style signed-message fields without verifying or submitting them.","when_to_use":"Use this service when you need this capability: inspect supplied EIP-2612 or Permit2-style signed-message fields without verifying or submitting them.","category":"chain_tools_base","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/base_permit_inspect/invoke","method":"POST","planned_invoke_route":"/api/agent/services/base_permit_inspect/invoke","mcp_tool":"base_permit_inspect","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"base_permit_inspect","minLength":19,"maxLength":19},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"base","minLength":4,"maxLength":4},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"permit\":{\"type\":\"eip2612\",\"owner\":\"0x0000000000000000000000000000000000000001\",\"spender\":\"0x0000000000000000000000000000000000000002\",\"value\":\"100\",\"nonce\":\"1\",\"deadline\":\"2000000000\",\"domain\":{\"chainId\":\"8453\"}},\"chain_id\":\"8453\"}"},"output_example":{"service_id":"base_permit_inspect","evidence_scope":"caller_supplied_data","analyzed_network":"base","analysis_json":"{\"amount_atomic\":\"100\",\"deadline\":\"2000000000\",\"domain\":{\"chainId\":\"8453\"},\"expired_at_observation\":null,\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"},\"nonce\":\"1\",\"owner\":\"0x0000000000000000000000000000000000000001\",\"permit_type\":\"eip2612\",\"risk_flags\":[\"expiry_not_evaluated\"],\"spender\":\"0x0000000000000000000000000000000000000002\"}","warnings":["No signature is requested, verified, or submitted."]}},{"service_id":"base_eip712_typed_data_inspect","name":"Base EIP-712 Typed Data Inspection","description":"Inspect supplied typed data for domain separation, dependencies, and Base chain ID.","when_to_use":"Use this service when you need this capability: inspect supplied typed data for domain separation, dependencies, and Base chain ID.","category":"chain_tools_base","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/base_eip712_typed_data_inspect/invoke","method":"POST","planned_invoke_route":"/api/agent/services/base_eip712_typed_data_inspect/invoke","mcp_tool":"base_eip712_typed_data_inspect","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"base_eip712_typed_data_inspect","minLength":30,"maxLength":30},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"base","minLength":4,"maxLength":4},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"typed_data\":{\"domain\":{\"name\":\"Example\",\"chainId\":8453},\"primaryType\":\"Mail\",\"types\":{\"Mail\":[{\"name\":\"value\",\"type\":\"uint256\"}]},\"message\":{\"value\":\"1\"}},\"chain_id\":\"8453\"}"},"output_example":{"service_id":"base_eip712_typed_data_inspect","evidence_scope":"caller_supplied_data","analyzed_network":"base","analysis_json":"{\"digest_not_computed\":true,\"domain\":{\"chainId\":8453,\"name\":\"Example\"},\"domain_chain_id\":\"8453\",\"message_keys\":[\"value\"],\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"},\"primary_type\":\"Mail\",\"type_dependencies\":{\"Mail\":[\"uint256\"]}}","warnings":["Does not verify a signature or guarantee application semantics."]}},{"service_id":"base_user_operation_inspect","name":"Base UserOperation Inspection","description":"Inspect supplied ERC-4337 user-operation fields and exact gas/fee exposure.","when_to_use":"Use this service when you need this capability: inspect supplied ERC-4337 user-operation fields and exact gas/fee exposure.","category":"chain_tools_base","version":"1.0.0","amount_atomic":"20000","price_usdc":"0.02","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/base_user_operation_inspect/invoke","method":"POST","planned_invoke_route":"/api/agent/services/base_user_operation_inspect/invoke","mcp_tool":"base_user_operation_inspect","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"base_user_operation_inspect","minLength":27,"maxLength":27},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"base","minLength":4,"maxLength":4},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"user_operation\":{\"sender\":\"0x0000000000000000000000000000000000000001\",\"nonce\":\"1\",\"callData\":\"0xa9059cbb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064\",\"callGasLimit\":\"21000\",\"verificationGasLimit\":\"100000\",\"preVerificationGas\":\"21000\",\"maxFeePerGas\":\"120\",\"maxPriorityFeePerGas\":\"5\"},\"chain_id\":\"8453\"}"},"output_example":{"service_id":"base_user_operation_inspect","evidence_scope":"caller_supplied_data","analyzed_network":"base","analysis_json":"{\"call_selector\":\"0xa9059cbb\",\"gas\":{\"callGasLimit\":\"21000\",\"maxFeePerGas\":\"120\",\"maxPriorityFeePerGas\":\"5\",\"preVerificationGas\":\"21000\",\"verificationGasLimit\":\"100000\"},\"has_init_code\":false,\"has_paymaster\":false,\"max_fee_exposure\":\"17040000\",\"max_gas_units\":\"142000\",\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"},\"nonce\":\"1\",\"sender\":\"0x0000000000000000000000000000000000000001\"}","warnings":["Does not simulate, hash against an EntryPoint, or verify signatures unless all required evidence is supplied."]}},{"service_id":"base_account_abstraction_calldata","name":"Base Account-Abstraction Calldata Analysis","description":"Decode supplied smart-account execute calldata against a caller-supplied ABI.","when_to_use":"Use this service when you need this capability: decode supplied smart-account execute calldata against a caller-supplied ABI.","category":"chain_tools_base","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/base_account_abstraction_calldata/invoke","method":"POST","planned_invoke_route":"/api/agent/services/base_account_abstraction_calldata/invoke","mcp_tool":"base_account_abstraction_calldata","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"base_account_abstraction_calldata","minLength":33,"maxLength":33},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"base","minLength":4,"maxLength":4},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"abi\":[{\"type\":\"function\",\"name\":\"transfer\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}]}],\"data\":\"0xa9059cbb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064\",\"chain_id\":\"8453\"}"},"output_example":{"service_id":"base_account_abstraction_calldata","evidence_scope":"caller_supplied_data","analyzed_network":"base","analysis_json":"{\"args\":[\"0x0000000000000000000000000000000000000002\",\"100\"],\"calldata_bytes\":68,\"function_name\":\"transfer\",\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"},\"selector\":\"0xa9059cbb\"}","warnings":["Does not simulate validation or execution."]}},{"service_id":"base_eip7702_authorization_inspect","name":"Base EIP-7702 Authorization Inspection","description":"Inspect supplied set-code authorization tuples for chain, address, nonce, and signature-field shape.","when_to_use":"Use this service when you need this capability: inspect supplied set-code authorization tuples for chain, address, nonce, and signature-field shape.","category":"chain_tools_base","version":"1.0.0","amount_atomic":"20000","price_usdc":"0.02","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/base_eip7702_authorization_inspect/invoke","method":"POST","planned_invoke_route":"/api/agent/services/base_eip7702_authorization_inspect/invoke","mcp_tool":"base_eip7702_authorization_inspect","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"base_eip7702_authorization_inspect","minLength":34,"maxLength":34},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"base","minLength":4,"maxLength":4},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"authorizations\":[{\"chain_id\":\"8453\",\"address\":\"0x0000000000000000000000000000000000000001\",\"nonce\":\"1\",\"y_parity\":0,\"r\":\"1\",\"s\":\"1\"}],\"chain_id\":\"8453\"}"},"output_example":{"service_id":"base_eip7702_authorization_inspect","evidence_scope":"caller_supplied_data","analyzed_network":"base","analysis_json":"{\"all_base\":true,\"authorizations\":[{\"address\":\"0x0000000000000000000000000000000000000001\",\"chain_id\":\"8453\",\"index\":0,\"nonce\":\"1\",\"signature_fields_present\":true}],\"duplicate_tuples\":[],\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"}}","warnings":["Does not recover signers, verify signatures, or prove activation."]}},{"service_id":"base_nonce_replacement_analyze","name":"Base Nonce and Replacement Analysis","description":"Group supplied Base transactions by sender and nonce and rank replacement fee caps.","when_to_use":"Use this service when you need this capability: group supplied Base transactions by sender and nonce and rank replacement fee caps.","category":"chain_tools_base","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/base_nonce_replacement_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/base_nonce_replacement_analyze/invoke","mcp_tool":"base_nonce_replacement_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"base_nonce_replacement_analyze","minLength":30,"maxLength":30},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"base","minLength":4,"maxLength":4},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transactions\":[{\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"chain_id\":\"8453\",\"type\":\"0x2\",\"nonce\":\"1\",\"gas_limit\":\"21000\",\"gas_used\":\"21000\",\"base_fee_per_gas\":\"100\",\"max_fee_per_gas\":\"120\",\"max_priority_fee_per_gas\":\"5\",\"effective_gas_price\":\"105\",\"value\":\"0\",\"data\":\"0xa9059cbb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064\",\"instructions\":[],\"account_keys\":[]}],\"chain_id\":\"8453\"}"},"output_example":{"service_id":"base_nonce_replacement_analyze","evidence_scope":"caller_supplied_data","analyzed_network":"base","analysis_json":"{\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"},\"nonce_gaps\":[],\"replacement_groups\":[],\"transactions\":[{\"from\":\"0x0000000000000000000000000000000000000001\",\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"index\":0,\"max_fee_per_gas\":\"120\",\"nonce\":\"1\"}]}","warnings":["Canonical replacement status requires chain evidence not inferred here."]}},{"service_id":"base_token_flow_reconstruct","name":"Base Token Flow Reconstruction","description":"Aggregate supplied Base native/ERC token transfers into account and asset flows.","when_to_use":"Use this service when you need this capability: aggregate supplied Base native/ERC token transfers into account and asset flows.","category":"chain_tools_base","version":"1.0.0","amount_atomic":"20000","price_usdc":"0.02","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/base_token_flow_reconstruct/invoke","method":"POST","planned_invoke_route":"/api/agent/services/base_token_flow_reconstruct/invoke","mcp_tool":"base_token_flow_reconstruct","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"base_token_flow_reconstruct","minLength":27,"maxLength":27},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"base","minLength":4,"maxLength":4},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transfers\":[{\"chain\":\"8453\",\"asset\":\"0x0000000000000000000000000000000000000001\",\"asset_id\":\"0x0000000000000000000000000000000000000001\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"amount_atomic\":\"100\",\"stage\":\"lock\"}],\"chain_id\":\"8453\"}"},"output_example":{"service_id":"base_token_flow_reconstruct","evidence_scope":"caller_supplied_data","analyzed_network":"base","analysis_json":"{\"ledger\":[{\"account\":\"0x0000000000000000000000000000000000000001\",\"asset\":\"0x0000000000000000000000000000000000000001\",\"chain\":\"8453\",\"in\":\"0\",\"net\":\"-100\",\"out\":\"100\"},{\"account\":\"0x0000000000000000000000000000000000000002\",\"asset\":\"0x0000000000000000000000000000000000000001\",\"chain\":\"8453\",\"in\":\"100\",\"net\":\"100\",\"out\":\"0\"}],\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"},\"transfer_count\":1}","warnings":["Results cover only supplied transfers and decimals are never invented."]}},{"service_id":"base_block_gas_report","name":"Base Block and Gas Report","description":"Summarize a supplied Base block transaction set, gas use, base fee, and L1-origin evidence.","when_to_use":"Use this service when you need this capability: summarize a supplied Base block transaction set, gas use, base fee, and L1-origin evidence.","category":"chain_tools_base","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/base_block_gas_report/invoke","method":"POST","planned_invoke_route":"/api/agent/services/base_block_gas_report/invoke","mcp_tool":"base_block_gas_report","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"base_block_gas_report","minLength":21,"maxLength":21},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"base","minLength":4,"maxLength":4},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"block\":{\"number\":\"1\",\"gas_used\":\"21000\",\"gas_limit\":\"30000000\",\"base_fee_per_gas\":\"100\",\"transactions\":[{\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"chain_id\":\"8453\",\"type\":\"0x2\",\"nonce\":\"1\",\"gas_limit\":\"21000\",\"gas_used\":\"21000\",\"base_fee_per_gas\":\"100\",\"max_fee_per_gas\":\"120\",\"max_priority_fee_per_gas\":\"5\",\"effective_gas_price\":\"105\",\"value\":\"0\",\"data\":\"0xa9059cbb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064\",\"instructions\":[],\"account_keys\":[]}]},\"chain_id\":\"8453\"}"},"output_example":{"service_id":"base_block_gas_report","evidence_scope":"caller_supplied_data","analyzed_network":"base","analysis_json":"{\"base_fee_per_gas\":\"100\",\"gas_limit\":\"30000000\",\"gas_used\":\"21000\",\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"},\"number\":\"1\",\"transaction_count\":1,\"transaction_types\":{\"0x2\":1},\"utilization_ppm\":\"700\"}","warnings":["Does not establish canonical, safe, or finalized status."]}},{"service_id":"base_event_sequence_analyze","name":"Base Event Sequence Analysis","description":"Order supplied Base events and detect duplicate or discontinuous log indexes.","when_to_use":"Use this service when you need this capability: order supplied Base events and detect duplicate or discontinuous log indexes.","category":"chain_tools_base","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/base_event_sequence_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/base_event_sequence_analyze/invoke","mcp_tool":"base_event_sequence_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"base_event_sequence_analyze","minLength":27,"maxLength":27},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"base","minLength":4,"maxLength":4},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"events\":[{\"chain\":\"8453\",\"block_number\":1,\"transaction_index\":0,\"log_index\":0,\"address\":\"0x0000000000000000000000000000000000000001\"}],\"chain_id\":\"8453\"}"},"output_example":{"service_id":"base_event_sequence_analyze","evidence_scope":"caller_supplied_data","analyzed_network":"base","analysis_json":"{\"ambiguous_order\":false,\"count\":1,\"events\":[{\"_source_index\":0,\"address\":\"0x0000000000000000000000000000000000000001\",\"block_number\":1,\"chain\":\"8453\",\"log_index\":0,\"transaction_index\":0}],\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"}}","warnings":["Ordering relies on supplied block/transaction/log indexes."]}},{"service_id":"base_contract_interaction_summary","name":"Base Contract Interaction Summary","description":"Summarize supplied Base calls, logs, value, and token movements by contract.","when_to_use":"Use this service when you need this capability: summarize supplied Base calls, logs, value, and token movements by contract.","category":"chain_tools_base","version":"1.0.0","amount_atomic":"20000","price_usdc":"0.02","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/base_contract_interaction_summary/invoke","method":"POST","planned_invoke_route":"/api/agent/services/base_contract_interaction_summary/invoke","mcp_tool":"base_contract_interaction_summary","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"base_contract_interaction_summary","minLength":33,"maxLength":33},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"base","minLength":4,"maxLength":4},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transaction\":{\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"chain_id\":\"8453\",\"type\":\"0x2\",\"nonce\":\"1\",\"gas_limit\":\"21000\",\"gas_used\":\"21000\",\"base_fee_per_gas\":\"100\",\"max_fee_per_gas\":\"120\",\"max_priority_fee_per_gas\":\"5\",\"effective_gas_price\":\"105\",\"value\":\"0\",\"data\":\"0xa9059cbb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064\",\"instructions\":[],\"account_keys\":[]},\"receipt\":{\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"chain_id\":\"8453\",\"type\":\"0x2\",\"status\":\"0x1\",\"gas_used\":\"21000\",\"effective_gas_price\":\"105\",\"logs\":[{\"address\":\"0x0000000000000000000000000000000000000001\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x0000000000000000000000000000000000000000000000000000000000000001\",\"0x0000000000000000000000000000000000000000000000000000000000000002\"],\"data\":\"0x0000000000000000000000000000000000000000000000000000000000000064\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"log_index\":0,\"block_number\":1}]},\"calls\":[]}"},"output_example":{"service_id":"base_contract_interaction_summary","evidence_scope":"caller_supplied_data","analyzed_network":"base","analysis_json":"{\"call_count\":0,\"contracts\":[\"0x0000000000000000000000000000000000000002\",\"0x0000000000000000000000000000000000000001\"],\"flow\":{\"ledger\":[],\"transfer_count\":0},\"log_count\":1,\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"},\"selectors\":[\"0xa9059cbb\"],\"to\":\"0x0000000000000000000000000000000000000002\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"value\":\"0\"}","warnings":["Does not infer contract intent or safety."]}},{"service_id":"base_transaction_forensic_report","name":"Full Base Transaction Forensic Report","description":"Combine supplied Base transaction, receipt, traces, and fee evidence into one bounded forensic report.","when_to_use":"Use this service when you need this capability: combine supplied Base transaction, receipt, traces, and fee evidence into one bounded forensic report.","category":"chain_tools_base","version":"1.0.0","amount_atomic":"30000","price_usdc":"0.03","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/base_transaction_forensic_report/invoke","method":"POST","planned_invoke_route":"/api/agent/services/base_transaction_forensic_report/invoke","mcp_tool":"base_transaction_forensic_report","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"base_transaction_forensic_report","minLength":32,"maxLength":32},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"base","minLength":4,"maxLength":4},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transaction\":{\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"chain_id\":\"8453\",\"type\":\"0x2\",\"nonce\":\"1\",\"gas_limit\":\"21000\",\"gas_used\":\"21000\",\"base_fee_per_gas\":\"100\",\"max_fee_per_gas\":\"120\",\"max_priority_fee_per_gas\":\"5\",\"effective_gas_price\":\"105\",\"value\":\"0\",\"data\":\"0xa9059cbb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064\",\"instructions\":[],\"account_keys\":[]},\"receipt\":{\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"chain_id\":\"8453\",\"type\":\"0x2\",\"status\":\"0x1\",\"gas_used\":\"21000\",\"effective_gas_price\":\"105\",\"logs\":[{\"address\":\"0x0000000000000000000000000000000000000001\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x0000000000000000000000000000000000000000000000000000000000000001\",\"0x0000000000000000000000000000000000000000000000000000000000000002\"],\"data\":\"0x0000000000000000000000000000000000000000000000000000000000000064\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"log_index\":0,\"block_number\":1}]}}"},"output_example":{"service_id":"base_transaction_forensic_report","evidence_scope":"caller_supplied_data","analyzed_network":"base","analysis_json":"{\"complexity\":{\"band\":\"low\",\"counts\":{\"calls\":0,\"inner\":0,\"instructions\":0,\"keys\":0,\"logs\":1},\"interpretation\":\"structural_complexity_only\",\"network\":\"base\",\"score\":2},\"evidence_gaps\":[\"authenticity_not_verified\",\"finality_not_verified\",\"calls_not_supplied\"],\"execution\":{\"contract_address\":null,\"effective_gas_price\":\"105\",\"execution_fee\":\"2205000\",\"gas_used\":\"21000\",\"l1_fee\":\"0\",\"log_count\":1,\"status\":\"0x1\",\"successful\":true,\"total_supplied_fee\":\"2205000\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"warnings\":[\"receipt authenticity and finality are not verified\"]},\"fees\":{\"execution_fee\":\"2205000\",\"l1_fee\":\"0\",\"total_supplied_fee\":\"2205000\"},\"identity\":{\"checks\":[{\"field\":\"hash\",\"match\":true,\"receipt\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"transaction\":\"0x1111111111111111111111111111111111111111111111111111111111111111\"},{\"field\":\"transaction_hash\",\"match\":true,\"receipt\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"transaction\":\"0x1111111111111111111111111111111111111111111111111111111111111111\"},{\"field\":\"from\",\"match\":true,\"receipt\":\"0x0000000000000000000000000000000000000001\",\"transaction\":\"0x0000000000000000000000000000000000000001\"},{\"field\":\"to\",\"match\":true,\"receipt\":\"0x0000000000000000000000000000000000000002\",\"transaction\":\"0x0000000000000000000000000000000000000002\"},{\"field\":\"type\",\"match\":true,\"receipt\":\"0x2\",\"transaction\":\"0x2\"},{\"field\":\"chain_id\",\"match\":true,\"receipt\":\"8453\",\"transaction\":\"8453\"}],\"consistent\":true},\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"}}","warnings":["Does not prove finality, source authenticity, or contract safety."]}},{"service_id":"polygon_address_chain_validate","name":"Polygon PoS Address and Chain Validation","description":"Validate a supplied EVM address and require Polygon PoS mainnet chain ID 137 or Amoy 80002.","when_to_use":"Use this service when you need this capability: validate a supplied EVM address and require Polygon PoS mainnet chain ID 137 or Amoy 80002.","category":"chain_tools_polygon","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/polygon_address_chain_validate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/polygon_address_chain_validate/invoke","mcp_tool":"polygon_address_chain_validate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"polygon_address_chain_validate","minLength":30,"maxLength":30},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"polygon","minLength":7,"maxLength":7},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"address\":\"0x0000000000000000000000000000000000000001\",\"chain_id\":\"137\"}"},"output_example":{"service_id":"polygon_address_chain_validate","evidence_scope":"caller_supplied_data","analyzed_network":"polygon","analysis_json":"{\"address\":\"0x0000000000000000000000000000000000000001\",\"chain_id\":\"137\",\"network\":\"polygon_pos_mainnet\",\"network_context\":{\"accepted_chain_ids\":[\"137\",\"80002\"],\"bridge_model\":\"root-child state sync plus checkpoint evidence\",\"completion_policy\":\"never inferred without supplied evidence\",\"protocol_family\":\"Polygon PoS\"},\"valid\":true}","warnings":["Does not prove ownership, code, or account existence."]}},{"service_id":"polygon_transaction_decode","name":"Polygon PoS Transaction Decoder","description":"Normalize supplied Polygon transaction fields with chain and type validation.","when_to_use":"Use this service when you need this capability: normalize supplied Polygon transaction fields with chain and type validation.","category":"chain_tools_polygon","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/polygon_transaction_decode/invoke","method":"POST","planned_invoke_route":"/api/agent/services/polygon_transaction_decode/invoke","mcp_tool":"polygon_transaction_decode","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"polygon_transaction_decode","minLength":26,"maxLength":26},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"polygon","minLength":7,"maxLength":7},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transaction\":{\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"chain_id\":\"137\",\"type\":\"0x2\",\"nonce\":\"1\",\"gas_limit\":\"21000\",\"gas_used\":\"21000\",\"base_fee_per_gas\":\"100\",\"max_fee_per_gas\":\"120\",\"max_priority_fee_per_gas\":\"5\",\"effective_gas_price\":\"105\",\"value\":\"0\",\"data\":\"0xa9059cbb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064\",\"instructions\":[],\"account_keys\":[]}}"},"output_example":{"service_id":"polygon_transaction_decode","evidence_scope":"caller_supplied_data","analyzed_network":"polygon","analysis_json":"{\"calldata_bytes\":68,\"chain_id\":\"137\",\"data\":\"0xa9059cbb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064\",\"gas_limit\":\"21000\",\"max_fee_per_gas\":\"120\",\"max_priority_fee_per_gas\":\"5\",\"network\":\"polygon_pos_mainnet\",\"network_context\":{\"accepted_chain_ids\":[\"137\",\"80002\"],\"bridge_model\":\"root-child state sync plus checkpoint evidence\",\"completion_policy\":\"never inferred without supplied evidence\",\"protocol_family\":\"Polygon PoS\"},\"nonce\":\"1\",\"to\":\"0x0000000000000000000000000000000000000002\",\"type\":\"0x2\",\"value\":\"0\"}","warnings":["Does not prove broadcast, inclusion, or finality."]}},{"service_id":"polygon_eip1559_fee_analyze","name":"Polygon PoS EIP-1559 Fee Analysis","description":"Calculate supplied Polygon effective gas price, cap headroom, and execution cost.","when_to_use":"Use this service when you need this capability: calculate supplied Polygon effective gas price, cap headroom, and execution cost.","category":"chain_tools_polygon","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/polygon_eip1559_fee_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/polygon_eip1559_fee_analyze/invoke","mcp_tool":"polygon_eip1559_fee_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"polygon_eip1559_fee_analyze","minLength":27,"maxLength":27},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"polygon","minLength":7,"maxLength":7},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"gas_used\":\"21000\",\"base_fee_per_gas\":\"100\",\"max_fee_per_gas\":\"120\",\"max_priority_fee_per_gas\":\"5\",\"chain_id\":\"137\"}"},"output_example":{"service_id":"polygon_eip1559_fee_analyze","evidence_scope":"caller_supplied_data","analyzed_network":"polygon","analysis_json":"{\"base_fee_per_gas\":\"100\",\"cap_headroom\":\"20\",\"effective_gas_price\":\"105\",\"execution_fee\":\"2205000\",\"gas\":\"21000\",\"max_fee_per_gas\":\"120\",\"max_priority_fee_per_gas\":\"5\",\"mode\":\"evm_fee\",\"network_context\":{\"accepted_chain_ids\":[\"137\",\"80002\"],\"bridge_model\":\"root-child state sync plus checkpoint evidence\",\"completion_policy\":\"never inferred without supplied evidence\",\"protocol_family\":\"Polygon PoS\"},\"realized_priority_fee_per_gas\":\"5\"}","warnings":["Does not estimate live fees or inclusion probability."]}},{"service_id":"polygon_receipt_analyze","name":"Polygon PoS Receipt Analysis","description":"Analyze supplied Polygon receipt status, gas, logs, and creation evidence.","when_to_use":"Use this service when you need this capability: analyze supplied Polygon receipt status, gas, logs, and creation evidence.","category":"chain_tools_polygon","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/polygon_receipt_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/polygon_receipt_analyze/invoke","mcp_tool":"polygon_receipt_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"polygon_receipt_analyze","minLength":23,"maxLength":23},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"polygon","minLength":7,"maxLength":7},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"receipt\":{\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"chain_id\":\"137\",\"type\":\"0x2\",\"status\":\"0x1\",\"gas_used\":\"21000\",\"effective_gas_price\":\"105\",\"logs\":[{\"address\":\"0x0000000000000000000000000000000000000001\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x0000000000000000000000000000000000000000000000000000000000000001\",\"0x0000000000000000000000000000000000000000000000000000000000000002\"],\"data\":\"0x0000000000000000000000000000000000000000000000000000000000000064\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"log_index\":0,\"block_number\":1}]}}"},"output_example":{"service_id":"polygon_receipt_analyze","evidence_scope":"caller_supplied_data","analyzed_network":"polygon","analysis_json":"{\"contract_address\":null,\"effective_gas_price\":\"105\",\"execution_fee\":\"2205000\",\"gas_used\":\"21000\",\"l1_fee\":\"0\",\"log_count\":1,\"network_context\":{\"accepted_chain_ids\":[\"137\",\"80002\"],\"bridge_model\":\"root-child state sync plus checkpoint evidence\",\"completion_policy\":\"never inferred without supplied evidence\",\"protocol_family\":\"Polygon PoS\"},\"status\":\"0x1\",\"successful\":true,\"total_supplied_fee\":\"2205000\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"warnings\":[\"receipt authenticity and finality are not verified\"]}","warnings":["Does not establish checkpoint or finality status."]}},{"service_id":"polygon_event_log_decode","name":"Polygon PoS Event and Log Decoder","description":"Decode supplied Polygon log topics/data against a bounded ABI.","when_to_use":"Use this service when you need this capability: decode supplied Polygon log topics/data against a bounded ABI.","category":"chain_tools_polygon","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/polygon_event_log_decode/invoke","method":"POST","planned_invoke_route":"/api/agent/services/polygon_event_log_decode/invoke","mcp_tool":"polygon_event_log_decode","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"polygon_event_log_decode","minLength":24,"maxLength":24},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"polygon","minLength":7,"maxLength":7},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"abi\":[{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}]}],\"log\":{\"address\":\"0x0000000000000000000000000000000000000001\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x0000000000000000000000000000000000000000000000000000000000000001\",\"0x0000000000000000000000000000000000000000000000000000000000000002\"],\"data\":\"0x0000000000000000000000000000000000000000000000000000000000000064\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"log_index\":0,\"block_number\":1},\"chain_id\":\"137\"}"},"output_example":{"service_id":"polygon_event_log_decode","evidence_scope":"caller_supplied_data","analyzed_network":"polygon","analysis_json":"{\"address\":\"0x0000000000000000000000000000000000000001\",\"args\":{\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"value\":\"100\"},\"block_number\":1,\"event_name\":\"Transfer\",\"log_index\":0,\"network_context\":{\"accepted_chain_ids\":[\"137\",\"80002\"],\"bridge_model\":\"root-child state sync plus checkpoint evidence\",\"completion_policy\":\"never inferred without supplied evidence\",\"protocol_family\":\"Polygon PoS\"},\"removed\":false,\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\"}","warnings":["Supplied ABI and log are not authenticated."]}},{"service_id":"polygon_contract_creation_analyze","name":"Polygon PoS Contract Creation Analysis","description":"Inspect supplied Polygon deployment transaction and init-code evidence.","when_to_use":"Use this service when you need this capability: inspect supplied Polygon deployment transaction and init-code evidence.","category":"chain_tools_polygon","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/polygon_contract_creation_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/polygon_contract_creation_analyze/invoke","mcp_tool":"polygon_contract_creation_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"polygon_contract_creation_analyze","minLength":33,"maxLength":33},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"polygon","minLength":7,"maxLength":7},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transaction\":{\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":null,\"chain_id\":\"137\",\"type\":\"0x2\",\"nonce\":\"1\",\"gas_limit\":\"21000\",\"gas_used\":\"21000\",\"base_fee_per_gas\":\"100\",\"max_fee_per_gas\":\"120\",\"max_priority_fee_per_gas\":\"5\",\"effective_gas_price\":\"105\",\"value\":\"0\",\"data\":\"0xa9059cbb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064\",\"instructions\":[],\"account_keys\":[]}}"},"output_example":{"service_id":"polygon_contract_creation_analyze","evidence_scope":"caller_supplied_data","analyzed_network":"polygon","analysis_json":"{\"creator\":\"0x0000000000000000000000000000000000000001\",\"expected_address\":null,\"gas_limit\":\"21000\",\"init_code_bytes\":68,\"init_code_hash\":\"0x53893ee34a7f44a17cb623aa779750e71b27d6a76064cb515b6c5c42a4a973f7\",\"network_context\":{\"accepted_chain_ids\":[\"137\",\"80002\"],\"bridge_model\":\"root-child state sync plus checkpoint evidence\",\"completion_policy\":\"never inferred without supplied evidence\",\"protocol_family\":\"Polygon PoS\"},\"nonce\":\"1\",\"value\":\"0\",\"warnings\":[\"expected address requires a supplied creator and nonce derivation\"]}","warnings":["Does not prove deployment or runtime behavior."]}},{"service_id":"polygon_calldata_inspect","name":"Polygon PoS Calldata Inspection","description":"Decode supplied Polygon calldata against a bounded caller-supplied ABI.","when_to_use":"Use this service when you need this capability: decode supplied Polygon calldata against a bounded caller-supplied ABI.","category":"chain_tools_polygon","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/polygon_calldata_inspect/invoke","method":"POST","planned_invoke_route":"/api/agent/services/polygon_calldata_inspect/invoke","mcp_tool":"polygon_calldata_inspect","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"polygon_calldata_inspect","minLength":24,"maxLength":24},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"polygon","minLength":7,"maxLength":7},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"abi\":[{\"type\":\"function\",\"name\":\"transfer\",\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}]}],\"data\":\"0xa9059cbb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064\",\"chain_id\":\"137\"}"},"output_example":{"service_id":"polygon_calldata_inspect","evidence_scope":"caller_supplied_data","analyzed_network":"polygon","analysis_json":"{\"args\":[\"0x0000000000000000000000000000000000000002\",\"100\"],\"calldata_bytes\":68,\"function_name\":\"transfer\",\"network_context\":{\"accepted_chain_ids\":[\"137\",\"80002\"],\"bridge_model\":\"root-child state sync plus checkpoint evidence\",\"completion_policy\":\"never inferred without supplied evidence\",\"protocol_family\":\"Polygon PoS\"},\"selector\":\"0xa9059cbb\"}","warnings":["Does not simulate or authenticate the ABI."]}},{"service_id":"polygon_erc20_transfer_analyze","name":"Polygon PoS ERC-20 Transfer Analysis","description":"Normalize supplied Polygon ERC-20 calldata or event transfers.","when_to_use":"Use this service when you need this capability: normalize supplied Polygon ERC-20 calldata or event transfers.","category":"chain_tools_polygon","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/polygon_erc20_transfer_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/polygon_erc20_transfer_analyze/invoke","mcp_tool":"polygon_erc20_transfer_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"polygon_erc20_transfer_analyze","minLength":30,"maxLength":30},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"polygon","minLength":7,"maxLength":7},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transfers\":[{\"chain\":\"137\",\"asset\":\"0x0000000000000000000000000000000000000001\",\"asset_id\":\"0x0000000000000000000000000000000000000001\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"amount_atomic\":\"100\",\"stage\":\"lock\"}],\"chain_id\":\"137\"}"},"output_example":{"service_id":"polygon_erc20_transfer_analyze","evidence_scope":"caller_supplied_data","analyzed_network":"polygon","analysis_json":"{\"network_context\":{\"accepted_chain_ids\":[\"137\",\"80002\"],\"bridge_model\":\"root-child state sync plus checkpoint evidence\",\"completion_policy\":\"never inferred without supplied evidence\",\"protocol_family\":\"Polygon PoS\"},\"total_atomic\":\"100\",\"transfers\":[{\"amount_atomic\":\"100\",\"from\":\"0x0000000000000000000000000000000000000001\",\"index\":0,\"log_index\":null,\"to\":\"0x0000000000000000000000000000000000000002\",\"token\":null,\"transaction_hash\":null}]}","warnings":["Decimals and success are not inferred."]}},{"service_id":"polygon_erc20_allowance_exposure","name":"Polygon PoS ERC-20 Allowance Exposure","description":"Analyze supplied Polygon approvals and allowance snapshots.","when_to_use":"Use this service when you need this capability: analyze supplied Polygon approvals and allowance snapshots.","category":"chain_tools_polygon","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/polygon_erc20_allowance_exposure/invoke","method":"POST","planned_invoke_route":"/api/agent/services/polygon_erc20_allowance_exposure/invoke","mcp_tool":"polygon_erc20_allowance_exposure","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"polygon_erc20_allowance_exposure","minLength":32,"maxLength":32},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"polygon","minLength":7,"maxLength":7},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"approvals\":[{\"token\":\"0x0000000000000000000000000000000000000001\",\"owner\":\"0x0000000000000000000000000000000000000001\",\"spender\":\"0x0000000000000000000000000000000000000002\",\"before\":\"0\",\"after\":\"100\"}],\"chain_id\":\"137\"}"},"output_example":{"service_id":"polygon_erc20_allowance_exposure","evidence_scope":"caller_supplied_data","analyzed_network":"polygon","analysis_json":"{\"approvals\":[{\"after\":\"100\",\"before\":\"0\",\"delta\":\"100\",\"owner\":\"0x0000000000000000000000000000000000000001\",\"spender\":\"0x0000000000000000000000000000000000000002\",\"token\":\"0x0000000000000000000000000000000000000001\",\"unlimited\":false}],\"network_context\":{\"accepted_chain_ids\":[\"137\",\"80002\"],\"bridge_model\":\"root-child state sync plus checkpoint evidence\",\"completion_policy\":\"never inferred without supplied evidence\",\"protocol_family\":\"Polygon PoS\"},\"spender_exposure\":[{\"spender\":\"0x0000000000000000000000000000000000000002\",\"total_after\":\"100\",\"unlimited\":false}]}","warnings":["Does not query or revoke allowances."]}},{"service_id":"polygon_erc721_transfer_analyze","name":"Polygon PoS ERC-721 Transfer Analysis","description":"Correlate supplied Polygon ERC-721 transfers by token ID.","when_to_use":"Use this service when you need this capability: correlate supplied Polygon ERC-721 transfers by token ID.","category":"chain_tools_polygon","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/polygon_erc721_transfer_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/polygon_erc721_transfer_analyze/invoke","mcp_tool":"polygon_erc721_transfer_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"polygon_erc721_transfer_analyze","minLength":31,"maxLength":31},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"polygon","minLength":7,"maxLength":7},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transfers\":[{\"chain\":\"137\",\"asset\":\"0x0000000000000000000000000000000000000001\",\"asset_id\":\"0x0000000000000000000000000000000000000001\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"amount_atomic\":\"100\",\"stage\":\"lock\"}],\"chain_id\":\"137\"}"},"output_example":{"service_id":"polygon_erc721_transfer_analyze","evidence_scope":"caller_supplied_data","analyzed_network":"polygon","analysis_json":"{\"duplicate_positions\":[],\"network_context\":{\"accepted_chain_ids\":[\"137\",\"80002\"],\"bridge_model\":\"root-child state sync plus checkpoint evidence\",\"completion_policy\":\"never inferred without supplied evidence\",\"protocol_family\":\"Polygon PoS\"},\"standard\":\"ERC-721\",\"total_units\":\"1\",\"transfers\":[{\"amount\":\"1\",\"from\":\"0x0000000000000000000000000000000000000001\",\"index\":0,\"log_index\":null,\"operator\":null,\"to\":\"0x0000000000000000000000000000000000000002\",\"token\":null,\"token_id\":\"0\",\"transaction_hash\":null}]}","warnings":["Does not prove current ownership or completeness."]}},{"service_id":"polygon_erc1155_transfer_analyze","name":"Polygon PoS ERC-1155 Transfer Analysis","description":"Normalize supplied Polygon ERC-1155 single and batch transfer evidence.","when_to_use":"Use this service when you need this capability: normalize supplied Polygon ERC-1155 single and batch transfer evidence.","category":"chain_tools_polygon","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/polygon_erc1155_transfer_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/polygon_erc1155_transfer_analyze/invoke","mcp_tool":"polygon_erc1155_transfer_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"polygon_erc1155_transfer_analyze","minLength":32,"maxLength":32},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"polygon","minLength":7,"maxLength":7},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transfers\":[{\"chain\":\"137\",\"asset\":\"0x0000000000000000000000000000000000000001\",\"asset_id\":\"0x0000000000000000000000000000000000000001\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"amount_atomic\":\"100\",\"stage\":\"lock\"}],\"chain_id\":\"137\"}"},"output_example":{"service_id":"polygon_erc1155_transfer_analyze","evidence_scope":"caller_supplied_data","analyzed_network":"polygon","analysis_json":"{\"duplicate_positions\":[],\"network_context\":{\"accepted_chain_ids\":[\"137\",\"80002\"],\"bridge_model\":\"root-child state sync plus checkpoint evidence\",\"completion_policy\":\"never inferred without supplied evidence\",\"protocol_family\":\"Polygon PoS\"},\"standard\":\"ERC-1155\",\"total_units\":\"1\",\"transfers\":[{\"amount\":\"1\",\"from\":\"0x0000000000000000000000000000000000000001\",\"index\":0,\"log_index\":null,\"operator\":null,\"to\":\"0x0000000000000000000000000000000000000002\",\"token\":null,\"token_id\":\"0\",\"transaction_hash\":null}]}","warnings":["Does not prove balances or authenticity."]}},{"service_id":"polygon_token_flow_reconstruct","name":"Polygon PoS Token Flow Reconstruction","description":"Aggregate supplied native and token transfers into account/asset flows.","when_to_use":"Use this service when you need this capability: aggregate supplied native and token transfers into account/asset flows.","category":"chain_tools_polygon","version":"1.0.0","amount_atomic":"20000","price_usdc":"0.02","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/polygon_token_flow_reconstruct/invoke","method":"POST","planned_invoke_route":"/api/agent/services/polygon_token_flow_reconstruct/invoke","mcp_tool":"polygon_token_flow_reconstruct","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"polygon_token_flow_reconstruct","minLength":30,"maxLength":30},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"polygon","minLength":7,"maxLength":7},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transfers\":[{\"chain\":\"137\",\"asset\":\"0x0000000000000000000000000000000000000001\",\"asset_id\":\"0x0000000000000000000000000000000000000001\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"amount_atomic\":\"100\",\"stage\":\"lock\"}],\"chain_id\":\"137\"}"},"output_example":{"service_id":"polygon_token_flow_reconstruct","evidence_scope":"caller_supplied_data","analyzed_network":"polygon","analysis_json":"{\"ledger\":[{\"account\":\"0x0000000000000000000000000000000000000001\",\"asset\":\"0x0000000000000000000000000000000000000001\",\"chain\":\"137\",\"in\":\"0\",\"net\":\"-100\",\"out\":\"100\"},{\"account\":\"0x0000000000000000000000000000000000000002\",\"asset\":\"0x0000000000000000000000000000000000000001\",\"chain\":\"137\",\"in\":\"100\",\"net\":\"100\",\"out\":\"0\"}],\"network_context\":{\"accepted_chain_ids\":[\"137\",\"80002\"],\"bridge_model\":\"root-child state sync plus checkpoint evidence\",\"completion_policy\":\"never inferred without supplied evidence\",\"protocol_family\":\"Polygon PoS\"},\"transfer_count\":1}","warnings":["Covers supplied transfers only."]}},{"service_id":"polygon_transaction_receipt_consistency","name":"Polygon Transaction and Receipt Consistency","description":"Compare supplied Polygon transaction and receipt identity and execution fields.","when_to_use":"Use this service when you need this capability: compare supplied Polygon transaction and receipt identity and execution fields.","category":"chain_tools_polygon","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/polygon_transaction_receipt_consistency/invoke","method":"POST","planned_invoke_route":"/api/agent/services/polygon_transaction_receipt_consistency/invoke","mcp_tool":"polygon_transaction_receipt_consistency","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"polygon_transaction_receipt_consistency","minLength":39,"maxLength":39},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"polygon","minLength":7,"maxLength":7},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transaction\":{\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"chain_id\":\"137\",\"type\":\"0x2\",\"nonce\":\"1\",\"gas_limit\":\"21000\",\"gas_used\":\"21000\",\"base_fee_per_gas\":\"100\",\"max_fee_per_gas\":\"120\",\"max_priority_fee_per_gas\":\"5\",\"effective_gas_price\":\"105\",\"value\":\"0\",\"data\":\"0xa9059cbb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064\",\"instructions\":[],\"account_keys\":[]},\"receipt\":{\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"chain_id\":\"137\",\"type\":\"0x2\",\"status\":\"0x1\",\"gas_used\":\"21000\",\"effective_gas_price\":\"105\",\"logs\":[{\"address\":\"0x0000000000000000000000000000000000000001\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x0000000000000000000000000000000000000000000000000000000000000001\",\"0x0000000000000000000000000000000000000000000000000000000000000002\"],\"data\":\"0x0000000000000000000000000000000000000000000000000000000000000064\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"log_index\":0,\"block_number\":1}]}}"},"output_example":{"service_id":"polygon_transaction_receipt_consistency","evidence_scope":"caller_supplied_data","analyzed_network":"polygon","analysis_json":"{\"checks\":[{\"field\":\"hash\",\"match\":true,\"receipt\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"transaction\":\"0x1111111111111111111111111111111111111111111111111111111111111111\"},{\"field\":\"transaction_hash\",\"match\":true,\"receipt\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"transaction\":\"0x1111111111111111111111111111111111111111111111111111111111111111\"},{\"field\":\"from\",\"match\":true,\"receipt\":\"0x0000000000000000000000000000000000000001\",\"transaction\":\"0x0000000000000000000000000000000000000001\"},{\"field\":\"to\",\"match\":true,\"receipt\":\"0x0000000000000000000000000000000000000002\",\"transaction\":\"0x0000000000000000000000000000000000000002\"},{\"field\":\"type\",\"match\":true,\"receipt\":\"0x2\",\"transaction\":\"0x2\"},{\"field\":\"chain_id\",\"match\":true,\"receipt\":\"137\",\"transaction\":\"137\"}],\"consistent\":true,\"network_context\":{\"accepted_chain_ids\":[\"137\",\"80002\"],\"bridge_model\":\"root-child state sync plus checkpoint evidence\",\"completion_policy\":\"never inferred without supplied evidence\",\"protocol_family\":\"Polygon PoS\"}}","warnings":["Matching supplied records are not proof of authenticity."]}},{"service_id":"polygon_gas_cost_analyze","name":"Polygon PoS Gas Cost Analysis","description":"Calculate exact execution fee and optional supplied fee components.","when_to_use":"Use this service when you need this capability: calculate exact execution fee and optional supplied fee components.","category":"chain_tools_polygon","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/polygon_gas_cost_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/polygon_gas_cost_analyze/invoke","mcp_tool":"polygon_gas_cost_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"polygon_gas_cost_analyze","minLength":24,"maxLength":24},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"polygon","minLength":7,"maxLength":7},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"gas_used\":\"21000\",\"effective_gas_price\":\"105\",\"chain_id\":\"137\"}"},"output_example":{"service_id":"polygon_gas_cost_analyze","evidence_scope":"caller_supplied_data","analyzed_network":"polygon","analysis_json":"{\"base_fee_per_gas\":\"0\",\"cap_headroom\":\"105\",\"effective_gas_price\":\"105\",\"execution_fee\":\"2205000\",\"gas\":\"21000\",\"max_fee_per_gas\":\"105\",\"max_priority_fee_per_gas\":\"0\",\"mode\":\"evm_fee\",\"network_context\":{\"accepted_chain_ids\":[\"137\",\"80002\"],\"bridge_model\":\"root-child state sync plus checkpoint evidence\",\"completion_policy\":\"never inferred without supplied evidence\",\"protocol_family\":\"Polygon PoS\"},\"realized_priority_fee_per_gas\":\"105\"}","warnings":["Does not estimate current gas."]}},{"service_id":"polygon_nonce_replacement_analyze","name":"Polygon Nonce and Replacement Analysis","description":"Group supplied Polygon transactions by sender/nonce and compare fee caps.","when_to_use":"Use this service when you need this capability: group supplied Polygon transactions by sender/nonce and compare fee caps.","category":"chain_tools_polygon","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/polygon_nonce_replacement_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/polygon_nonce_replacement_analyze/invoke","mcp_tool":"polygon_nonce_replacement_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"polygon_nonce_replacement_analyze","minLength":33,"maxLength":33},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"polygon","minLength":7,"maxLength":7},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transactions\":[{\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"chain_id\":\"137\",\"type\":\"0x2\",\"nonce\":\"1\",\"gas_limit\":\"21000\",\"gas_used\":\"21000\",\"base_fee_per_gas\":\"100\",\"max_fee_per_gas\":\"120\",\"max_priority_fee_per_gas\":\"5\",\"effective_gas_price\":\"105\",\"value\":\"0\",\"data\":\"0xa9059cbb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064\",\"instructions\":[],\"account_keys\":[]}],\"chain_id\":\"137\"}"},"output_example":{"service_id":"polygon_nonce_replacement_analyze","evidence_scope":"caller_supplied_data","analyzed_network":"polygon","analysis_json":"{\"network_context\":{\"accepted_chain_ids\":[\"137\",\"80002\"],\"bridge_model\":\"root-child state sync plus checkpoint evidence\",\"completion_policy\":\"never inferred without supplied evidence\",\"protocol_family\":\"Polygon PoS\"},\"nonce_gaps\":[],\"replacement_groups\":[],\"transactions\":[{\"from\":\"0x0000000000000000000000000000000000000001\",\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"index\":0,\"max_fee_per_gas\":\"120\",\"nonce\":\"1\"}]}","warnings":["Canonical replacement status is not inferred."]}},{"service_id":"polygon_block_gas_summary","name":"Polygon PoS Block and Gas Summary","description":"Summarize a supplied Polygon block and bounded transaction set.","when_to_use":"Use this service when you need this capability: summarize a supplied Polygon block and bounded transaction set.","category":"chain_tools_polygon","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/polygon_block_gas_summary/invoke","method":"POST","planned_invoke_route":"/api/agent/services/polygon_block_gas_summary/invoke","mcp_tool":"polygon_block_gas_summary","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"polygon_block_gas_summary","minLength":25,"maxLength":25},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"polygon","minLength":7,"maxLength":7},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"block\":{\"number\":\"1\",\"gas_used\":\"21000\",\"gas_limit\":\"30000000\",\"base_fee_per_gas\":\"100\",\"transactions\":[{\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"chain_id\":\"137\",\"type\":\"0x2\",\"nonce\":\"1\",\"gas_limit\":\"21000\",\"gas_used\":\"21000\",\"base_fee_per_gas\":\"100\",\"max_fee_per_gas\":\"120\",\"max_priority_fee_per_gas\":\"5\",\"effective_gas_price\":\"105\",\"value\":\"0\",\"data\":\"0xa9059cbb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064\",\"instructions\":[],\"account_keys\":[]}]},\"chain_id\":\"137\"}"},"output_example":{"service_id":"polygon_block_gas_summary","evidence_scope":"caller_supplied_data","analyzed_network":"polygon","analysis_json":"{\"base_fee_per_gas\":\"100\",\"gas_limit\":\"30000000\",\"gas_used\":\"21000\",\"network_context\":{\"accepted_chain_ids\":[\"137\",\"80002\"],\"bridge_model\":\"root-child state sync plus checkpoint evidence\",\"completion_policy\":\"never inferred without supplied evidence\",\"protocol_family\":\"Polygon PoS\"},\"number\":\"1\",\"transaction_count\":1,\"transaction_types\":{\"0x2\":1},\"utilization_ppm\":\"700\"}","warnings":["Does not prove canonical or finalized status."]}},{"service_id":"polygon_checkpoint_data_inspect","name":"Polygon PoS Checkpoint Data Inspection","description":"Inspect supplied checkpoint header/root/range evidence and ordering.","when_to_use":"Use this service when you need this capability: inspect supplied checkpoint header/root/range evidence and ordering.","category":"chain_tools_polygon","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/polygon_checkpoint_data_inspect/invoke","method":"POST","planned_invoke_route":"/api/agent/services/polygon_checkpoint_data_inspect/invoke","mcp_tool":"polygon_checkpoint_data_inspect","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"polygon_checkpoint_data_inspect","minLength":31,"maxLength":31},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"polygon","minLength":7,"maxLength":7},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"checkpoint\":{\"start_block\":\"1\",\"end_block\":\"10\",\"root\":\"0x1111111111111111111111111111111111111111111111111111111111111111\"}}"},"output_example":{"service_id":"polygon_checkpoint_data_inspect","evidence_scope":"caller_supplied_data","analyzed_network":"polygon","analysis_json":"{\"block_count\":\"10\",\"end_block\":\"10\",\"monotonic\":true,\"network_context\":{\"accepted_chain_ids\":[\"137\",\"80002\"],\"bridge_model\":\"root-child state sync plus checkpoint evidence\",\"completion_policy\":\"never inferred without supplied evidence\",\"protocol_family\":\"Polygon PoS\"},\"root\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"root_present\":true,\"signature_verification_performed\":false,\"start_block\":\"1\"}","warnings":["Does not verify signatures, Ethereum inclusion, or finalized checkpoint status."]}},{"service_id":"polygon_state_sync_event_inspect","name":"Polygon State-Sync Event Inspection","description":"Inspect supplied StateSynced event fields for sender, receiver, ID, and data.","when_to_use":"Use this service when you need this capability: inspect supplied StateSynced event fields for sender, receiver, ID, and data.","category":"chain_tools_polygon","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/polygon_state_sync_event_inspect/invoke","method":"POST","planned_invoke_route":"/api/agent/services/polygon_state_sync_event_inspect/invoke","mcp_tool":"polygon_state_sync_event_inspect","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"polygon_state_sync_event_inspect","minLength":32,"maxLength":32},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"polygon","minLength":7,"maxLength":7},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"event\":{\"state_id\":\"1\",\"sender\":\"0x0000000000000000000000000000000000000001\",\"receiver\":\"0x0000000000000000000000000000000000000002\",\"data\":\"0x01\"}}"},"output_example":{"service_id":"polygon_state_sync_event_inspect","evidence_scope":"caller_supplied_data","analyzed_network":"polygon","analysis_json":"{\"data_bytes\":1,\"data_hash\":\"0x2e3ad575f5877fefc27082d4e7b82e91839c5107c6b82619026d71e2119763dd\",\"network_context\":{\"accepted_chain_ids\":[\"137\",\"80002\"],\"bridge_model\":\"root-child state sync plus checkpoint evidence\",\"completion_policy\":\"never inferred without supplied evidence\",\"protocol_family\":\"Polygon PoS\"},\"receiver\":\"0x0000000000000000000000000000000000000002\",\"registration_verified\":false,\"relay_completion_claimed\":false,\"sender\":\"0x0000000000000000000000000000000000000001\",\"state_id\":\"1\"}","warnings":["Does not prove registered pairing or relay completion."]}},{"service_id":"polygon_state_sync_record_match","name":"Polygon State-Sync Record Matcher","description":"Match supplied Ethereum StateSynced and Polygon StateSyncResult records.","when_to_use":"Use this service when you need this capability: match supplied Ethereum StateSynced and Polygon StateSyncResult records.","category":"chain_tools_polygon","version":"1.0.0","amount_atomic":"20000","price_usdc":"0.02","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/polygon_state_sync_record_match/invoke","method":"POST","planned_invoke_route":"/api/agent/services/polygon_state_sync_record_match/invoke","mcp_tool":"polygon_state_sync_record_match","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"polygon_state_sync_record_match","minLength":31,"maxLength":31},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"polygon","minLength":7,"maxLength":7},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"l1_events\":[{\"state_id\":\"1\",\"receiver\":\"0x0000000000000000000000000000000000000002\",\"data\":\"0x01\"}],\"l2_records\":[{\"state_id\":\"1\",\"receiver\":\"0x0000000000000000000000000000000000000002\",\"data\":\"0x01\"}]}"},"output_example":{"service_id":"polygon_state_sync_record_match","evidence_scope":"caller_supplied_data","analyzed_network":"polygon","analysis_json":"{\"matches\":[{\"fields\":[{\"field\":\"receiver\",\"left\":\"0x0000000000000000000000000000000000000002\",\"match\":true,\"right\":\"0x0000000000000000000000000000000000000002\"},{\"field\":\"data\",\"left\":\"0x01\",\"match\":true,\"right\":\"0x01\"}],\"l1_index\":0,\"l2_index\":0,\"match\":true,\"state_id\":\"1\"}],\"network_context\":{\"accepted_chain_ids\":[\"137\",\"80002\"],\"bridge_model\":\"root-child state sync plus checkpoint evidence\",\"completion_policy\":\"never inferred without supplied evidence\",\"protocol_family\":\"Polygon PoS\"},\"unmatched_l2\":[]}","warnings":["Does not prove canonical inclusion or finality."]}},{"service_id":"polygon_bridge_deposit_inspect","name":"Polygon PoS Bridge Deposit Inspection","description":"Inspect supplied root-chain lock/deposit and child-chain mint evidence.","when_to_use":"Use this service when you need this capability: inspect supplied root-chain lock/deposit and child-chain mint evidence.","category":"chain_tools_polygon","version":"1.0.0","amount_atomic":"20000","price_usdc":"0.02","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/polygon_bridge_deposit_inspect/invoke","method":"POST","planned_invoke_route":"/api/agent/services/polygon_bridge_deposit_inspect/invoke","mcp_tool":"polygon_bridge_deposit_inspect","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"polygon_bridge_deposit_inspect","minLength":30,"maxLength":30},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"polygon","minLength":7,"maxLength":7},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"root_event\":{\"id\":\"1\",\"token\":\"0x0000000000000000000000000000000000000001\",\"amount_atomic\":\"100\"},\"child_event\":{\"id\":\"1\",\"token\":\"0x0000000000000000000000000000000000000002\",\"amount_atomic\":\"100\"}}"},"output_example":{"service_id":"polygon_bridge_deposit_inspect","evidence_scope":"caller_supplied_data","analyzed_network":"polygon","analysis_json":"{\"amount_consistent\":true,\"amounts\":[{\"amount_atomic\":\"100\",\"stage\":\"root_event\"},{\"amount_atomic\":\"100\",\"stage\":\"child_event\"}],\"completion_claimed\":false,\"network_context\":{\"accepted_chain_ids\":[\"137\",\"80002\"],\"bridge_model\":\"root-child state sync plus checkpoint evidence\",\"completion_policy\":\"never inferred without supplied evidence\",\"protocol_family\":\"Polygon PoS\"},\"observed_evidence\":[\"root_event\",\"child_event\"],\"observed_stage\":\"child_event\",\"records\":{\"child_event\":{\"amount_atomic\":\"100\",\"id\":\"1\",\"token\":\"0x0000000000000000000000000000000000000002\"},\"root_event\":{\"amount_atomic\":\"100\",\"id\":\"1\",\"token\":\"0x0000000000000000000000000000000000000001\"}}}","warnings":["Completion is reported only as observed evidence, never inferred finality."]}},{"service_id":"polygon_bridge_withdrawal_inspect","name":"Polygon PoS Bridge Withdrawal Inspection","description":"Inspect supplied child-chain burn, checkpoint, and root-chain exit evidence.","when_to_use":"Use this service when you need this capability: inspect supplied child-chain burn, checkpoint, and root-chain exit evidence.","category":"chain_tools_polygon","version":"1.0.0","amount_atomic":"20000","price_usdc":"0.02","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/polygon_bridge_withdrawal_inspect/invoke","method":"POST","planned_invoke_route":"/api/agent/services/polygon_bridge_withdrawal_inspect/invoke","mcp_tool":"polygon_bridge_withdrawal_inspect","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"polygon_bridge_withdrawal_inspect","minLength":33,"maxLength":33},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"polygon","minLength":7,"maxLength":7},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"burn_event\":{\"id\":\"1\",\"token\":\"0x0000000000000000000000000000000000000002\",\"amount_atomic\":\"100\"}}"},"output_example":{"service_id":"polygon_bridge_withdrawal_inspect","evidence_scope":"caller_supplied_data","analyzed_network":"polygon","analysis_json":"{\"amount_consistent\":true,\"amounts\":[{\"amount_atomic\":\"100\",\"stage\":\"burn_event\"}],\"completion_claimed\":false,\"network_context\":{\"accepted_chain_ids\":[\"137\",\"80002\"],\"bridge_model\":\"root-child state sync plus checkpoint evidence\",\"completion_policy\":\"never inferred without supplied evidence\",\"protocol_family\":\"Polygon PoS\"},\"observed_evidence\":[\"burn_event\"],\"observed_stage\":\"burn_event\",\"records\":{\"burn_event\":{\"amount_atomic\":\"100\",\"id\":\"1\",\"token\":\"0x0000000000000000000000000000000000000002\"}}}","warnings":["Does not claim checkpoint inclusion, exit success, or finality without supplied evidence."]}},{"service_id":"polygon_bridge_event_correlate","name":"Polygon PoS Bridge Event Correlation","description":"Correlate bounded supplied root and child bridge events by IDs, tokens, parties, and amounts.","when_to_use":"Use this service when you need this capability: correlate bounded supplied root and child bridge events by IDs, tokens, parties, and amounts.","category":"chain_tools_polygon","version":"1.0.0","amount_atomic":"25000","price_usdc":"0.025","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/polygon_bridge_event_correlate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/polygon_bridge_event_correlate/invoke","mcp_tool":"polygon_bridge_event_correlate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"polygon_bridge_event_correlate","minLength":30,"maxLength":30},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"polygon","minLength":7,"maxLength":7},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"root_events\":[{\"id\":\"1\",\"token\":\"0x0000000000000000000000000000000000000001\",\"amount_atomic\":\"100\"}],\"child_events\":[{\"id\":\"1\",\"token\":\"0x0000000000000000000000000000000000000002\",\"amount_atomic\":\"100\"}]}"},"output_example":{"service_id":"polygon_bridge_event_correlate","evidence_scope":"caller_supplied_data","analyzed_network":"polygon","analysis_json":"{\"completion_claimed\":false,\"matches\":[{\"child_index\":0,\"conflicts\":[],\"evidence\":[\"id\",\"amount_atomic\"],\"root_index\":0}],\"network_context\":{\"accepted_chain_ids\":[\"137\",\"80002\"],\"bridge_model\":\"root-child state sync plus checkpoint evidence\",\"completion_policy\":\"never inferred without supplied evidence\",\"protocol_family\":\"Polygon PoS\"},\"unmatched_child\":[]}","warnings":["Correlation is deterministic evidence matching, not a finality oracle."]}},{"service_id":"polygon_token_mapping_validate","name":"Polygon Root/Child Token Mapping Validation","description":"Validate supplied root/child token mapping records and event references.","when_to_use":"Use this service when you need this capability: validate supplied root/child token mapping records and event references.","category":"chain_tools_polygon","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/polygon_token_mapping_validate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/polygon_token_mapping_validate/invoke","mcp_tool":"polygon_token_mapping_validate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"polygon_token_mapping_validate","minLength":30,"maxLength":30},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"polygon","minLength":7,"maxLength":7},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"mappings\":[{\"root_token\":\"0x0000000000000000000000000000000000000001\",\"child_token\":\"0x0000000000000000000000000000000000000002\"}]}"},"output_example":{"service_id":"polygon_token_mapping_validate","evidence_scope":"caller_supplied_data","analyzed_network":"polygon","analysis_json":"{\"duplicates\":[],\"mappings\":[{\"child\":\"0x0000000000000000000000000000000000000002\",\"index\":0,\"root\":\"0x0000000000000000000000000000000000000001\"}],\"network_context\":{\"accepted_chain_ids\":[\"137\",\"80002\"],\"bridge_model\":\"root-child state sync plus checkpoint evidence\",\"completion_policy\":\"never inferred without supplied evidence\",\"protocol_family\":\"Polygon PoS\"}}","warnings":["Does not query the official mapping registry."]}},{"service_id":"polygon_bridge_amount_consistency","name":"Polygon Bridge Amount Consistency Check","description":"Compare supplied lock, mint, burn, and exit atomic amounts by transfer.","when_to_use":"Use this service when you need this capability: compare supplied lock, mint, burn, and exit atomic amounts by transfer.","category":"chain_tools_polygon","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/polygon_bridge_amount_consistency/invoke","method":"POST","planned_invoke_route":"/api/agent/services/polygon_bridge_amount_consistency/invoke","mcp_tool":"polygon_bridge_amount_consistency","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"polygon_bridge_amount_consistency","minLength":33,"maxLength":33},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"polygon","minLength":7,"maxLength":7},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transfers\":[{\"chain\":\"137\",\"asset\":\"0x0000000000000000000000000000000000000001\",\"asset_id\":\"0x0000000000000000000000000000000000000001\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"amount_atomic\":\"100\",\"stage\":\"lock\"}]}"},"output_example":{"service_id":"polygon_bridge_amount_consistency","evidence_scope":"caller_supplied_data","analyzed_network":"polygon","analysis_json":"{\"amounts\":[{\"amount_atomic\":\"100\",\"stage\":\"lock\"}],\"consistent\":true,\"missing_stages\":[\"mint\",\"burn\",\"exit\"],\"network_context\":{\"accepted_chain_ids\":[\"137\",\"80002\"],\"bridge_model\":\"root-child state sync plus checkpoint evidence\",\"completion_policy\":\"never inferred without supplied evidence\",\"protocol_family\":\"Polygon PoS\"}}","warnings":["Token mechanics such as fees/rebases must be explicitly supplied."]}},{"service_id":"polygon_bridge_timeline_reconstruct","name":"Polygon Bridge Timeline Reconstruction","description":"Order supplied deposit/withdrawal/checkpoint/exit events across Ethereum and Polygon.","when_to_use":"Use this service when you need this capability: order supplied deposit/withdrawal/checkpoint/exit events across Ethereum and Polygon.","category":"chain_tools_polygon","version":"1.0.0","amount_atomic":"25000","price_usdc":"0.025","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/polygon_bridge_timeline_reconstruct/invoke","method":"POST","planned_invoke_route":"/api/agent/services/polygon_bridge_timeline_reconstruct/invoke","mcp_tool":"polygon_bridge_timeline_reconstruct","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"polygon_bridge_timeline_reconstruct","minLength":35,"maxLength":35},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"polygon","minLength":7,"maxLength":7},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"events\":[{\"chain\":\"137\",\"block_number\":1,\"transaction_index\":0,\"log_index\":0,\"address\":\"0x0000000000000000000000000000000000000001\"}]}"},"output_example":{"service_id":"polygon_bridge_timeline_reconstruct","evidence_scope":"caller_supplied_data","analyzed_network":"polygon","analysis_json":"{\"ambiguous_order\":false,\"completion_claimed\":false,\"count\":1,\"events\":[{\"_source_index\":0,\"address\":\"0x0000000000000000000000000000000000000001\",\"block_number\":1,\"chain\":\"137\",\"log_index\":0,\"transaction_index\":0}],\"missing_stages\":[\"lock\",\"mint\",\"burn\",\"checkpoint\",\"exit\"],\"network_context\":{\"accepted_chain_ids\":[\"137\",\"80002\"],\"bridge_model\":\"root-child state sync plus checkpoint evidence\",\"completion_policy\":\"never inferred without supplied evidence\",\"protocol_family\":\"Polygon PoS\"}}","warnings":["Timestamps and event authenticity are caller supplied."]}},{"service_id":"polygon_contract_interaction_summary","name":"Polygon Contract Interaction Summary","description":"Summarize supplied Polygon calls, logs, values, and token movements by contract.","when_to_use":"Use this service when you need this capability: summarize supplied Polygon calls, logs, values, and token movements by contract.","category":"chain_tools_polygon","version":"1.0.0","amount_atomic":"20000","price_usdc":"0.02","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/polygon_contract_interaction_summary/invoke","method":"POST","planned_invoke_route":"/api/agent/services/polygon_contract_interaction_summary/invoke","mcp_tool":"polygon_contract_interaction_summary","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"polygon_contract_interaction_summary","minLength":36,"maxLength":36},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"polygon","minLength":7,"maxLength":7},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transaction\":{\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"chain_id\":\"137\",\"type\":\"0x2\",\"nonce\":\"1\",\"gas_limit\":\"21000\",\"gas_used\":\"21000\",\"base_fee_per_gas\":\"100\",\"max_fee_per_gas\":\"120\",\"max_priority_fee_per_gas\":\"5\",\"effective_gas_price\":\"105\",\"value\":\"0\",\"data\":\"0xa9059cbb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064\",\"instructions\":[],\"account_keys\":[]},\"receipt\":{\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"chain_id\":\"137\",\"type\":\"0x2\",\"status\":\"0x1\",\"gas_used\":\"21000\",\"effective_gas_price\":\"105\",\"logs\":[{\"address\":\"0x0000000000000000000000000000000000000001\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x0000000000000000000000000000000000000000000000000000000000000001\",\"0x0000000000000000000000000000000000000000000000000000000000000002\"],\"data\":\"0x0000000000000000000000000000000000000000000000000000000000000064\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"log_index\":0,\"block_number\":1}]},\"calls\":[]}"},"output_example":{"service_id":"polygon_contract_interaction_summary","evidence_scope":"caller_supplied_data","analyzed_network":"polygon","analysis_json":"{\"call_count\":0,\"contracts\":[\"0x0000000000000000000000000000000000000002\",\"0x0000000000000000000000000000000000000001\"],\"flow\":{\"ledger\":[],\"transfer_count\":0},\"log_count\":1,\"network_context\":{\"accepted_chain_ids\":[\"137\",\"80002\"],\"bridge_model\":\"root-child state sync plus checkpoint evidence\",\"completion_policy\":\"never inferred without supplied evidence\",\"protocol_family\":\"Polygon PoS\"},\"selectors\":[\"0xa9059cbb\"],\"to\":\"0x0000000000000000000000000000000000000002\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"value\":\"0\"}","warnings":["Does not infer intent or safety."]}},{"service_id":"polygon_event_sequence_analyze","name":"Polygon Event Sequence Analysis","description":"Order supplied Polygon events and detect duplicate or discontinuous indexes.","when_to_use":"Use this service when you need this capability: order supplied Polygon events and detect duplicate or discontinuous indexes.","category":"chain_tools_polygon","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/polygon_event_sequence_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/polygon_event_sequence_analyze/invoke","mcp_tool":"polygon_event_sequence_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"polygon_event_sequence_analyze","minLength":30,"maxLength":30},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"polygon","minLength":7,"maxLength":7},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"events\":[{\"chain\":\"137\",\"block_number\":1,\"transaction_index\":0,\"log_index\":0,\"address\":\"0x0000000000000000000000000000000000000001\"}],\"chain_id\":\"137\"}"},"output_example":{"service_id":"polygon_event_sequence_analyze","evidence_scope":"caller_supplied_data","analyzed_network":"polygon","analysis_json":"{\"ambiguous_order\":false,\"count\":1,\"events\":[{\"_source_index\":0,\"address\":\"0x0000000000000000000000000000000000000001\",\"block_number\":1,\"chain\":\"137\",\"log_index\":0,\"transaction_index\":0}],\"network_context\":{\"accepted_chain_ids\":[\"137\",\"80002\"],\"bridge_model\":\"root-child state sync plus checkpoint evidence\",\"completion_policy\":\"never inferred without supplied evidence\",\"protocol_family\":\"Polygon PoS\"}}","warnings":["Ordering depends on supplied indexes."]}},{"service_id":"polygon_token_balance_delta","name":"Polygon Token Balance Delta Report","description":"Calculate exact per-account/per-token deltas from supplied snapshots.","when_to_use":"Use this service when you need this capability: calculate exact per-account/per-token deltas from supplied snapshots.","category":"chain_tools_polygon","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/polygon_token_balance_delta/invoke","method":"POST","planned_invoke_route":"/api/agent/services/polygon_token_balance_delta/invoke","mcp_tool":"polygon_token_balance_delta","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"polygon_token_balance_delta","minLength":27,"maxLength":27},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"polygon","minLength":7,"maxLength":7},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"before\":[{\"key\":\"0x0000000000000000000000000000000000000001|0x0000000000000000000000000000000000000002\",\"amount\":\"1\"}],\"after\":[{\"key\":\"0x0000000000000000000000000000000000000001|0x0000000000000000000000000000000000000002\",\"amount\":\"2\"}]}"},"output_example":{"service_id":"polygon_token_balance_delta","evidence_scope":"caller_supplied_data","analyzed_network":"polygon","analysis_json":"{\"changes\":[{\"after\":\"2\",\"before\":\"1\",\"delta\":\"1\",\"key\":\"0x0000000000000000000000000000000000000001|0x0000000000000000000000000000000000000002\"}],\"network_context\":{\"accepted_chain_ids\":[\"137\",\"80002\"],\"bridge_model\":\"root-child state sync plus checkpoint evidence\",\"completion_policy\":\"never inferred without supplied evidence\",\"protocol_family\":\"Polygon PoS\"}}","warnings":["Snapshots may be stale or incomplete."]}},{"service_id":"polygon_transaction_complexity","name":"Polygon Transaction Complexity Analysis","description":"Score supplied Polygon transaction/receipt/call/event structure using transparent counts.","when_to_use":"Use this service when you need this capability: score supplied Polygon transaction/receipt/call/event structure using transparent counts.","category":"chain_tools_polygon","version":"1.0.0","amount_atomic":"20000","price_usdc":"0.02","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/polygon_transaction_complexity/invoke","method":"POST","planned_invoke_route":"/api/agent/services/polygon_transaction_complexity/invoke","mcp_tool":"polygon_transaction_complexity","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"polygon_transaction_complexity","minLength":30,"maxLength":30},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"polygon","minLength":7,"maxLength":7},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transaction\":{\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"chain_id\":\"137\",\"type\":\"0x2\",\"nonce\":\"1\",\"gas_limit\":\"21000\",\"gas_used\":\"21000\",\"base_fee_per_gas\":\"100\",\"max_fee_per_gas\":\"120\",\"max_priority_fee_per_gas\":\"5\",\"effective_gas_price\":\"105\",\"value\":\"0\",\"data\":\"0xa9059cbb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064\",\"instructions\":[],\"account_keys\":[]},\"receipt\":{\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"chain_id\":\"137\",\"type\":\"0x2\",\"status\":\"0x1\",\"gas_used\":\"21000\",\"effective_gas_price\":\"105\",\"logs\":[{\"address\":\"0x0000000000000000000000000000000000000001\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x0000000000000000000000000000000000000000000000000000000000000001\",\"0x0000000000000000000000000000000000000000000000000000000000000002\"],\"data\":\"0x0000000000000000000000000000000000000000000000000000000000000064\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"log_index\":0,\"block_number\":1}]}}"},"output_example":{"service_id":"polygon_transaction_complexity","evidence_scope":"caller_supplied_data","analyzed_network":"polygon","analysis_json":"{\"band\":\"low\",\"counts\":{\"calls\":0,\"inner\":0,\"instructions\":0,\"keys\":0,\"logs\":1},\"interpretation\":\"structural_complexity_only\",\"network\":\"polygon\",\"network_context\":{\"accepted_chain_ids\":[\"137\",\"80002\"],\"bridge_model\":\"root-child state sync plus checkpoint evidence\",\"completion_policy\":\"never inferred without supplied evidence\",\"protocol_family\":\"Polygon PoS\"},\"score\":2}","warnings":["Complexity is not risk, safety, or finality."]}},{"service_id":"polygon_transaction_forensic_report","name":"Full Polygon Transaction Forensic Report","description":"Combine supplied Polygon transaction, receipt, calls, bridge, and fee evidence.","when_to_use":"Use this service when you need this capability: combine supplied Polygon transaction, receipt, calls, bridge, and fee evidence.","category":"chain_tools_polygon","version":"1.0.0","amount_atomic":"30000","price_usdc":"0.03","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/polygon_transaction_forensic_report/invoke","method":"POST","planned_invoke_route":"/api/agent/services/polygon_transaction_forensic_report/invoke","mcp_tool":"polygon_transaction_forensic_report","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"polygon_transaction_forensic_report","minLength":35,"maxLength":35},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"polygon","minLength":7,"maxLength":7},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transaction\":{\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"chain_id\":\"137\",\"type\":\"0x2\",\"nonce\":\"1\",\"gas_limit\":\"21000\",\"gas_used\":\"21000\",\"base_fee_per_gas\":\"100\",\"max_fee_per_gas\":\"120\",\"max_priority_fee_per_gas\":\"5\",\"effective_gas_price\":\"105\",\"value\":\"0\",\"data\":\"0xa9059cbb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064\",\"instructions\":[],\"account_keys\":[]},\"receipt\":{\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"chain_id\":\"137\",\"type\":\"0x2\",\"status\":\"0x1\",\"gas_used\":\"21000\",\"effective_gas_price\":\"105\",\"logs\":[{\"address\":\"0x0000000000000000000000000000000000000001\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x0000000000000000000000000000000000000000000000000000000000000001\",\"0x0000000000000000000000000000000000000000000000000000000000000002\"],\"data\":\"0x0000000000000000000000000000000000000000000000000000000000000064\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"log_index\":0,\"block_number\":1}]}}"},"output_example":{"service_id":"polygon_transaction_forensic_report","evidence_scope":"caller_supplied_data","analyzed_network":"polygon","analysis_json":"{\"complexity\":{\"band\":\"low\",\"counts\":{\"calls\":0,\"inner\":0,\"instructions\":0,\"keys\":0,\"logs\":1},\"interpretation\":\"structural_complexity_only\",\"network\":\"polygon\",\"score\":2},\"evidence_gaps\":[\"authenticity_not_verified\",\"finality_not_verified\",\"calls_not_supplied\"],\"execution\":{\"contract_address\":null,\"effective_gas_price\":\"105\",\"execution_fee\":\"2205000\",\"gas_used\":\"21000\",\"l1_fee\":\"0\",\"log_count\":1,\"status\":\"0x1\",\"successful\":true,\"total_supplied_fee\":\"2205000\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"warnings\":[\"receipt authenticity and finality are not verified\"]},\"fees\":{\"execution_fee\":\"2205000\",\"l1_fee\":\"0\",\"total_supplied_fee\":\"2205000\"},\"identity\":{\"checks\":[{\"field\":\"hash\",\"match\":true,\"receipt\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"transaction\":\"0x1111111111111111111111111111111111111111111111111111111111111111\"},{\"field\":\"transaction_hash\",\"match\":true,\"receipt\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"transaction\":\"0x1111111111111111111111111111111111111111111111111111111111111111\"},{\"field\":\"from\",\"match\":true,\"receipt\":\"0x0000000000000000000000000000000000000001\",\"transaction\":\"0x0000000000000000000000000000000000000001\"},{\"field\":\"to\",\"match\":true,\"receipt\":\"0x0000000000000000000000000000000000000002\",\"transaction\":\"0x0000000000000000000000000000000000000002\"},{\"field\":\"type\",\"match\":true,\"receipt\":\"0x2\",\"transaction\":\"0x2\"},{\"field\":\"chain_id\",\"match\":true,\"receipt\":\"137\",\"transaction\":\"137\"}],\"consistent\":true},\"network_context\":{\"accepted_chain_ids\":[\"137\",\"80002\"],\"bridge_model\":\"root-child state sync plus checkpoint evidence\",\"completion_policy\":\"never inferred without supplied evidence\",\"protocol_family\":\"Polygon PoS\"}}","warnings":["Does not prove finality, authenticity, bridge completion, or contract safety."]}},{"service_id":"crosschain_transaction_normalize","name":"Solana/Base/Polygon Transaction Normalizer","description":"Normalize supplied transaction observations from Solana, Base, and Polygon into one bounded shape.","when_to_use":"Use this service when you need this capability: normalize supplied transaction observations from Solana, Base, and Polygon into one bounded shape.","category":"chain_tools_cross_chain","version":"1.0.0","amount_atomic":"20000","price_usdc":"0.02","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/crosschain_transaction_normalize/invoke","method":"POST","planned_invoke_route":"/api/agent/services/crosschain_transaction_normalize/invoke","mcp_tool":"crosschain_transaction_normalize","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"crosschain_transaction_normalize","minLength":32,"maxLength":32},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana_base_polygon","minLength":19,"maxLength":19},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"observations\":[{\"chain\":\"solana\",\"id\":\"s1\",\"status\":\"supplied\"},{\"chain\":\"base\",\"id\":\"b1\",\"status\":\"supplied\"},{\"chain\":\"polygon\",\"id\":\"p1\",\"status\":\"supplied\"}]}"},"output_example":{"service_id":"crosschain_transaction_normalize","evidence_scope":"caller_supplied_data","analyzed_network":"solana_base_polygon","analysis_json":"{\"chains\":[\"base\",\"polygon\",\"solana\"],\"evidence_only\":true,\"records\":[{\"chain\":\"solana\",\"id\":\"s1\",\"index\":0,\"status\":\"supplied\"},{\"chain\":\"base\",\"id\":\"b1\",\"index\":1,\"status\":\"supplied\"},{\"chain\":\"polygon\",\"id\":\"p1\",\"index\":2,\"status\":\"supplied\"}],\"unsupported_fields\":[{\"fields\":[],\"index\":0},{\"fields\":[],\"index\":1},{\"fields\":[],\"index\":2}]}","warnings":["Does not fetch or authenticate transactions."]}},{"service_id":"crosschain_token_amount_normalize","name":"Cross-Chain Token Amount Normalizer","description":"Normalize exact atomic token amounts using caller-supplied decimals and asset identities.","when_to_use":"Use this service when you need this capability: normalize exact atomic token amounts using caller-supplied decimals and asset identities.","category":"chain_tools_cross_chain","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/crosschain_token_amount_normalize/invoke","method":"POST","planned_invoke_route":"/api/agent/services/crosschain_token_amount_normalize/invoke","mcp_tool":"crosschain_token_amount_normalize","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"crosschain_token_amount_normalize","minLength":33,"maxLength":33},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana_base_polygon","minLength":19,"maxLength":19},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"amounts\":[{\"chain\":\"base\",\"asset\":\"eip155:8453/erc20:usdc\",\"atomic\":\"1234567\",\"decimals\":6}]}"},"output_example":{"service_id":"crosschain_token_amount_normalize","evidence_scope":"caller_supplied_data","analyzed_network":"solana_base_polygon","analysis_json":"{\"amounts\":[{\"asset\":\"eip155:8453/erc20:usdc\",\"atomic\":\"1234567\",\"chain\":\"base\",\"decimal\":\"1.234567\"}]}","warnings":["Decimals and asset mappings must be supplied."]}},{"service_id":"crosschain_fee_compare","name":"Cross-Chain Fee Comparison","description":"Compare supplied Solana lamport and Base/Polygon wei fees without inventing exchange rates.","when_to_use":"Use this service when you need this capability: compare supplied Solana lamport and Base/Polygon wei fees without inventing exchange rates.","category":"chain_tools_cross_chain","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/crosschain_fee_compare/invoke","method":"POST","planned_invoke_route":"/api/agent/services/crosschain_fee_compare/invoke","mcp_tool":"crosschain_fee_compare","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"crosschain_fee_compare","minLength":22,"maxLength":22},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana_base_polygon","minLength":19,"maxLength":19},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"fees\":[{\"chain\":\"base\",\"unit\":\"wei\",\"amount\":\"2205000\"}]}"},"output_example":{"service_id":"crosschain_fee_compare","evidence_scope":"caller_supplied_data","analyzed_network":"solana_base_polygon","analysis_json":"{\"comparison_policy\":\"compare_only_identical_units_or_caller_supplied_conversions\",\"fees\":[{\"amount\":\"2205000\",\"chain\":\"base\",\"unit\":\"wei\"}]}","warnings":["Cross-asset ranking requires supplied conversion values and timestamps."]}},{"service_id":"crosschain_transaction_cost_report","name":"Cross-Chain Transaction Cost Report","description":"Reconcile supplied execution, data, priority, and bridge fee components across the three networks.","when_to_use":"Use this service when you need this capability: reconcile supplied execution, data, priority, and bridge fee components across the three networks.","category":"chain_tools_cross_chain","version":"1.0.0","amount_atomic":"20000","price_usdc":"0.02","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/crosschain_transaction_cost_report/invoke","method":"POST","planned_invoke_route":"/api/agent/services/crosschain_transaction_cost_report/invoke","mcp_tool":"crosschain_transaction_cost_report","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"crosschain_transaction_cost_report","minLength":34,"maxLength":34},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana_base_polygon","minLength":19,"maxLength":19},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transactions\":[{\"chain\":\"base\",\"amount\":\"2205000\",\"unit\":\"wei\",\"transaction\":{\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"chain_id\":\"solana\",\"type\":\"0x2\",\"nonce\":\"1\",\"gas_limit\":\"21000\",\"gas_used\":\"21000\",\"base_fee_per_gas\":\"100\",\"max_fee_per_gas\":\"120\",\"max_priority_fee_per_gas\":\"5\",\"effective_gas_price\":\"105\",\"value\":\"0\",\"data\":\"0xa9059cbb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064\",\"instructions\":[],\"account_keys\":[]},\"receipt\":{\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"chain_id\":\"solana\",\"type\":\"0x2\",\"status\":\"0x1\",\"gas_used\":\"21000\",\"effective_gas_price\":\"105\",\"logs\":[{\"address\":\"0x0000000000000000000000000000000000000001\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x0000000000000000000000000000000000000000000000000000000000000001\",\"0x0000000000000000000000000000000000000000000000000000000000000002\"],\"data\":\"0x0000000000000000000000000000000000000000000000000000000000000064\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"log_index\":0,\"block_number\":1}]}}]}"},"output_example":{"service_id":"crosschain_transaction_cost_report","evidence_scope":"caller_supplied_data","analyzed_network":"solana_base_polygon","analysis_json":"{\"comparison_policy\":\"compare_only_identical_units_or_caller_supplied_conversions\",\"fees\":[{\"amount\":\"2205000\",\"chain\":\"base\",\"unit\":\"wei\"}]}","warnings":["No live fees or exchange rates are inferred."]}},{"service_id":"crosschain_asset_flow_reconstruct","name":"Cross-Chain Asset Flow Reconstruction","description":"Build an exact flow ledger from supplied transfers on Solana, Base, and Polygon.","when_to_use":"Use this service when you need this capability: build an exact flow ledger from supplied transfers on Solana, Base, and Polygon.","category":"chain_tools_cross_chain","version":"1.0.0","amount_atomic":"30000","price_usdc":"0.03","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/crosschain_asset_flow_reconstruct/invoke","method":"POST","planned_invoke_route":"/api/agent/services/crosschain_asset_flow_reconstruct/invoke","mcp_tool":"crosschain_asset_flow_reconstruct","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"crosschain_asset_flow_reconstruct","minLength":33,"maxLength":33},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana_base_polygon","minLength":19,"maxLength":19},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transfers\":[{\"chain\":\"solana\",\"asset\":\"0x0000000000000000000000000000000000000001\",\"asset_id\":\"0x0000000000000000000000000000000000000001\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"amount_atomic\":\"100\",\"stage\":\"lock\"}]}"},"output_example":{"service_id":"crosschain_asset_flow_reconstruct","evidence_scope":"caller_supplied_data","analyzed_network":"solana_base_polygon","analysis_json":"{\"ledger\":[{\"account\":\"0x0000000000000000000000000000000000000001\",\"asset\":\"0x0000000000000000000000000000000000000001\",\"chain\":\"solana\",\"in\":\"0\",\"net\":\"-100\",\"out\":\"100\"},{\"account\":\"0x0000000000000000000000000000000000000002\",\"asset\":\"0x0000000000000000000000000000000000000001\",\"chain\":\"solana\",\"in\":\"100\",\"net\":\"100\",\"out\":\"0\"}],\"transfer_count\":1}","warnings":["Asset equivalence and bridge links must be supplied or remain separate."]}},{"service_id":"crosschain_wallet_activity_compare","name":"Cross-Chain Wallet Activity Comparison","description":"Compare supplied wallet activity windows across Solana, Base, and Polygon.","when_to_use":"Use this service when you need this capability: compare supplied wallet activity windows across Solana, Base, and Polygon.","category":"chain_tools_cross_chain","version":"1.0.0","amount_atomic":"25000","price_usdc":"0.025","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/crosschain_wallet_activity_compare/invoke","method":"POST","planned_invoke_route":"/api/agent/services/crosschain_wallet_activity_compare/invoke","mcp_tool":"crosschain_wallet_activity_compare","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"crosschain_wallet_activity_compare","minLength":34,"maxLength":34},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana_base_polygon","minLength":19,"maxLength":19},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"wallets\":[{\"chain\":\"base\",\"address\":\"0x0000000000000000000000000000000000000001\",\"transactions\":1}]}"},"output_example":{"service_id":"crosschain_wallet_activity_compare","evidence_scope":"caller_supplied_data","analyzed_network":"solana_base_polygon","analysis_json":"{\"by_chain\":{\"base\":{\"transactions\":\"1\",\"wallets\":1}},\"ownership_assumed\":false,\"wallets\":[{\"address\":\"0x0000000000000000000000000000000000000001\",\"chain\":\"base\",\"counterparties\":\"0\",\"fee_amount\":null,\"fee_unit\":null,\"index\":0,\"transactions\":\"1\"}]}","warnings":["Addresses are not assumed to share an owner across chains."]}},{"service_id":"crosschain_transfer_correlate","name":"Cross-Chain Transfer Correlation","description":"Correlate supplied source/destination transfers using exact IDs, amounts, parties, and time windows.","when_to_use":"Use this service when you need this capability: correlate supplied source/destination transfers using exact IDs, amounts, parties, and time windows.","category":"chain_tools_cross_chain","version":"1.0.0","amount_atomic":"30000","price_usdc":"0.03","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/crosschain_transfer_correlate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/crosschain_transfer_correlate/invoke","mcp_tool":"crosschain_transfer_correlate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"crosschain_transfer_correlate","minLength":29,"maxLength":29},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana_base_polygon","minLength":19,"maxLength":19},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transfers\":[{\"chain\":\"solana\",\"asset\":\"0x0000000000000000000000000000000000000001\",\"asset_id\":\"0x0000000000000000000000000000000000000001\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"amount_atomic\":\"100\",\"stage\":\"lock\"}]}"},"output_example":{"service_id":"crosschain_transfer_correlate","evidence_scope":"caller_supplied_data","analyzed_network":"solana_base_polygon","analysis_json":"{\"candidate_pairs\":[],\"completion_claimed\":false}","warnings":["Correlation never proves bridge completion or finality."]}},{"service_id":"crosschain_event_timeline","name":"Cross-Chain Event Timeline","description":"Order supplied Solana, Base, and Polygon events using timestamps and chain positions.","when_to_use":"Use this service when you need this capability: order supplied Solana, Base, and Polygon events using timestamps and chain positions.","category":"chain_tools_cross_chain","version":"1.0.0","amount_atomic":"25000","price_usdc":"0.025","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/crosschain_event_timeline/invoke","method":"POST","planned_invoke_route":"/api/agent/services/crosschain_event_timeline/invoke","mcp_tool":"crosschain_event_timeline","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"crosschain_event_timeline","minLength":25,"maxLength":25},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana_base_polygon","minLength":19,"maxLength":19},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"events\":[{\"chain\":\"solana\",\"block_number\":1,\"transaction_index\":0,\"log_index\":0,\"address\":\"0x0000000000000000000000000000000000000001\"}]}"},"output_example":{"service_id":"crosschain_event_timeline","evidence_scope":"caller_supplied_data","analyzed_network":"solana_base_polygon","analysis_json":"{\"ambiguous_order\":false,\"count\":1,\"events\":[{\"_source_index\":0,\"address\":\"0x0000000000000000000000000000000000000001\",\"block_number\":1,\"chain\":\"solana\",\"log_index\":0,\"transaction_index\":0}]}","warnings":["Clock and ordering evidence are caller supplied."]}},{"service_id":"crosschain_complexity_compare","name":"Cross-Chain Transaction Complexity Comparison","description":"Compare transparent structural complexity metrics across supplied chain transactions.","when_to_use":"Use this service when you need this capability: compare transparent structural complexity metrics across supplied chain transactions.","category":"chain_tools_cross_chain","version":"1.0.0","amount_atomic":"25000","price_usdc":"0.025","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/crosschain_complexity_compare/invoke","method":"POST","planned_invoke_route":"/api/agent/services/crosschain_complexity_compare/invoke","mcp_tool":"crosschain_complexity_compare","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"crosschain_complexity_compare","minLength":29,"maxLength":29},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana_base_polygon","minLength":19,"maxLength":19},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"transactions\":[{\"chain\":\"base\",\"amount\":\"2205000\",\"unit\":\"wei\",\"transaction\":{\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"chain_id\":\"solana\",\"type\":\"0x2\",\"nonce\":\"1\",\"gas_limit\":\"21000\",\"gas_used\":\"21000\",\"base_fee_per_gas\":\"100\",\"max_fee_per_gas\":\"120\",\"max_priority_fee_per_gas\":\"5\",\"effective_gas_price\":\"105\",\"value\":\"0\",\"data\":\"0xa9059cbb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064\",\"instructions\":[],\"account_keys\":[]},\"receipt\":{\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"from\":\"0x0000000000000000000000000000000000000001\",\"to\":\"0x0000000000000000000000000000000000000002\",\"chain_id\":\"solana\",\"type\":\"0x2\",\"status\":\"0x1\",\"gas_used\":\"21000\",\"effective_gas_price\":\"105\",\"logs\":[{\"address\":\"0x0000000000000000000000000000000000000001\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x0000000000000000000000000000000000000000000000000000000000000001\",\"0x0000000000000000000000000000000000000000000000000000000000000002\"],\"data\":\"0x0000000000000000000000000000000000000000000000000000000000000064\",\"transaction_hash\":\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"log_index\":0,\"block_number\":1}]}}]}"},"output_example":{"service_id":"crosschain_complexity_compare","evidence_scope":"caller_supplied_data","analyzed_network":"solana_base_polygon","analysis_json":"{\"transactions\":[{\"band\":\"low\",\"chain\":\"base\",\"counts\":{\"calls\":0,\"inner\":0,\"instructions\":0,\"keys\":0,\"logs\":1},\"index\":0,\"interpretation\":\"structural_complexity_only\",\"network\":\"base\",\"score\":2}]}","warnings":["Complexity is not a security rating."]}},{"service_id":"crosschain_activity_forensic_report","name":"Cross-Chain Activity Forensic Report","description":"Combine supplied transactions, receipts, logs, balances, and bridge links into one evidence report.","when_to_use":"Use this service when you need this capability: combine supplied transactions, receipts, logs, balances, and bridge links into one evidence report.","category":"chain_tools_cross_chain","version":"1.0.0","amount_atomic":"50000","price_usdc":"0.05","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/crosschain_activity_forensic_report/invoke","method":"POST","planned_invoke_route":"/api/agent/services/crosschain_activity_forensic_report/invoke","mcp_tool":"crosschain_activity_forensic_report","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":5,"maxProperties":5,"required":["service_id","evidence_scope","analyzed_network","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"crosschain_activity_forensic_report","minLength":35,"maxLength":35},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analyzed_network":{"type":"string","const":"solana_base_polygon","minLength":19,"maxLength":19},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"observations\":[{\"chain\":\"solana\",\"id\":\"s1\",\"status\":\"supplied\"},{\"chain\":\"base\",\"id\":\"b1\",\"status\":\"supplied\"},{\"chain\":\"polygon\",\"id\":\"p1\",\"status\":\"supplied\"}]}"},"output_example":{"service_id":"crosschain_activity_forensic_report","evidence_scope":"caller_supplied_data","analyzed_network":"solana_base_polygon","analysis_json":"{\"chains\":[\"base\",\"polygon\",\"solana\"],\"correlations\":[],\"evidence_gaps\":[\"authenticity_not_verified\",\"ownership_not_inferred\",\"finality_not_verified\"],\"fees\":[],\"records\":[{\"chain\":\"solana\",\"id\":\"s1\",\"index\":0,\"status\":\"supplied\"},{\"chain\":\"base\",\"id\":\"b1\",\"index\":1,\"status\":\"supplied\"},{\"chain\":\"polygon\",\"id\":\"p1\",\"index\":2,\"status\":\"supplied\"}],\"timeline\":{\"ambiguous_order\":false,\"count\":0,\"events\":[]}}","warnings":["Does not prove authenticity, ownership, confirmation, finality, or safety."]}},{"service_id":"prompt_structure_analyze","name":"Prompt Structure Analyze","description":"Prompt Structure Analyze performs a bounded deterministic prompt structure analyze operation over caller-supplied prompts or model outputs.","when_to_use":"Use this service when you need this capability: prompt Structure Analyze performs a bounded deterministic prompt structure analyze operation over caller-supplied prompts or model outputs.","category":"ai_search_ai_llm","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/prompt_structure_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/prompt_structure_analyze/invoke","mcp_tool":"prompt_structure_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"prompt_structure_analyze","minLength":24,"maxLength":24},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"prompt_structure_analyze","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"prompt_variable_validate","name":"Prompt Variable Validate","description":"Prompt Variable Validate performs a bounded deterministic prompt variable validate operation over caller-supplied prompts or model outputs.","when_to_use":"Use this service when you need this capability: prompt Variable Validate performs a bounded deterministic prompt variable validate operation over caller-supplied prompts or model outputs.","category":"ai_search_ai_llm","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/prompt_variable_validate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/prompt_variable_validate/invoke","mcp_tool":"prompt_variable_validate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"prompt_variable_validate","minLength":24,"maxLength":24},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"prompt_variable_validate","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"prompt_template_render_validate","name":"Prompt Template Render Validate","description":"Prompt Template Render Validate performs a bounded deterministic prompt template render validate operation over caller-supplied prompts or model outputs.","when_to_use":"Use this service when you need this capability: prompt Template Render Validate performs a bounded deterministic prompt template render validate operation over caller-supplied prompts or model outputs.","category":"ai_search_ai_llm","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/prompt_template_render_validate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/prompt_template_render_validate/invoke","mcp_tool":"prompt_template_render_validate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"prompt_template_render_validate","minLength":31,"maxLength":31},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"prompt_template_render_validate","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"prompt_instruction_conflict_detect","name":"Prompt Instruction Conflict Detect","description":"Prompt Instruction Conflict Detect performs a bounded deterministic prompt instruction conflict detect operation over caller-supplied prompts or model outputs.","when_to_use":"Use this service when you need this capability: prompt Instruction Conflict Detect performs a bounded deterministic prompt instruction conflict detect operation over caller-supplied prompts or model outputs.","category":"ai_search_ai_llm","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/prompt_instruction_conflict_detect/invoke","method":"POST","planned_invoke_route":"/api/agent/services/prompt_instruction_conflict_detect/invoke","mcp_tool":"prompt_instruction_conflict_detect","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"prompt_instruction_conflict_detect","minLength":34,"maxLength":34},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"prompt_instruction_conflict_detect","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"prompt_constraint_extract","name":"Prompt Constraint Extract","description":"Prompt Constraint Extract performs a bounded deterministic prompt constraint extract operation over caller-supplied prompts or model outputs.","when_to_use":"Use this service when you need this capability: prompt Constraint Extract performs a bounded deterministic prompt constraint extract operation over caller-supplied prompts or model outputs.","category":"ai_search_ai_llm","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/prompt_constraint_extract/invoke","method":"POST","planned_invoke_route":"/api/agent/services/prompt_constraint_extract/invoke","mcp_tool":"prompt_constraint_extract","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"prompt_constraint_extract","minLength":25,"maxLength":25},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"prompt_constraint_extract","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"prompt_output_contract_extract","name":"Prompt Output Contract Extract","description":"Prompt Output Contract Extract performs a bounded deterministic prompt output contract extract operation over caller-supplied prompts or model outputs.","when_to_use":"Use this service when you need this capability: prompt Output Contract Extract performs a bounded deterministic prompt output contract extract operation over caller-supplied prompts or model outputs.","category":"ai_search_ai_llm","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/prompt_output_contract_extract/invoke","method":"POST","planned_invoke_route":"/api/agent/services/prompt_output_contract_extract/invoke","mcp_tool":"prompt_output_contract_extract","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"prompt_output_contract_extract","minLength":30,"maxLength":30},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"prompt_output_contract_extract","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"prompt_token_budget_estimate","name":"Prompt Token Budget Estimate","description":"Prompt Token Budget Estimate performs a bounded deterministic prompt token budget estimate operation over caller-supplied prompts or model outputs.","when_to_use":"Use this service when you need this capability: prompt Token Budget Estimate performs a bounded deterministic prompt token budget estimate operation over caller-supplied prompts or model outputs.","category":"ai_search_ai_llm","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/prompt_token_budget_estimate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/prompt_token_budget_estimate/invoke","mcp_tool":"prompt_token_budget_estimate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"prompt_token_budget_estimate","minLength":28,"maxLength":28},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"prompt_token_budget_estimate","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"prompt_section_normalize","name":"Prompt Section Normalize","description":"Prompt Section Normalize performs a bounded deterministic prompt section normalize operation over caller-supplied prompts or model outputs.","when_to_use":"Use this service when you need this capability: prompt Section Normalize performs a bounded deterministic prompt section normalize operation over caller-supplied prompts or model outputs.","category":"ai_search_ai_llm","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/prompt_section_normalize/invoke","method":"POST","planned_invoke_route":"/api/agent/services/prompt_section_normalize/invoke","mcp_tool":"prompt_section_normalize","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"prompt_section_normalize","minLength":24,"maxLength":24},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"prompt_section_normalize","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"prompt_diff_analyze","name":"Prompt Diff Analyze","description":"Prompt Diff Analyze performs a bounded deterministic prompt diff analyze operation over caller-supplied prompts or model outputs.","when_to_use":"Use this service when you need this capability: prompt Diff Analyze performs a bounded deterministic prompt diff analyze operation over caller-supplied prompts or model outputs.","category":"ai_search_ai_llm","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/prompt_diff_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/prompt_diff_analyze/invoke","mcp_tool":"prompt_diff_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"prompt_diff_analyze","minLength":19,"maxLength":19},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"prompt_diff_analyze","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"prompt_version_compare","name":"Prompt Version Compare","description":"Prompt Version Compare performs a bounded deterministic prompt version compare operation over caller-supplied prompts or model outputs.","when_to_use":"Use this service when you need this capability: prompt Version Compare performs a bounded deterministic prompt version compare operation over caller-supplied prompts or model outputs.","category":"ai_search_ai_llm","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/prompt_version_compare/invoke","method":"POST","planned_invoke_route":"/api/agent/services/prompt_version_compare/invoke","mcp_tool":"prompt_version_compare","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"prompt_version_compare","minLength":22,"maxLength":22},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"prompt_version_compare","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"llm_response_schema_validate","name":"Llm Response Schema Validate","description":"Llm Response Schema Validate performs a bounded deterministic llm response schema validate operation over caller-supplied prompts or model outputs.","when_to_use":"Use this service when you need this capability: llm Response Schema Validate performs a bounded deterministic llm response schema validate operation over caller-supplied prompts or model outputs.","category":"ai_search_ai_llm","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/llm_response_schema_validate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/llm_response_schema_validate/invoke","mcp_tool":"llm_response_schema_validate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"llm_response_schema_validate","minLength":28,"maxLength":28},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"llm_response_schema_validate","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"llm_response_json_extract","name":"Llm Response Json Extract","description":"Llm Response Json Extract performs a bounded deterministic llm response json extract operation over caller-supplied prompts or model outputs.","when_to_use":"Use this service when you need this capability: llm Response Json Extract performs a bounded deterministic llm response json extract operation over caller-supplied prompts or model outputs.","category":"ai_search_ai_llm","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/llm_response_json_extract/invoke","method":"POST","planned_invoke_route":"/api/agent/services/llm_response_json_extract/invoke","mcp_tool":"llm_response_json_extract","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"llm_response_json_extract","minLength":25,"maxLength":25},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"llm_response_json_extract","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"llm_response_constraint_check","name":"Llm Response Constraint Check","description":"Llm Response Constraint Check performs a bounded deterministic llm response constraint check operation over caller-supplied prompts or model outputs.","when_to_use":"Use this service when you need this capability: llm Response Constraint Check performs a bounded deterministic llm response constraint check operation over caller-supplied prompts or model outputs.","category":"ai_search_ai_llm","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/llm_response_constraint_check/invoke","method":"POST","planned_invoke_route":"/api/agent/services/llm_response_constraint_check/invoke","mcp_tool":"llm_response_constraint_check","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"llm_response_constraint_check","minLength":29,"maxLength":29},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"llm_response_constraint_check","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"llm_response_instruction_coverage","name":"Llm Response Instruction Coverage","description":"Llm Response Instruction Coverage performs a bounded deterministic llm response instruction coverage operation over caller-supplied prompts or model outputs.","when_to_use":"Use this service when you need this capability: llm Response Instruction Coverage performs a bounded deterministic llm response instruction coverage operation over caller-supplied prompts or model outputs.","category":"ai_search_ai_llm","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/llm_response_instruction_coverage/invoke","method":"POST","planned_invoke_route":"/api/agent/services/llm_response_instruction_coverage/invoke","mcp_tool":"llm_response_instruction_coverage","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"llm_response_instruction_coverage","minLength":33,"maxLength":33},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"llm_response_instruction_coverage","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"llm_response_claim_extract","name":"Llm Response Claim Extract","description":"Llm Response Claim Extract performs a bounded deterministic llm response claim extract operation over caller-supplied prompts or model outputs.","when_to_use":"Use this service when you need this capability: llm Response Claim Extract performs a bounded deterministic llm response claim extract operation over caller-supplied prompts or model outputs.","category":"ai_search_ai_llm","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/llm_response_claim_extract/invoke","method":"POST","planned_invoke_route":"/api/agent/services/llm_response_claim_extract/invoke","mcp_tool":"llm_response_claim_extract","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"llm_response_claim_extract","minLength":26,"maxLength":26},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"llm_response_claim_extract","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"llm_response_citation_extract","name":"Llm Response Citation Extract","description":"Llm Response Citation Extract performs a bounded deterministic llm response citation extract operation over caller-supplied prompts or model outputs.","when_to_use":"Use this service when you need this capability: llm Response Citation Extract performs a bounded deterministic llm response citation extract operation over caller-supplied prompts or model outputs.","category":"ai_search_ai_llm","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/llm_response_citation_extract/invoke","method":"POST","planned_invoke_route":"/api/agent/services/llm_response_citation_extract/invoke","mcp_tool":"llm_response_citation_extract","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"llm_response_citation_extract","minLength":29,"maxLength":29},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"llm_response_citation_extract","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"llm_response_citation_coverage","name":"Llm Response Citation Coverage","description":"Llm Response Citation Coverage performs a bounded deterministic llm response citation coverage operation over caller-supplied prompts or model outputs.","when_to_use":"Use this service when you need this capability: llm Response Citation Coverage performs a bounded deterministic llm response citation coverage operation over caller-supplied prompts or model outputs.","category":"ai_search_ai_llm","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/llm_response_citation_coverage/invoke","method":"POST","planned_invoke_route":"/api/agent/services/llm_response_citation_coverage/invoke","mcp_tool":"llm_response_citation_coverage","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"llm_response_citation_coverage","minLength":30,"maxLength":30},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"llm_response_citation_coverage","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"llm_response_repetition_analyze","name":"Llm Response Repetition Analyze","description":"Llm Response Repetition Analyze performs a bounded deterministic llm response repetition analyze operation over caller-supplied prompts or model outputs.","when_to_use":"Use this service when you need this capability: llm Response Repetition Analyze performs a bounded deterministic llm response repetition analyze operation over caller-supplied prompts or model outputs.","category":"ai_search_ai_llm","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/llm_response_repetition_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/llm_response_repetition_analyze/invoke","mcp_tool":"llm_response_repetition_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"llm_response_repetition_analyze","minLength":31,"maxLength":31},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"llm_response_repetition_analyze","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"llm_response_structure_score","name":"Llm Response Structure Score","description":"Llm Response Structure Score performs a bounded deterministic llm response structure score operation over caller-supplied prompts or model outputs.","when_to_use":"Use this service when you need this capability: llm Response Structure Score performs a bounded deterministic llm response structure score operation over caller-supplied prompts or model outputs.","category":"ai_search_ai_llm","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/llm_response_structure_score/invoke","method":"POST","planned_invoke_route":"/api/agent/services/llm_response_structure_score/invoke","mcp_tool":"llm_response_structure_score","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"llm_response_structure_score","minLength":28,"maxLength":28},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"llm_response_structure_score","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"llm_response_completeness_check","name":"Llm Response Completeness Check","description":"Llm Response Completeness Check performs a bounded deterministic llm response completeness check operation over caller-supplied prompts or model outputs.","when_to_use":"Use this service when you need this capability: llm Response Completeness Check performs a bounded deterministic llm response completeness check operation over caller-supplied prompts or model outputs.","category":"ai_search_ai_llm","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/llm_response_completeness_check/invoke","method":"POST","planned_invoke_route":"/api/agent/services/llm_response_completeness_check/invoke","mcp_tool":"llm_response_completeness_check","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"llm_response_completeness_check","minLength":31,"maxLength":31},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"llm_response_completeness_check","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"model_output_compare","name":"Model Output Compare","description":"Model Output Compare performs a bounded deterministic model output compare operation over caller-supplied prompts or model outputs.","when_to_use":"Use this service when you need this capability: model Output Compare performs a bounded deterministic model output compare operation over caller-supplied prompts or model outputs.","category":"ai_search_ai_llm","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/model_output_compare/invoke","method":"POST","planned_invoke_route":"/api/agent/services/model_output_compare/invoke","mcp_tool":"model_output_compare","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"model_output_compare","minLength":20,"maxLength":20},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"model_output_compare","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"model_output_consensus_analyze","name":"Model Output Consensus Analyze","description":"Model Output Consensus Analyze performs a bounded deterministic model output consensus analyze operation over caller-supplied prompts or model outputs.","when_to_use":"Use this service when you need this capability: model Output Consensus Analyze performs a bounded deterministic model output consensus analyze operation over caller-supplied prompts or model outputs.","category":"ai_search_ai_llm","version":"1.0.0","amount_atomic":"25000","price_usdc":"0.025","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/model_output_consensus_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/model_output_consensus_analyze/invoke","mcp_tool":"model_output_consensus_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"model_output_consensus_analyze","minLength":30,"maxLength":30},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"model_output_consensus_analyze","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"model_output_disagreement_extract","name":"Model Output Disagreement Extract","description":"Model Output Disagreement Extract performs a bounded deterministic model output disagreement extract operation over caller-supplied prompts or model outputs.","when_to_use":"Use this service when you need this capability: model Output Disagreement Extract performs a bounded deterministic model output disagreement extract operation over caller-supplied prompts or model outputs.","category":"ai_search_ai_llm","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/model_output_disagreement_extract/invoke","method":"POST","planned_invoke_route":"/api/agent/services/model_output_disagreement_extract/invoke","mcp_tool":"model_output_disagreement_extract","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"model_output_disagreement_extract","minLength":33,"maxLength":33},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"model_output_disagreement_extract","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"model_output_regression_compare","name":"Model Output Regression Compare","description":"Model Output Regression Compare performs a bounded deterministic model output regression compare operation over caller-supplied prompts or model outputs.","when_to_use":"Use this service when you need this capability: model Output Regression Compare performs a bounded deterministic model output regression compare operation over caller-supplied prompts or model outputs.","category":"ai_search_ai_llm","version":"1.0.0","amount_atomic":"25000","price_usdc":"0.025","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/model_output_regression_compare/invoke","method":"POST","planned_invoke_route":"/api/agent/services/model_output_regression_compare/invoke","mcp_tool":"model_output_regression_compare","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"model_output_regression_compare","minLength":31,"maxLength":31},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"model_output_regression_compare","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"model_output_format_compare","name":"Model Output Format Compare","description":"Model Output Format Compare performs a bounded deterministic model output format compare operation over caller-supplied prompts or model outputs.","when_to_use":"Use this service when you need this capability: model Output Format Compare performs a bounded deterministic model output format compare operation over caller-supplied prompts or model outputs.","category":"ai_search_ai_llm","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/model_output_format_compare/invoke","method":"POST","planned_invoke_route":"/api/agent/services/model_output_format_compare/invoke","mcp_tool":"model_output_format_compare","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"model_output_format_compare","minLength":27,"maxLength":27},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"model_output_format_compare","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"model_output_cost_compare_from_supplied_usage","name":"Model Output Cost Compare From Supplied Usage","description":"Model Output Cost Compare From Supplied Usage performs a bounded deterministic model output cost compare from supplied usage operation over caller-supplied prompts or model outputs.","when_to_use":"Use this service when you need this capability: model Output Cost Compare From Supplied Usage performs a bounded deterministic model output cost compare from supplied usage operation over caller-supplied prompts or model outputs.","category":"ai_search_ai_llm","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/model_output_cost_compare_from_supplied_usage/invoke","method":"POST","planned_invoke_route":"/api/agent/services/model_output_cost_compare_from_supplied_usage/invoke","mcp_tool":"model_output_cost_compare_from_supplied_usage","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"model_output_cost_compare_from_supplied_usage","minLength":45,"maxLength":45},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"model_output_cost_compare_from_supplied_usage","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"model_output_latency_compare_from_supplied_metrics","name":"Model Output Latency Compare From Supplied Metrics","description":"Model Output Latency Compare From Supplied Metrics performs a bounded deterministic model output latency compare from supplied metrics operation over caller-supplied prompts or model outputs.","when_to_use":"Use this service when you need this capability: model Output Latency Compare From Supplied Metrics performs a bounded deterministic model output latency compare from supplied metrics operation over caller-supplied prompts or model outputs.","category":"ai_search_ai_llm","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/model_output_latency_compare_from_supplied_metrics/invoke","method":"POST","planned_invoke_route":"/api/agent/services/model_output_latency_compare_from_supplied_metrics/invoke","mcp_tool":"model_output_latency_compare_from_supplied_metrics","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"model_output_latency_compare_from_supplied_metrics","minLength":50,"maxLength":50},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"model_output_latency_compare_from_supplied_metrics","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"llm_eval_case_normalize","name":"Llm Eval Case Normalize","description":"Llm Eval Case Normalize performs a bounded deterministic llm eval case normalize operation over caller-supplied prompts or model outputs.","when_to_use":"Use this service when you need this capability: llm Eval Case Normalize performs a bounded deterministic llm eval case normalize operation over caller-supplied prompts or model outputs.","category":"ai_search_ai_llm","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/llm_eval_case_normalize/invoke","method":"POST","planned_invoke_route":"/api/agent/services/llm_eval_case_normalize/invoke","mcp_tool":"llm_eval_case_normalize","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"llm_eval_case_normalize","minLength":23,"maxLength":23},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"llm_eval_case_normalize","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"llm_eval_result_aggregate","name":"Llm Eval Result Aggregate","description":"Llm Eval Result Aggregate performs a bounded deterministic llm eval result aggregate operation over caller-supplied prompts or model outputs.","when_to_use":"Use this service when you need this capability: llm Eval Result Aggregate performs a bounded deterministic llm eval result aggregate operation over caller-supplied prompts or model outputs.","category":"ai_search_ai_llm","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/llm_eval_result_aggregate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/llm_eval_result_aggregate/invoke","mcp_tool":"llm_eval_result_aggregate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"llm_eval_result_aggregate","minLength":25,"maxLength":25},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"llm_eval_result_aggregate","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"llm_eval_regression_report","name":"Llm Eval Regression Report","description":"Llm Eval Regression Report performs a bounded deterministic llm eval regression report operation over caller-supplied prompts or model outputs.","when_to_use":"Use this service when you need this capability: llm Eval Regression Report performs a bounded deterministic llm eval regression report operation over caller-supplied prompts or model outputs.","category":"ai_search_ai_llm","version":"1.0.0","amount_atomic":"25000","price_usdc":"0.025","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/llm_eval_regression_report/invoke","method":"POST","planned_invoke_route":"/api/agent/services/llm_eval_regression_report/invoke","mcp_tool":"llm_eval_regression_report","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"llm_eval_regression_report","minLength":26,"maxLength":26},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"llm_eval_regression_report","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"agent_tool_schema_validate","name":"Agent Tool Schema Validate","description":"Agent Tool Schema Validate performs a bounded deterministic agent tool schema validate operation over caller-supplied agent definitions and traces.","when_to_use":"Use this service when you need this capability: agent Tool Schema Validate performs a bounded deterministic agent tool schema validate operation over caller-supplied agent definitions and traces.","category":"ai_search_ai_agent","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/agent_tool_schema_validate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/agent_tool_schema_validate/invoke","mcp_tool":"agent_tool_schema_validate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"agent_tool_schema_validate","minLength":26,"maxLength":26},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"agent_tool_schema_validate","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"agent_tool_definition_normalize","name":"Agent Tool Definition Normalize","description":"Agent Tool Definition Normalize performs a bounded deterministic agent tool definition normalize operation over caller-supplied agent definitions and traces.","when_to_use":"Use this service when you need this capability: agent Tool Definition Normalize performs a bounded deterministic agent tool definition normalize operation over caller-supplied agent definitions and traces.","category":"ai_search_ai_agent","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/agent_tool_definition_normalize/invoke","method":"POST","planned_invoke_route":"/api/agent/services/agent_tool_definition_normalize/invoke","mcp_tool":"agent_tool_definition_normalize","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"agent_tool_definition_normalize","minLength":31,"maxLength":31},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"agent_tool_definition_normalize","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"agent_tool_call_validate","name":"Agent Tool Call Validate","description":"Agent Tool Call Validate performs a bounded deterministic agent tool call validate operation over caller-supplied agent definitions and traces.","when_to_use":"Use this service when you need this capability: agent Tool Call Validate performs a bounded deterministic agent tool call validate operation over caller-supplied agent definitions and traces.","category":"ai_search_ai_agent","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/agent_tool_call_validate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/agent_tool_call_validate/invoke","mcp_tool":"agent_tool_call_validate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"agent_tool_call_validate","minLength":24,"maxLength":24},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"agent_tool_call_validate","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"agent_tool_call_argument_check","name":"Agent Tool Call Argument Check","description":"Agent Tool Call Argument Check performs a bounded deterministic agent tool call argument check operation over caller-supplied agent definitions and traces.","when_to_use":"Use this service when you need this capability: agent Tool Call Argument Check performs a bounded deterministic agent tool call argument check operation over caller-supplied agent definitions and traces.","category":"ai_search_ai_agent","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/agent_tool_call_argument_check/invoke","method":"POST","planned_invoke_route":"/api/agent/services/agent_tool_call_argument_check/invoke","mcp_tool":"agent_tool_call_argument_check","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"agent_tool_call_argument_check","minLength":30,"maxLength":30},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"agent_tool_call_argument_check","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"agent_tool_result_validate","name":"Agent Tool Result Validate","description":"Agent Tool Result Validate performs a bounded deterministic agent tool result validate operation over caller-supplied agent definitions and traces.","when_to_use":"Use this service when you need this capability: agent Tool Result Validate performs a bounded deterministic agent tool result validate operation over caller-supplied agent definitions and traces.","category":"ai_search_ai_agent","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/agent_tool_result_validate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/agent_tool_result_validate/invoke","mcp_tool":"agent_tool_result_validate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"agent_tool_result_validate","minLength":26,"maxLength":26},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"agent_tool_result_validate","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"agent_tool_call_sequence_analyze","name":"Agent Tool Call Sequence Analyze","description":"Agent Tool Call Sequence Analyze performs a bounded deterministic agent tool call sequence analyze operation over caller-supplied agent definitions and traces.","when_to_use":"Use this service when you need this capability: agent Tool Call Sequence Analyze performs a bounded deterministic agent tool call sequence analyze operation over caller-supplied agent definitions and traces.","category":"ai_search_ai_agent","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/agent_tool_call_sequence_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/agent_tool_call_sequence_analyze/invoke","mcp_tool":"agent_tool_call_sequence_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"agent_tool_call_sequence_analyze","minLength":32,"maxLength":32},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"agent_tool_call_sequence_analyze","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"agent_tool_dependency_graph","name":"Agent Tool Dependency Graph","description":"Agent Tool Dependency Graph performs a bounded deterministic agent tool dependency graph operation over caller-supplied agent definitions and traces.","when_to_use":"Use this service when you need this capability: agent Tool Dependency Graph performs a bounded deterministic agent tool dependency graph operation over caller-supplied agent definitions and traces.","category":"ai_search_ai_agent","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/agent_tool_dependency_graph/invoke","method":"POST","planned_invoke_route":"/api/agent/services/agent_tool_dependency_graph/invoke","mcp_tool":"agent_tool_dependency_graph","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"agent_tool_dependency_graph","minLength":27,"maxLength":27},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"agent_tool_dependency_graph","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"agent_tool_usage_summary","name":"Agent Tool Usage Summary","description":"Agent Tool Usage Summary performs a bounded deterministic agent tool usage summary operation over caller-supplied agent definitions and traces.","when_to_use":"Use this service when you need this capability: agent Tool Usage Summary performs a bounded deterministic agent tool usage summary operation over caller-supplied agent definitions and traces.","category":"ai_search_ai_agent","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/agent_tool_usage_summary/invoke","method":"POST","planned_invoke_route":"/api/agent/services/agent_tool_usage_summary/invoke","mcp_tool":"agent_tool_usage_summary","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"agent_tool_usage_summary","minLength":24,"maxLength":24},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"agent_tool_usage_summary","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"agent_trace_normalize","name":"Agent Trace Normalize","description":"Agent Trace Normalize performs a bounded deterministic agent trace normalize operation over caller-supplied agent definitions and traces.","when_to_use":"Use this service when you need this capability: agent Trace Normalize performs a bounded deterministic agent trace normalize operation over caller-supplied agent definitions and traces.","category":"ai_search_ai_agent","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/agent_trace_normalize/invoke","method":"POST","planned_invoke_route":"/api/agent/services/agent_trace_normalize/invoke","mcp_tool":"agent_trace_normalize","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"agent_trace_normalize","minLength":21,"maxLength":21},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"agent_trace_normalize","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"agent_trace_timeline","name":"Agent Trace Timeline","description":"Agent Trace Timeline performs a bounded deterministic agent trace timeline operation over caller-supplied agent definitions and traces.","when_to_use":"Use this service when you need this capability: agent Trace Timeline performs a bounded deterministic agent trace timeline operation over caller-supplied agent definitions and traces.","category":"ai_search_ai_agent","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/agent_trace_timeline/invoke","method":"POST","planned_invoke_route":"/api/agent/services/agent_trace_timeline/invoke","mcp_tool":"agent_trace_timeline","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"agent_trace_timeline","minLength":20,"maxLength":20},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"agent_trace_timeline","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"agent_trace_failure_extract","name":"Agent Trace Failure Extract","description":"Agent Trace Failure Extract performs a bounded deterministic agent trace failure extract operation over caller-supplied agent definitions and traces.","when_to_use":"Use this service when you need this capability: agent Trace Failure Extract performs a bounded deterministic agent trace failure extract operation over caller-supplied agent definitions and traces.","category":"ai_search_ai_agent","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/agent_trace_failure_extract/invoke","method":"POST","planned_invoke_route":"/api/agent/services/agent_trace_failure_extract/invoke","mcp_tool":"agent_trace_failure_extract","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"agent_trace_failure_extract","minLength":27,"maxLength":27},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"agent_trace_failure_extract","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"agent_trace_retry_analyze","name":"Agent Trace Retry Analyze","description":"Agent Trace Retry Analyze performs a bounded deterministic agent trace retry analyze operation over caller-supplied agent definitions and traces.","when_to_use":"Use this service when you need this capability: agent Trace Retry Analyze performs a bounded deterministic agent trace retry analyze operation over caller-supplied agent definitions and traces.","category":"ai_search_ai_agent","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/agent_trace_retry_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/agent_trace_retry_analyze/invoke","mcp_tool":"agent_trace_retry_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"agent_trace_retry_analyze","minLength":25,"maxLength":25},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"agent_trace_retry_analyze","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"agent_trace_loop_detect","name":"Agent Trace Loop Detect","description":"Agent Trace Loop Detect performs a bounded deterministic agent trace loop detect operation over caller-supplied agent definitions and traces.","when_to_use":"Use this service when you need this capability: agent Trace Loop Detect performs a bounded deterministic agent trace loop detect operation over caller-supplied agent definitions and traces.","category":"ai_search_ai_agent","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/agent_trace_loop_detect/invoke","method":"POST","planned_invoke_route":"/api/agent/services/agent_trace_loop_detect/invoke","mcp_tool":"agent_trace_loop_detect","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"agent_trace_loop_detect","minLength":23,"maxLength":23},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"agent_trace_loop_detect","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"agent_trace_latency_report","name":"Agent Trace Latency Report","description":"Agent Trace Latency Report performs a bounded deterministic agent trace latency report operation over caller-supplied agent definitions and traces.","when_to_use":"Use this service when you need this capability: agent Trace Latency Report performs a bounded deterministic agent trace latency report operation over caller-supplied agent definitions and traces.","category":"ai_search_ai_agent","version":"1.0.0","amount_atomic":"25000","price_usdc":"0.025","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/agent_trace_latency_report/invoke","method":"POST","planned_invoke_route":"/api/agent/services/agent_trace_latency_report/invoke","mcp_tool":"agent_trace_latency_report","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"agent_trace_latency_report","minLength":26,"maxLength":26},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"agent_trace_latency_report","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"agent_trace_cost_report_from_supplied_usage","name":"Agent Trace Cost Report From Supplied Usage","description":"Agent Trace Cost Report From Supplied Usage performs a bounded deterministic agent trace cost report from supplied usage operation over caller-supplied agent definitions and traces.","when_to_use":"Use this service when you need this capability: agent Trace Cost Report From Supplied Usage performs a bounded deterministic agent trace cost report from supplied usage operation over caller-supplied agent definitions and traces.","category":"ai_search_ai_agent","version":"1.0.0","amount_atomic":"25000","price_usdc":"0.025","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/agent_trace_cost_report_from_supplied_usage/invoke","method":"POST","planned_invoke_route":"/api/agent/services/agent_trace_cost_report_from_supplied_usage/invoke","mcp_tool":"agent_trace_cost_report_from_supplied_usage","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"agent_trace_cost_report_from_supplied_usage","minLength":43,"maxLength":43},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"agent_trace_cost_report_from_supplied_usage","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"agent_plan_structure_analyze","name":"Agent Plan Structure Analyze","description":"Agent Plan Structure Analyze performs a bounded deterministic agent plan structure analyze operation over caller-supplied agent definitions and traces.","when_to_use":"Use this service when you need this capability: agent Plan Structure Analyze performs a bounded deterministic agent plan structure analyze operation over caller-supplied agent definitions and traces.","category":"ai_search_ai_agent","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/agent_plan_structure_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/agent_plan_structure_analyze/invoke","mcp_tool":"agent_plan_structure_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"agent_plan_structure_analyze","minLength":28,"maxLength":28},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"agent_plan_structure_analyze","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"agent_plan_dependency_check","name":"Agent Plan Dependency Check","description":"Agent Plan Dependency Check performs a bounded deterministic agent plan dependency check operation over caller-supplied agent definitions and traces.","when_to_use":"Use this service when you need this capability: agent Plan Dependency Check performs a bounded deterministic agent plan dependency check operation over caller-supplied agent definitions and traces.","category":"ai_search_ai_agent","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/agent_plan_dependency_check/invoke","method":"POST","planned_invoke_route":"/api/agent/services/agent_plan_dependency_check/invoke","mcp_tool":"agent_plan_dependency_check","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"agent_plan_dependency_check","minLength":27,"maxLength":27},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"agent_plan_dependency_check","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"agent_plan_completion_check","name":"Agent Plan Completion Check","description":"Agent Plan Completion Check performs a bounded deterministic agent plan completion check operation over caller-supplied agent definitions and traces.","when_to_use":"Use this service when you need this capability: agent Plan Completion Check performs a bounded deterministic agent plan completion check operation over caller-supplied agent definitions and traces.","category":"ai_search_ai_agent","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/agent_plan_completion_check/invoke","method":"POST","planned_invoke_route":"/api/agent/services/agent_plan_completion_check/invoke","mcp_tool":"agent_plan_completion_check","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"agent_plan_completion_check","minLength":27,"maxLength":27},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"agent_plan_completion_check","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"agent_step_result_match","name":"Agent Step Result Match","description":"Agent Step Result Match performs a bounded deterministic agent step result match operation over caller-supplied agent definitions and traces.","when_to_use":"Use this service when you need this capability: agent Step Result Match performs a bounded deterministic agent step result match operation over caller-supplied agent definitions and traces.","category":"ai_search_ai_agent","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/agent_step_result_match/invoke","method":"POST","planned_invoke_route":"/api/agent/services/agent_step_result_match/invoke","mcp_tool":"agent_step_result_match","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"agent_step_result_match","minLength":23,"maxLength":23},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"agent_step_result_match","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"agent_handoff_validate","name":"Agent Handoff Validate","description":"Agent Handoff Validate performs a bounded deterministic agent handoff validate operation over caller-supplied agent definitions and traces.","when_to_use":"Use this service when you need this capability: agent Handoff Validate performs a bounded deterministic agent handoff validate operation over caller-supplied agent definitions and traces.","category":"ai_search_ai_agent","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/agent_handoff_validate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/agent_handoff_validate/invoke","mcp_tool":"agent_handoff_validate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"agent_handoff_validate","minLength":22,"maxLength":22},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"agent_handoff_validate","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"agent_permission_policy_check","name":"Agent Permission Policy Check","description":"Agent Permission Policy Check performs a bounded deterministic agent permission policy check operation over caller-supplied agent definitions and traces.","when_to_use":"Use this service when you need this capability: agent Permission Policy Check performs a bounded deterministic agent permission policy check operation over caller-supplied agent definitions and traces.","category":"ai_search_ai_agent","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/agent_permission_policy_check/invoke","method":"POST","planned_invoke_route":"/api/agent/services/agent_permission_policy_check/invoke","mcp_tool":"agent_permission_policy_check","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"agent_permission_policy_check","minLength":29,"maxLength":29},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"agent_permission_policy_check","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"agent_action_risk_indicator","name":"Agent Action Risk Indicator","description":"Agent Action Risk Indicator performs a bounded deterministic agent action risk indicator operation over caller-supplied agent definitions and traces.","when_to_use":"Use this service when you need this capability: agent Action Risk Indicator performs a bounded deterministic agent action risk indicator operation over caller-supplied agent definitions and traces.","category":"ai_search_ai_agent","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/agent_action_risk_indicator/invoke","method":"POST","planned_invoke_route":"/api/agent/services/agent_action_risk_indicator/invoke","mcp_tool":"agent_action_risk_indicator","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"agent_action_risk_indicator","minLength":27,"maxLength":27},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"agent_action_risk_indicator","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"agent_execution_diff","name":"Agent Execution Diff","description":"Agent Execution Diff performs a bounded deterministic agent execution diff operation over caller-supplied agent definitions and traces.","when_to_use":"Use this service when you need this capability: agent Execution Diff performs a bounded deterministic agent execution diff operation over caller-supplied agent definitions and traces.","category":"ai_search_ai_agent","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/agent_execution_diff/invoke","method":"POST","planned_invoke_route":"/api/agent/services/agent_execution_diff/invoke","mcp_tool":"agent_execution_diff","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"agent_execution_diff","minLength":20,"maxLength":20},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"agent_execution_diff","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"agent_run_regression_report","name":"Agent Run Regression Report","description":"Agent Run Regression Report performs a bounded deterministic agent run regression report operation over caller-supplied agent definitions and traces.","when_to_use":"Use this service when you need this capability: agent Run Regression Report performs a bounded deterministic agent run regression report operation over caller-supplied agent definitions and traces.","category":"ai_search_ai_agent","version":"1.0.0","amount_atomic":"25000","price_usdc":"0.025","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/agent_run_regression_report/invoke","method":"POST","planned_invoke_route":"/api/agent/services/agent_run_regression_report/invoke","mcp_tool":"agent_run_regression_report","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"agent_run_regression_report","minLength":27,"maxLength":27},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"agent_run_regression_report","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"multi_agent_trace_compare","name":"Multi Agent Trace Compare","description":"Multi Agent Trace Compare performs a bounded deterministic multi agent trace compare operation over caller-supplied agent definitions and traces.","when_to_use":"Use this service when you need this capability: multi Agent Trace Compare performs a bounded deterministic multi agent trace compare operation over caller-supplied agent definitions and traces.","category":"ai_search_ai_agent","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/multi_agent_trace_compare/invoke","method":"POST","planned_invoke_route":"/api/agent/services/multi_agent_trace_compare/invoke","mcp_tool":"multi_agent_trace_compare","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"multi_agent_trace_compare","minLength":25,"maxLength":25},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"multi_agent_trace_compare","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"search_query_parse","name":"Search Query Parse","description":"Search Query Parse performs a bounded deterministic search query parse operation over caller-supplied search queries and result sets.","when_to_use":"Use this service when you need this capability: search Query Parse performs a bounded deterministic search query parse operation over caller-supplied search queries and result sets.","category":"ai_search_search_retrieval","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/search_query_parse/invoke","method":"POST","planned_invoke_route":"/api/agent/services/search_query_parse/invoke","mcp_tool":"search_query_parse","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"search_query_parse","minLength":18,"maxLength":18},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"search_query_parse","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"search_query_term_extract","name":"Search Query Term Extract","description":"Search Query Term Extract performs a bounded deterministic search query term extract operation over caller-supplied search queries and result sets.","when_to_use":"Use this service when you need this capability: search Query Term Extract performs a bounded deterministic search query term extract operation over caller-supplied search queries and result sets.","category":"ai_search_search_retrieval","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/search_query_term_extract/invoke","method":"POST","planned_invoke_route":"/api/agent/services/search_query_term_extract/invoke","mcp_tool":"search_query_term_extract","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"search_query_term_extract","minLength":25,"maxLength":25},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"search_query_term_extract","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"search_query_normalize","name":"Search Query Normalize","description":"Search Query Normalize performs a bounded deterministic search query normalize operation over caller-supplied search queries and result sets.","when_to_use":"Use this service when you need this capability: search Query Normalize performs a bounded deterministic search query normalize operation over caller-supplied search queries and result sets.","category":"ai_search_search_retrieval","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/search_query_normalize/invoke","method":"POST","planned_invoke_route":"/api/agent/services/search_query_normalize/invoke","mcp_tool":"search_query_normalize","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"search_query_normalize","minLength":22,"maxLength":22},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"search_query_normalize","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"search_query_expand_from_supplied_terms","name":"Search Query Expand From Supplied Terms","description":"Search Query Expand From Supplied Terms performs a bounded deterministic search query expand from supplied terms operation over caller-supplied search queries and result sets.","when_to_use":"Use this service when you need this capability: search Query Expand From Supplied Terms performs a bounded deterministic search query expand from supplied terms operation over caller-supplied search queries and result sets.","category":"ai_search_search_retrieval","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/search_query_expand_from_supplied_terms/invoke","method":"POST","planned_invoke_route":"/api/agent/services/search_query_expand_from_supplied_terms/invoke","mcp_tool":"search_query_expand_from_supplied_terms","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"search_query_expand_from_supplied_terms","minLength":39,"maxLength":39},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"search_query_expand_from_supplied_terms","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"search_query_variant_generate_rules_based","name":"Search Query Variant Generate Rules Based","description":"Search Query Variant Generate Rules Based performs a bounded deterministic search query variant generate rules based operation over caller-supplied search queries and result sets.","when_to_use":"Use this service when you need this capability: search Query Variant Generate Rules Based performs a bounded deterministic search query variant generate rules based operation over caller-supplied search queries and result sets.","category":"ai_search_search_retrieval","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/search_query_variant_generate_rules_based/invoke","method":"POST","planned_invoke_route":"/api/agent/services/search_query_variant_generate_rules_based/invoke","mcp_tool":"search_query_variant_generate_rules_based","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"search_query_variant_generate_rules_based","minLength":41,"maxLength":41},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"search_query_variant_generate_rules_based","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"search_filter_validate","name":"Search Filter Validate","description":"Search Filter Validate performs a bounded deterministic search filter validate operation over caller-supplied search queries and result sets.","when_to_use":"Use this service when you need this capability: search Filter Validate performs a bounded deterministic search filter validate operation over caller-supplied search queries and result sets.","category":"ai_search_search_retrieval","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/search_filter_validate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/search_filter_validate/invoke","mcp_tool":"search_filter_validate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"search_filter_validate","minLength":22,"maxLength":22},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"search_filter_validate","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"search_result_normalize","name":"Search Result Normalize","description":"Search Result Normalize performs a bounded deterministic search result normalize operation over caller-supplied search queries and result sets.","when_to_use":"Use this service when you need this capability: search Result Normalize performs a bounded deterministic search result normalize operation over caller-supplied search queries and result sets.","category":"ai_search_search_retrieval","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/search_result_normalize/invoke","method":"POST","planned_invoke_route":"/api/agent/services/search_result_normalize/invoke","mcp_tool":"search_result_normalize","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"search_result_normalize","minLength":23,"maxLength":23},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"search_result_normalize","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"search_result_deduplicate","name":"Search Result Deduplicate","description":"Search Result Deduplicate performs a bounded deterministic search result deduplicate operation over caller-supplied search queries and result sets.","when_to_use":"Use this service when you need this capability: search Result Deduplicate performs a bounded deterministic search result deduplicate operation over caller-supplied search queries and result sets.","category":"ai_search_search_retrieval","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/search_result_deduplicate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/search_result_deduplicate/invoke","mcp_tool":"search_result_deduplicate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"search_result_deduplicate","minLength":25,"maxLength":25},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"search_result_deduplicate","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"search_result_domain_group","name":"Search Result Domain Group","description":"Search Result Domain Group performs a bounded deterministic search result domain group operation over caller-supplied search queries and result sets.","when_to_use":"Use this service when you need this capability: search Result Domain Group performs a bounded deterministic search result domain group operation over caller-supplied search queries and result sets.","category":"ai_search_search_retrieval","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/search_result_domain_group/invoke","method":"POST","planned_invoke_route":"/api/agent/services/search_result_domain_group/invoke","mcp_tool":"search_result_domain_group","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"search_result_domain_group","minLength":26,"maxLength":26},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"search_result_domain_group","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"search_result_source_diversity","name":"Search Result Source Diversity","description":"Search Result Source Diversity performs a bounded deterministic search result source diversity operation over caller-supplied search queries and result sets.","when_to_use":"Use this service when you need this capability: search Result Source Diversity performs a bounded deterministic search result source diversity operation over caller-supplied search queries and result sets.","category":"ai_search_search_retrieval","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/search_result_source_diversity/invoke","method":"POST","planned_invoke_route":"/api/agent/services/search_result_source_diversity/invoke","mcp_tool":"search_result_source_diversity","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"search_result_source_diversity","minLength":30,"maxLength":30},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"search_result_source_diversity","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"search_result_recency_rank","name":"Search Result Recency Rank","description":"Search Result Recency Rank performs a bounded deterministic search result recency rank operation over caller-supplied search queries and result sets.","when_to_use":"Use this service when you need this capability: search Result Recency Rank performs a bounded deterministic search result recency rank operation over caller-supplied search queries and result sets.","category":"ai_search_search_retrieval","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/search_result_recency_rank/invoke","method":"POST","planned_invoke_route":"/api/agent/services/search_result_recency_rank/invoke","mcp_tool":"search_result_recency_rank","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"search_result_recency_rank","minLength":26,"maxLength":26},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"search_result_recency_rank","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"search_result_metadata_rank","name":"Search Result Metadata Rank","description":"Search Result Metadata Rank performs a bounded deterministic search result metadata rank operation over caller-supplied search queries and result sets.","when_to_use":"Use this service when you need this capability: search Result Metadata Rank performs a bounded deterministic search result metadata rank operation over caller-supplied search queries and result sets.","category":"ai_search_search_retrieval","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/search_result_metadata_rank/invoke","method":"POST","planned_invoke_route":"/api/agent/services/search_result_metadata_rank/invoke","mcp_tool":"search_result_metadata_rank","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"search_result_metadata_rank","minLength":27,"maxLength":27},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"search_result_metadata_rank","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"search_result_keyword_rank","name":"Search Result Keyword Rank","description":"Search Result Keyword Rank performs a bounded deterministic search result keyword rank operation over caller-supplied search queries and result sets.","when_to_use":"Use this service when you need this capability: search Result Keyword Rank performs a bounded deterministic search result keyword rank operation over caller-supplied search queries and result sets.","category":"ai_search_search_retrieval","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/search_result_keyword_rank/invoke","method":"POST","planned_invoke_route":"/api/agent/services/search_result_keyword_rank/invoke","mcp_tool":"search_result_keyword_rank","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"search_result_keyword_rank","minLength":26,"maxLength":26},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"search_result_keyword_rank","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"search_result_bm25_rank","name":"Search Result Bm25 Rank","description":"Search Result Bm25 Rank performs a bounded deterministic search result bm25 rank operation over caller-supplied search queries and result sets.","when_to_use":"Use this service when you need this capability: search Result Bm25 Rank performs a bounded deterministic search result bm25 rank operation over caller-supplied search queries and result sets.","category":"ai_search_search_retrieval","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/search_result_bm25_rank/invoke","method":"POST","planned_invoke_route":"/api/agent/services/search_result_bm25_rank/invoke","mcp_tool":"search_result_bm25_rank","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"search_result_bm25_rank","minLength":23,"maxLength":23},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"search_result_bm25_rank","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"search_result_rrf_merge","name":"Search Result Rrf Merge","description":"Search Result Rrf Merge performs a bounded deterministic search result rrf merge operation over caller-supplied search queries and result sets.","when_to_use":"Use this service when you need this capability: search Result Rrf Merge performs a bounded deterministic search result rrf merge operation over caller-supplied search queries and result sets.","category":"ai_search_search_retrieval","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/search_result_rrf_merge/invoke","method":"POST","planned_invoke_route":"/api/agent/services/search_result_rrf_merge/invoke","mcp_tool":"search_result_rrf_merge","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"search_result_rrf_merge","minLength":23,"maxLength":23},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"search_result_rrf_merge","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"search_result_score_normalize","name":"Search Result Score Normalize","description":"Search Result Score Normalize performs a bounded deterministic search result score normalize operation over caller-supplied search queries and result sets.","when_to_use":"Use this service when you need this capability: search Result Score Normalize performs a bounded deterministic search result score normalize operation over caller-supplied search queries and result sets.","category":"ai_search_search_retrieval","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/search_result_score_normalize/invoke","method":"POST","planned_invoke_route":"/api/agent/services/search_result_score_normalize/invoke","mcp_tool":"search_result_score_normalize","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"search_result_score_normalize","minLength":29,"maxLength":29},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"search_result_score_normalize","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"search_result_filter","name":"Search Result Filter","description":"Search Result Filter performs a bounded deterministic search result filter operation over caller-supplied search queries and result sets.","when_to_use":"Use this service when you need this capability: search Result Filter performs a bounded deterministic search result filter operation over caller-supplied search queries and result sets.","category":"ai_search_search_retrieval","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/search_result_filter/invoke","method":"POST","planned_invoke_route":"/api/agent/services/search_result_filter/invoke","mcp_tool":"search_result_filter","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"search_result_filter","minLength":20,"maxLength":20},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"search_result_filter","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"search_result_cluster_by_domain_or_metadata","name":"Search Result Cluster By Domain Or Metadata","description":"Search Result Cluster By Domain Or Metadata performs a bounded deterministic search result cluster by domain or metadata operation over caller-supplied search queries and result sets.","when_to_use":"Use this service when you need this capability: search Result Cluster By Domain Or Metadata performs a bounded deterministic search result cluster by domain or metadata operation over caller-supplied search queries and result sets.","category":"ai_search_search_retrieval","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/search_result_cluster_by_domain_or_metadata/invoke","method":"POST","planned_invoke_route":"/api/agent/services/search_result_cluster_by_domain_or_metadata/invoke","mcp_tool":"search_result_cluster_by_domain_or_metadata","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"search_result_cluster_by_domain_or_metadata","minLength":43,"maxLength":43},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"search_result_cluster_by_domain_or_metadata","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"search_result_pagination_merge","name":"Search Result Pagination Merge","description":"Search Result Pagination Merge performs a bounded deterministic search result pagination merge operation over caller-supplied search queries and result sets.","when_to_use":"Use this service when you need this capability: search Result Pagination Merge performs a bounded deterministic search result pagination merge operation over caller-supplied search queries and result sets.","category":"ai_search_search_retrieval","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/search_result_pagination_merge/invoke","method":"POST","planned_invoke_route":"/api/agent/services/search_result_pagination_merge/invoke","mcp_tool":"search_result_pagination_merge","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"search_result_pagination_merge","minLength":30,"maxLength":30},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"search_result_pagination_merge","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"search_result_overlap_compare","name":"Search Result Overlap Compare","description":"Search Result Overlap Compare performs a bounded deterministic search result overlap compare operation over caller-supplied search queries and result sets.","when_to_use":"Use this service when you need this capability: search Result Overlap Compare performs a bounded deterministic search result overlap compare operation over caller-supplied search queries and result sets.","category":"ai_search_search_retrieval","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/search_result_overlap_compare/invoke","method":"POST","planned_invoke_route":"/api/agent/services/search_result_overlap_compare/invoke","mcp_tool":"search_result_overlap_compare","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"search_result_overlap_compare","minLength":29,"maxLength":29},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"search_result_overlap_compare","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"search_ranking_diff","name":"Search Ranking Diff","description":"Search Ranking Diff performs a bounded deterministic search ranking diff operation over caller-supplied search queries and result sets.","when_to_use":"Use this service when you need this capability: search Ranking Diff performs a bounded deterministic search ranking diff operation over caller-supplied search queries and result sets.","category":"ai_search_search_retrieval","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/search_ranking_diff/invoke","method":"POST","planned_invoke_route":"/api/agent/services/search_ranking_diff/invoke","mcp_tool":"search_ranking_diff","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"search_ranking_diff","minLength":19,"maxLength":19},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"search_ranking_diff","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"search_result_citation_map","name":"Search Result Citation Map","description":"Search Result Citation Map performs a bounded deterministic search result citation map operation over caller-supplied search queries and result sets.","when_to_use":"Use this service when you need this capability: search Result Citation Map performs a bounded deterministic search result citation map operation over caller-supplied search queries and result sets.","category":"ai_search_search_retrieval","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/search_result_citation_map/invoke","method":"POST","planned_invoke_route":"/api/agent/services/search_result_citation_map/invoke","mcp_tool":"search_result_citation_map","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"search_result_citation_map","minLength":26,"maxLength":26},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"search_result_citation_map","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"search_result_evidence_coverage","name":"Search Result Evidence Coverage","description":"Search Result Evidence Coverage performs a bounded deterministic search result evidence coverage operation over caller-supplied search queries and result sets.","when_to_use":"Use this service when you need this capability: search Result Evidence Coverage performs a bounded deterministic search result evidence coverage operation over caller-supplied search queries and result sets.","category":"ai_search_search_retrieval","version":"1.0.0","amount_atomic":"15000","price_usdc":"0.015","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/search_result_evidence_coverage/invoke","method":"POST","planned_invoke_route":"/api/agent/services/search_result_evidence_coverage/invoke","mcp_tool":"search_result_evidence_coverage","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"search_result_evidence_coverage","minLength":31,"maxLength":31},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"search_result_evidence_coverage","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"search_result_quality_report","name":"Search Result Quality Report","description":"Search Result Quality Report performs a bounded deterministic search result quality report operation over caller-supplied search queries and result sets.","when_to_use":"Use this service when you need this capability: search Result Quality Report performs a bounded deterministic search result quality report operation over caller-supplied search queries and result sets.","category":"ai_search_search_retrieval","version":"1.0.0","amount_atomic":"25000","price_usdc":"0.025","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/search_result_quality_report/invoke","method":"POST","planned_invoke_route":"/api/agent/services/search_result_quality_report/invoke","mcp_tool":"search_result_quality_report","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"search_result_quality_report","minLength":28,"maxLength":28},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"search_result_quality_report","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"search_result_consensus_report","name":"Search Result Consensus Report","description":"Search Result Consensus Report performs a bounded deterministic search result consensus report operation over caller-supplied search queries and result sets.","when_to_use":"Use this service when you need this capability: search Result Consensus Report performs a bounded deterministic search result consensus report operation over caller-supplied search queries and result sets.","category":"ai_search_search_retrieval","version":"1.0.0","amount_atomic":"25000","price_usdc":"0.025","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/search_result_consensus_report/invoke","method":"POST","planned_invoke_route":"/api/agent/services/search_result_consensus_report/invoke","mcp_tool":"search_result_consensus_report","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"search_result_consensus_report","minLength":30,"maxLength":30},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"search_result_consensus_report","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"rag_document_prepare","name":"Rag Document Prepare","description":"Rag Document Prepare performs a bounded deterministic rag document prepare operation over caller-supplied retrieval evidence.","when_to_use":"Use this service when you need this capability: rag Document Prepare performs a bounded deterministic rag document prepare operation over caller-supplied retrieval evidence.","category":"ai_search_rag","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/rag_document_prepare/invoke","method":"POST","planned_invoke_route":"/api/agent/services/rag_document_prepare/invoke","mcp_tool":"rag_document_prepare","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"rag_document_prepare","minLength":20,"maxLength":20},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"rag_document_prepare","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"rag_chunk_quality_analyze","name":"Rag Chunk Quality Analyze","description":"Rag Chunk Quality Analyze performs a bounded deterministic rag chunk quality analyze operation over caller-supplied retrieval evidence.","when_to_use":"Use this service when you need this capability: rag Chunk Quality Analyze performs a bounded deterministic rag chunk quality analyze operation over caller-supplied retrieval evidence.","category":"ai_search_rag","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/rag_chunk_quality_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/rag_chunk_quality_analyze/invoke","mcp_tool":"rag_chunk_quality_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"rag_chunk_quality_analyze","minLength":25,"maxLength":25},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"rag_chunk_quality_analyze","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"rag_chunk_overlap_analyze","name":"Rag Chunk Overlap Analyze","description":"Rag Chunk Overlap Analyze performs a bounded deterministic rag chunk overlap analyze operation over caller-supplied retrieval evidence.","when_to_use":"Use this service when you need this capability: rag Chunk Overlap Analyze performs a bounded deterministic rag chunk overlap analyze operation over caller-supplied retrieval evidence.","category":"ai_search_rag","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/rag_chunk_overlap_analyze/invoke","method":"POST","planned_invoke_route":"/api/agent/services/rag_chunk_overlap_analyze/invoke","mcp_tool":"rag_chunk_overlap_analyze","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"rag_chunk_overlap_analyze","minLength":25,"maxLength":25},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"rag_chunk_overlap_analyze","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"rag_retrieval_result_normalize","name":"Rag Retrieval Result Normalize","description":"Rag Retrieval Result Normalize performs a bounded deterministic rag retrieval result normalize operation over caller-supplied retrieval evidence.","when_to_use":"Use this service when you need this capability: rag Retrieval Result Normalize performs a bounded deterministic rag retrieval result normalize operation over caller-supplied retrieval evidence.","category":"ai_search_rag","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/rag_retrieval_result_normalize/invoke","method":"POST","planned_invoke_route":"/api/agent/services/rag_retrieval_result_normalize/invoke","mcp_tool":"rag_retrieval_result_normalize","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"rag_retrieval_result_normalize","minLength":30,"maxLength":30},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"rag_retrieval_result_normalize","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"rag_retrieval_precision_at_k","name":"Rag Retrieval Precision At K","description":"Rag Retrieval Precision At K performs a bounded deterministic rag retrieval precision at k operation over caller-supplied retrieval evidence.","when_to_use":"Use this service when you need this capability: rag Retrieval Precision At K performs a bounded deterministic rag retrieval precision at k operation over caller-supplied retrieval evidence.","category":"ai_search_rag","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/rag_retrieval_precision_at_k/invoke","method":"POST","planned_invoke_route":"/api/agent/services/rag_retrieval_precision_at_k/invoke","mcp_tool":"rag_retrieval_precision_at_k","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"rag_retrieval_precision_at_k","minLength":28,"maxLength":28},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"rag_retrieval_precision_at_k","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"rag_retrieval_recall_at_k","name":"Rag Retrieval Recall At K","description":"Rag Retrieval Recall At K performs a bounded deterministic rag retrieval recall at k operation over caller-supplied retrieval evidence.","when_to_use":"Use this service when you need this capability: rag Retrieval Recall At K performs a bounded deterministic rag retrieval recall at k operation over caller-supplied retrieval evidence.","category":"ai_search_rag","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/rag_retrieval_recall_at_k/invoke","method":"POST","planned_invoke_route":"/api/agent/services/rag_retrieval_recall_at_k/invoke","mcp_tool":"rag_retrieval_recall_at_k","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"rag_retrieval_recall_at_k","minLength":25,"maxLength":25},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"rag_retrieval_recall_at_k","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"rag_reciprocal_rank_calculate","name":"Rag Reciprocal Rank Calculate","description":"Rag Reciprocal Rank Calculate performs a bounded deterministic rag reciprocal rank calculate operation over caller-supplied retrieval evidence.","when_to_use":"Use this service when you need this capability: rag Reciprocal Rank Calculate performs a bounded deterministic rag reciprocal rank calculate operation over caller-supplied retrieval evidence.","category":"ai_search_rag","version":"1.0.0","amount_atomic":"5000","price_usdc":"0.005","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/rag_reciprocal_rank_calculate/invoke","method":"POST","planned_invoke_route":"/api/agent/services/rag_reciprocal_rank_calculate/invoke","mcp_tool":"rag_reciprocal_rank_calculate","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"rag_reciprocal_rank_calculate","minLength":29,"maxLength":29},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"rag_reciprocal_rank_calculate","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"rag_context_coverage_report","name":"Rag Context Coverage Report","description":"Rag Context Coverage Report performs a bounded deterministic rag context coverage report operation over caller-supplied retrieval evidence.","when_to_use":"Use this service when you need this capability: rag Context Coverage Report performs a bounded deterministic rag context coverage report operation over caller-supplied retrieval evidence.","category":"ai_search_rag","version":"1.0.0","amount_atomic":"25000","price_usdc":"0.025","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/rag_context_coverage_report/invoke","method":"POST","planned_invoke_route":"/api/agent/services/rag_context_coverage_report/invoke","mcp_tool":"rag_context_coverage_report","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"rag_context_coverage_report","minLength":27,"maxLength":27},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"rag_context_coverage_report","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"rag_answer_evidence_map","name":"Rag Answer Evidence Map","description":"Rag Answer Evidence Map performs a bounded deterministic rag answer evidence map operation over caller-supplied retrieval evidence.","when_to_use":"Use this service when you need this capability: rag Answer Evidence Map performs a bounded deterministic rag answer evidence map operation over caller-supplied retrieval evidence.","category":"ai_search_rag","version":"1.0.0","amount_atomic":"10000","price_usdc":"0.01","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/rag_answer_evidence_map/invoke","method":"POST","planned_invoke_route":"/api/agent/services/rag_answer_evidence_map/invoke","mcp_tool":"rag_answer_evidence_map","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"rag_answer_evidence_map","minLength":23,"maxLength":23},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"rag_answer_evidence_map","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"rag_pipeline_evaluation_report","name":"Rag Pipeline Evaluation Report","description":"Rag Pipeline Evaluation Report performs a bounded deterministic rag pipeline evaluation report operation over caller-supplied retrieval evidence.","when_to_use":"Use this service when you need this capability: rag Pipeline Evaluation Report performs a bounded deterministic rag pipeline evaluation report operation over caller-supplied retrieval evidence.","category":"ai_search_rag","version":"1.0.0","amount_atomic":"25000","price_usdc":"0.025","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/rag_pipeline_evaluation_report/invoke","method":"POST","planned_invoke_route":"/api/agent/services/rag_pipeline_evaluation_report/invoke","mcp_tool":"rag_pipeline_evaluation_report","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"rag_pipeline_evaluation_report","minLength":30,"maxLength":30},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"rag_pipeline_evaluation_report","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"ai_answer_source_audit","name":"Ai Answer Source Audit","description":"Ai Answer Source Audit performs a bounded deterministic ai answer source audit operation over caller-supplied AI and search evidence.","when_to_use":"Use this service when you need this capability: ai Answer Source Audit performs a bounded deterministic ai answer source audit operation over caller-supplied AI and search evidence.","category":"ai_search_ai_search_report","version":"1.0.0","amount_atomic":"30000","price_usdc":"0.03","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/ai_answer_source_audit/invoke","method":"POST","planned_invoke_route":"/api/agent/services/ai_answer_source_audit/invoke","mcp_tool":"ai_answer_source_audit","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"ai_answer_source_audit","minLength":22,"maxLength":22},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"ai_answer_source_audit","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"ai_answer_citation_integrity_report","name":"Ai Answer Citation Integrity Report","description":"Ai Answer Citation Integrity Report performs a bounded deterministic ai answer citation integrity report operation over caller-supplied AI and search evidence.","when_to_use":"Use this service when you need this capability: ai Answer Citation Integrity Report performs a bounded deterministic ai answer citation integrity report operation over caller-supplied AI and search evidence.","category":"ai_search_ai_search_report","version":"1.0.0","amount_atomic":"30000","price_usdc":"0.03","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/ai_answer_citation_integrity_report/invoke","method":"POST","planned_invoke_route":"/api/agent/services/ai_answer_citation_integrity_report/invoke","mcp_tool":"ai_answer_citation_integrity_report","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"ai_answer_citation_integrity_report","minLength":35,"maxLength":35},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"ai_answer_citation_integrity_report","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"ai_search_result_synthesis_audit","name":"Ai Search Result Synthesis Audit","description":"Ai Search Result Synthesis Audit performs a bounded deterministic ai search result synthesis audit operation over caller-supplied AI and search evidence.","when_to_use":"Use this service when you need this capability: ai Search Result Synthesis Audit performs a bounded deterministic ai search result synthesis audit operation over caller-supplied AI and search evidence.","category":"ai_search_ai_search_report","version":"1.0.0","amount_atomic":"30000","price_usdc":"0.03","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/ai_search_result_synthesis_audit/invoke","method":"POST","planned_invoke_route":"/api/agent/services/ai_search_result_synthesis_audit/invoke","mcp_tool":"ai_search_result_synthesis_audit","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"ai_search_result_synthesis_audit","minLength":32,"maxLength":32},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"ai_search_result_synthesis_audit","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"search_to_answer_evidence_report","name":"Search To Answer Evidence Report","description":"Search To Answer Evidence Report performs a bounded deterministic search to answer evidence report operation over caller-supplied AI and search evidence.","when_to_use":"Use this service when you need this capability: search To Answer Evidence Report performs a bounded deterministic search to answer evidence report operation over caller-supplied AI and search evidence.","category":"ai_search_ai_search_report","version":"1.0.0","amount_atomic":"30000","price_usdc":"0.03","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/search_to_answer_evidence_report/invoke","method":"POST","planned_invoke_route":"/api/agent/services/search_to_answer_evidence_report/invoke","mcp_tool":"search_to_answer_evidence_report","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"search_to_answer_evidence_report","minLength":32,"maxLength":32},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"search_to_answer_evidence_report","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"rag_answer_quality_report","name":"Rag Answer Quality Report","description":"Rag Answer Quality Report performs a bounded deterministic rag answer quality report operation over caller-supplied AI and search evidence.","when_to_use":"Use this service when you need this capability: rag Answer Quality Report performs a bounded deterministic rag answer quality report operation over caller-supplied AI and search evidence.","category":"ai_search_ai_search_report","version":"1.0.0","amount_atomic":"50000","price_usdc":"0.05","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/rag_answer_quality_report/invoke","method":"POST","planned_invoke_route":"/api/agent/services/rag_answer_quality_report/invoke","mcp_tool":"rag_answer_quality_report","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"rag_answer_quality_report","minLength":25,"maxLength":25},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"rag_answer_quality_report","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"agent_research_trace_report","name":"Agent Research Trace Report","description":"Agent Research Trace Report performs a bounded deterministic agent research trace report operation over caller-supplied AI and search evidence.","when_to_use":"Use this service when you need this capability: agent Research Trace Report performs a bounded deterministic agent research trace report operation over caller-supplied AI and search evidence.","category":"ai_search_ai_search_report","version":"1.0.0","amount_atomic":"30000","price_usdc":"0.03","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/agent_research_trace_report/invoke","method":"POST","planned_invoke_route":"/api/agent/services/agent_research_trace_report/invoke","mcp_tool":"agent_research_trace_report","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"agent_research_trace_report","minLength":27,"maxLength":27},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"agent_research_trace_report","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"multi_source_claim_evidence_report","name":"Multi Source Claim Evidence Report","description":"Multi Source Claim Evidence Report performs a bounded deterministic multi source claim evidence report operation over caller-supplied AI and search evidence.","when_to_use":"Use this service when you need this capability: multi Source Claim Evidence Report performs a bounded deterministic multi source claim evidence report operation over caller-supplied AI and search evidence.","category":"ai_search_ai_search_report","version":"1.0.0","amount_atomic":"30000","price_usdc":"0.03","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/multi_source_claim_evidence_report/invoke","method":"POST","planned_invoke_route":"/api/agent/services/multi_source_claim_evidence_report/invoke","mcp_tool":"multi_source_claim_evidence_report","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"multi_source_claim_evidence_report","minLength":34,"maxLength":34},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"multi_source_claim_evidence_report","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"retrieval_failure_diagnosis_report","name":"Retrieval Failure Diagnosis Report","description":"Retrieval Failure Diagnosis Report performs a bounded deterministic retrieval failure diagnosis report operation over caller-supplied AI and search evidence.","when_to_use":"Use this service when you need this capability: retrieval Failure Diagnosis Report performs a bounded deterministic retrieval failure diagnosis report operation over caller-supplied AI and search evidence.","category":"ai_search_ai_search_report","version":"1.0.0","amount_atomic":"30000","price_usdc":"0.03","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/retrieval_failure_diagnosis_report/invoke","method":"POST","planned_invoke_route":"/api/agent/services/retrieval_failure_diagnosis_report/invoke","mcp_tool":"retrieval_failure_diagnosis_report","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"retrieval_failure_diagnosis_report","minLength":34,"maxLength":34},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"retrieval_failure_diagnosis_report","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"ai_search_pipeline_regression_report","name":"Ai Search Pipeline Regression Report","description":"Ai Search Pipeline Regression Report performs a bounded deterministic ai search pipeline regression report operation over caller-supplied AI and search evidence.","when_to_use":"Use this service when you need this capability: ai Search Pipeline Regression Report performs a bounded deterministic ai search pipeline regression report operation over caller-supplied AI and search evidence.","category":"ai_search_ai_search_report","version":"1.0.0","amount_atomic":"50000","price_usdc":"0.05","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/ai_search_pipeline_regression_report/invoke","method":"POST","planned_invoke_route":"/api/agent/services/ai_search_pipeline_regression_report/invoke","mcp_tool":"ai_search_pipeline_regression_report","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"ai_search_pipeline_regression_report","minLength":36,"maxLength":36},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"ai_search_pipeline_regression_report","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}},{"service_id":"agent_research_quality_report","name":"Agent Research Quality Report","description":"Agent Research Quality Report performs a bounded deterministic agent research quality report operation over caller-supplied AI and search evidence.","when_to_use":"Use this service when you need this capability: agent Research Quality Report performs a bounded deterministic agent research quality report operation over caller-supplied AI and search evidence.","category":"ai_search_ai_search_report","version":"1.0.0","amount_atomic":"50000","price_usdc":"0.05","status":"deployed_live","callable":true,"invoke_url":"https://signalharness.ai/api/agent/services/agent_research_quality_report/invoke","method":"POST","planned_invoke_route":"/api/agent/services/agent_research_quality_report/invoke","mcp_tool":"agent_research_quality_report","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":1,"maxProperties":1,"required":["request_json"],"properties":{"request_json":{"type":"string","minLength":2,"maxLength":65536}}},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"minProperties":4,"maxProperties":4,"required":["service_id","evidence_scope","analysis_json","warnings"],"properties":{"service_id":{"type":"string","const":"agent_research_quality_report","minLength":29,"maxLength":29},"evidence_scope":{"type":"string","const":"caller_supplied_data","minLength":20,"maxLength":20},"analysis_json":{"type":"string","minLength":2,"maxLength":65536},"warnings":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":512}}}},"input_example":{"request_json":"{\"example\":\"schema-valid caller-supplied data\"}"},"output_example":{"service_id":"agent_research_quality_report","evidence_scope":"caller_supplied_data","analysis_json":"{\"example\":\"schema-valid caller-supplied data\"}","warnings":["Verify the caller-supplied data before relying on this result."]}}],"warnings":["Discovery is free and does not grant purchase authority.","Never reuse a static recipient; validate the offering-bound PAYMENT-REQUIRED challenge before any authorized payment."],"generated_at":"2026-09-13T00:52:01.299Z","discovery_status":"public","service_catalog_schema_version":1,"compatibility_fields":{"phase":"legacy catalog alias; use service_status and service_catalog_schema_version","planned_invoke_route":"legacy route alias; use invoke_url for the live endpoint"},"service_status":"active","payment_protocol":"x402-v2","payment_network":"eip155:8453","phase":"X402-AI-SEARCH-02"}
