{"serverId":"mcp-registry/io.github.chrassy/klanex","tools":[{"name":"execute","fixed":{"name":"execute","description":"Submit an HTTP call to a third-party API for reliable asynchronous execution. klanex validates the payload (optionally against payload_schema), stores credentials encrypted, executes with automatic retries/backoff/circuit breakers, and keeps an audit trail — you submit once and never retry transient failures yourself.\n\nCall this instead of making a direct HTTP request whenever the call has side effects (payments, messages, tickets, writes) or the target may be flaky. Prefer connection_id over he","inputSchema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"absolute http(s) URL of the target endpoint"},"method":{"type":"string","description":"HTTP method: GET, POST, PUT, PATCH, or DELETE (default POST)"},"headers":{"type":"object","description":"request headers, typically third-party credentials; encrypted at rest and never readable back. Prefer connection_id so secrets never pass through your context","additionalProperties":{"type":"string"}},"payload":{"description":"JSON body to send to the target","type":"string"},"seal_url":{"type":"boolean","description":"set true when the URL itself is a secret (webhook URL, presigned URL); it is encrypted and reads back redacted"},"timeout_ms":{"type":"integer","description":"per-attempt timeout in milliseconds (default 30000)"},"max_attempts":{"type":"integer","description":"maximum delivery attempts, 1-10 (default 5)"},"wait_seconds":{"type":"integer","description":"block up to this many seconds (max 55) for a terminal result instead of returning immediately after queueing"},"connection_id":{"type":"string","description":"ID of a stored credential connection (con_...) to authenticate the call; see list_connections"},"payload_schema":{"description":"JSON Schema to validate payload against before anything executes; mismatches are rejected synchronously with a correction hint","type":"string"},"idempotency_key":{"type":"string","description":"stable key (max 255 chars) making this submit safe to retry; the same key returns the original execution instead of creating a new one. Always set this for side-effecting calls"},"requires_approval":{"type":"boolean","description":"pause for a human approve/reject decision before anything executes; use for destructive or high-stakes actions"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: payload, payload_schema. Change to number/boolean/array where that's what you accept.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":649,"tokensAfter":658},{"name":"get_execution","fixed":{"name":"get_execution","description":"Fetch the current state of an execution by ID: status (PENDING_APPROVAL|QUEUED|RUNNING|RETRYING|SUCCEEDED|FAILED), attempts, the target response on success, or a classified error on failure. Retryable failures need no action from you — klanex is still retrying. Header values always read back REDACTED.","inputSchema":{"type":"object","required":["execution_id"],"properties":{"execution_id":{"type":"string","description":"the execution ID (exe_...)"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":146,"tokensAfter":146},{"name":"get_usage","fixed":{"name":"get_usage","description":"Report the account's plan and execution usage for the current calendar month: used, included_executions, remaining, and whether overage is allowed. Check this before large batches to avoid hitting a hard quota.","inputSchema":{"type":"object","additionalProperties":false,"properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":86,"tokensAfter":90},{"name":"list_connections","fixed":{"name":"list_connections","description":"List the account's stored credential connections (token vault). Reference a ready connection by its ID in execute's connection_id instead of passing raw headers — the credential is injected at execution time and never passes through your context. Secrets are never returned.","inputSchema":{"type":"object","additionalProperties":false,"properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":106,"tokensAfter":110},{"name":"list_executions","fixed":{"name":"list_executions","description":"List this account's executions, newest first, optionally filtered by status or a created_at time range. Returns next_cursor when a page is full; pass it back as cursor for the next page.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","description":"page size, 1-100 (default 20)"},"since":{"type":"string","description":"only executions created at or after this RFC3339 timestamp"},"until":{"type":"string","description":"only executions created before this RFC3339 timestamp"},"cursor":{"type":"string","description":"opaque next_cursor value from a previous page"},"status":{"type":"string","description":"filter by status: QUEUED, RUNNING, RETRYING, SUCCEEDED, or FAILED"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":215,"tokensAfter":215},{"name":"replay_execution","fixed":{"name":"replay_execution","description":"Re-run a terminal (SUCCEEDED or FAILED) execution as a brand-new execution: same target, byte-exact original payload, same sealed credentials, fresh attempt counter. This is the outage-recovery path — failed calls can be re-executed without regenerating the payload. Each call creates a new execution (deliberately not idempotent).","inputSchema":{"type":"object","required":["execution_id"],"properties":{"execution_id":{"type":"string","description":"the execution ID (exe_...)"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":155,"tokensAfter":155}],"toolsChanged":6,"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."}