{"serverId":"mcp-registry/com.fluentedi/tools","tools":[{"name":"http_assert","fixed":{"name":"http_assert","description":"The difference between an agent believing it succeeded and knowing it did. http.check tells you a URL is alive; this tells you it is correct. Assert the status, response headers, values at JSONPath expressions, substrings in the body and a latency ceiling, and get back one boolean plus a per-check breakdown showing expected against actual. An agent that has just deployed, migrated or reconfigured something can prove the outcome rather than reporting the absence of an error, which is the usual wa","inputSchema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","examples":["https://fluentedi.com/health"],"maxLength":4000,"description":"URL to call."},"body":{"type":"string","default":"","maxLength":100000,"description":"Request body for POST, PUT and PATCH."},"method":{"enum":["GET","HEAD","POST","PUT","PATCH","DELETE","OPTIONS"],"type":"string","default":"GET","description":"HTTP method."},"headers":{"type":"object","default":{},"description":"Request headers to send."},"timeout_ms":{"type":"integer","default":10000,"maximum":30000,"minimum":1000,"description":"Request timeout."},"expect_json":{"type":"object","default":{},"description":"JSONPath expressions mapped to required values, e.g. {\"$.status\":\"ok\",\"$.items[0].id\":1}."},"expect_status":{"default":"","description":"Required status: a number, an array of acceptable numbers, or a class such as \"2xx\".","type":"string"},"expect_headers":{"type":"object","default":{},"description":"Response headers that must exist and contain a substring, e.g. {\"content-type\":\"json\"}."},"max_response_ms":{"type":"integer","default":0,"maximum":30000,"minimum":0,"description":"Fail if the response takes longer than this. 0 disables the check."},"expect_body_contains":{"type":"array","items":{"type":"string"},"default":[],"description":"Substrings that must appear in the body."}},"additionalProperties":false},"annotations":{"title":"Verify a URL actually returns what you expected — status, headers, JSON values — and return a pass/fail proof.","readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"title":"Verify a URL actually returns what you expected — status, headers, JSON values — and return a pass/fail proof."},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: expect_status. Change to number/boolean/array where that's what you accept.","verify":true}],"tokensBefore":537,"tokensAfter":541},{"name":"json_query","fixed":{"name":"json_query","description":"Runs a JSONPath query and returns the matching values with their concrete paths. Supports property access, array indexing (including negative indices), slices, wildcards, recursive descent (`..`) and filters (`[?(@.price > 10)]`). Pull three fields out of a large API response without carrying the whole document through context.","inputSchema":{"type":"object","required":["json","path"],"properties":{"json":{"maxLength":1000000,"description":"The JSON document, as an object or a JSON string.","type":"string"},"path":{"type":"string","examples":["$.items[*].id"],"maxLength":1000,"description":"JSONPath expression, e.g. \"$.items[*].id\" or \"$..author\"."},"first_only":{"type":"boolean","default":false,"description":"Return only the first match."}},"additionalProperties":false},"annotations":{"title":"Extract values from a JSON document with a JSONPath expression.","readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Extract values from a JSON document with a JSONPath expression."},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: json. Change to number/boolean/array where that's what you accept.","verify":true}],"tokensBefore":225,"tokensAfter":229}],"toolsChanged":2,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}