klanex
Reliable async execution for agent tool calls: schema gating, retries, idempotency, audit trail.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"klanex": {
"command": "npx",
"args": [
"klanex-mcp"
]
}
}
}Runnable packages
0.1.0stdioRemote endpoints
https://api.klanexai.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (6)
🟡execute(url, method, headers, connection_id, seal_url, ...)
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.
Input Schema
{
"type": "object",
"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"
}
},
"connection_id": {
"type": "string",
"description": "ID of a stored credential connection (con_...) to authenticate the call; see list_connections"
},
"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)"
},
"payload": {
"description": "JSON body to send to the target"
},
"payload_schema": {
"description": "JSON Schema to validate payload against before anything executes; mismatches are rejected synchronously with a correction hint"
},
"max_attempts": {
"type": "integer",
"description": "maximum delivery attempts, 1-10 (default 5)"
},
"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"
},
"wait_seconds": {
"type": "integer",
"description": "block up to this many seconds (max 55) for a terminal result instead of returning immediately after queueing"
}
},
"required": [
"url"
],
"additionalProperties": false
}🟢get_execution(execution_id)
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.
Input Schema
{
"type": "object",
"properties": {
"execution_id": {
"type": "string",
"description": "the execution ID (exe_...)"
}
},
"required": [
"execution_id"
],
"additionalProperties": false
}🟢get_usage
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.
Input Schema
{
"type": "object",
"additionalProperties": false
}🟢list_connections
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.
Input Schema
{
"type": "object",
"additionalProperties": false
}🟢list_executions(status, since, until, limit, cursor)
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.
Input Schema
{
"type": "object",
"properties": {
"status": {
"type": "string",
"description": "filter by status: QUEUED, RUNNING, RETRYING, SUCCEEDED, or FAILED"
},
"since": {
"type": "string",
"description": "only executions created at or after this RFC3339 timestamp"
},
"until": {
"type": "string",
"description": "only executions created before this RFC3339 timestamp"
},
"limit": {
"type": "integer",
"description": "page size, 1-100 (default 20)"
},
"cursor": {
"type": "string",
"description": "opaque next_cursor value from a previous page"
}
},
"additionalProperties": false
}⚪replay_execution(execution_id)
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).
Input Schema
{
"type": "object",
"properties": {
"execution_id": {
"type": "string",
"description": "the execution ID (exe_...)"
}
},
"required": [
"execution_id"
],
"additionalProperties": false
}Community
Evidence