Reliable async execution for agent tool calls: schema gating, retries, idempotency, audit trail.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
klanex API key (klx_live_... for production; free klx_test_... sandbox keys work at https://api.sandbox.klanexai.com/mcp)
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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. Call 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 headers for credentials. Always set idempotency_key for side-effecting calls so resubmitting can never double-execute. Set wait_seconds to block for the result; otherwise poll get_execution with the returned execution_id.
absolute http(s) URL of the target endpoint
HTTP method: GET, POST, PUT, PATCH, or DELETE (default POST)
request headers, typically third-party credentials; encrypted at rest and never readable back. Prefer connection_id so secrets never pass through your context
JSON body to send to the target
set true when the URL itself is a secret (webhook URL, presigned URL); it is encrypted and reads back redacted
per-attempt timeout in milliseconds (default 30000)
maximum delivery attempts, 1-10 (default 5)
block up to this many seconds (max 55) for a terminal result instead of returning immediately after queueing
ID of a stored credential connection (con_...) to authenticate the call; see list_connections
JSON Schema to validate payload against before anything executes; mismatches are rejected synchronously with a correction hint
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
pause for a human approve/reject decision before anything executes; use for destructive or high-stakes actions
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
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. Call 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 headers for credentials. Always set idempotency_key for side-effecting calls so resubmitting can never double-execute. Set wait_seconds to block for the result; otherwise poll get_execution with the returned execution_id.
| Argument | Type | Description |
|---|---|---|
| url* | string | absolute http(s) URL of the target endpoint |
| method | string | HTTP method: GET, POST, PUT, PATCH, or DELETE (default POST) |
| headers | object | request headers, typically third-party credentials; encrypted at rest and never readable back. Prefer connection_id so secrets never pass through your context |
| payload | any | JSON body to send to the target |
| seal_url | boolean | set true when the URL itself is a secret (webhook URL, presigned URL); it is encrypted and reads back redacted |
| timeout_ms | integer | per-attempt timeout in milliseconds (default 30000) |
| max_attempts | integer | maximum delivery attempts, 1-10 (default 5) |
| wait_seconds | integer | block up to this many seconds (max 55) for a terminal result instead of returning immediately after queueing |
| connection_id | string | ID of a stored credential connection (con_...) to authenticate the call; see list_connections |
| payload_schema | any | JSON Schema to validate payload against before anything executes; mismatches are rejected synchronously with a correction hint |
| idempotency_key | string | 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 | boolean | pause for a human approve/reject decision before anything executes; use for destructive or high-stakes actions |
{
"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"
},
"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"
},
"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
}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.
| Argument | Type | Description |
|---|---|---|
| execution_id* | string | the execution ID (exe_...) |
{
"type": "object",
"required": [
"execution_id"
],
"properties": {
"execution_id": {
"type": "string",
"description": "the execution ID (exe_...)"
}
},
"additionalProperties": false
}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.
No arguments.
{
"type": "object",
"additionalProperties": false
}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.
No arguments.
{
"type": "object",
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| limit | integer | page size, 1-100 (default 20) |
| since | string | only executions created at or after this RFC3339 timestamp |
| until | string | only executions created before this RFC3339 timestamp |
| cursor | string | opaque next_cursor value from a previous page |
| status | string | filter by status: QUEUED, RUNNING, RETRYING, SUCCEEDED, or FAILED |
{
"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
}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).
| Argument | Type | Description |
|---|---|---|
| execution_id* | string | the execution ID (exe_...) |
{
"type": "object",
"required": [
"execution_id"
],
"properties": {
"execution_id": {
"type": "string",
"description": "the execution ID (exe_...)"
}
},
"additionalProperties": false
}