{"openapi":"3.1.0","info":{"title":"KeeperHub","version":"1.0.0","description":"Web3 workflow automation platform. Workflows are callable by AI agents via REST or MCP.","x-guidance":"KeeperHub exposes workflows as REST endpoints under /api/mcp/workflows/{slug}/call.\nEach workflow has a slug, accepts a JSON body, and returns a JSON response with `executionId`, `status`, and `output`.\nAuth: paid workflows return HTTP 402 with x402/MPP payment info on the first call; pay (e.g. via agentcash, openclaw, or any x402 client) and replay. Free workflows can be called directly.\nCategories of workflows include: DeFi yield/risk reads (e.g. usdc-yield-rates-aave-vs-compound, aave-v3-health-check, defi-risk-snapshot), tipping primitives (microtip), and write-type workflows that return unsigned calldata for the caller to sign and broadcast.\n\n## Worked examples\n\n### Example 1: Compare USDC yield (paid, $0.01)\nPOST /api/mcp/workflows/usdc-yield-rates-aave-vs-compound/call\nBody: {}\nResponse (after payment): { executionId, status: \"success\", output: { result: { rates: [...], bestRate, bestProtocol } } }\n\n### Example 2: Aave v3 health check (paid, $0.01)\nPOST /api/mcp/workflows/aave-v3-health-check/call\nBody: { \"address\": \"0x...\" }\nResponse (after payment): { executionId, status: \"success\", output: { result: { healthFactor, totalCollateralUSD, totalDebtUSD, riskLevel } } }\n\n### Example 3: Discover available workflows (free)\nGET /api/mcp/workflows  (returns the list of all listed workflows + pricing)\nGET /openapi.json       (this document; full schema for every workflow)\n\nWhen in doubt, fetch /openapi.json and read the per-workflow `x-payment-info`, `security`, and `requestBody` fields.\n\n## Errors, versioning, and rate limits\n\nEvery failure returns the same envelope: `{ error, detail, hint?, docs?, request_id }`. Branch on `error` (a stable snake_case code) and never on `detail`. See `components.schemas.Error` and `x-error-model`.\nPin a call to a version with the `KeeperHub-Version: 1` request header; omit it to track the current version. Breaking changes ship as a new version, announced with `Deprecation` and `Sunset` headers at least 180 days apart. See `x-api-versioning`.\nLimited endpoints return `RateLimit-Limit`, `RateLimit-Remaining`, and `RateLimit-Reset` (delta seconds), plus the legacy `X-RateLimit-*` spellings, and `Retry-After` on a 429. Self-throttle from those rather than backing off blindly."},"x-api-versioning":{"current":"1","strategy":"header","header":"KeeperHub-Version","supported":["1"],"policy":"Additive changes (new endpoints, new optional fields, new enum members) ship inside the current version. Breaking changes ship as a new version and never in place.","deprecation":{"headers":["Deprecation","Sunset","Link"],"deprecationHeader":"RFC 9745. Present once an endpoint, a version, or one accepted request shape is deprecated; carries the date the deprecation took effect as a Structured Fields Date - an \"@\" sigil followed by integer seconds since the Unix epoch, e.g. \"@1789516800\". Not an HTTP-date; Sunset is.","sunsetHeader":"RFC 8594. The earliest date the deprecated thing may stop being accepted, as an HTTP-date. Where an endpoint or a version is deprecated, that is the date it may stop answering. Where only one accepted request shape is deprecated, the endpoint keeps answering and the shape stops being accepted; the Link target says which case applies.","linkHeader":"Link: <url>; rel=\"deprecation\" points at the migration note.","minimumNoticeDays":180}},"x-error-model":{"mediaType":"application/json","schema":"#/components/schemas/Error","codeField":"error","messageField":"detail","correlationField":"request_id","correlationHeader":"x-request-id","codes":["unauthorized","insufficient_scope","not_found","invalid_input","conflict","rate_limited","internal_error"]},"x-rate-limits":{"headers":["RateLimit-Limit","RateLimit-Remaining","RateLimit-Reset","X-RateLimit-Limit","X-RateLimit-Remaining","X-RateLimit-Reset"],"retryAfterHeader":"Retry-After","pollIntervalHeader":"X-Poll-Interval-Hint","pollIntervalBodyField":"pollIntervalHint","documented":"https://docs.keeperhub.com/api/errors"},"x-service-info":{"categories":["web3","automation","blockchain"],"docs":{"homepage":"https://docs.keeperhub.com"},"developerPortal":"https://docs.keeperhub.com/platform-reference","errors":"https://docs.keeperhub.com/api/errors","mcp":{"card":"https://app.keeperhub.com/.well-known/mcp.json","endpoint":"https://app.keeperhub.com/mcp","publicEndpoint":"https://app.keeperhub.com/mcp/public","transport":"streamable-http"},"cli":{"name":"kh","install":"brew install keeperhub/tap/kh","docs":"https://docs.keeperhub.com/cli/quickstart"},"sandbox":{"testnets":[{"name":"Ethereum Sepolia","chainId":11155111},{"name":"Base Sepolia","chainId":84532}],"simulation":"Direct-execution tools accept simulate: true, which reports whether a transaction would revert without broadcasting it. EVM chains only.","docs":"https://docs.keeperhub.com/platform-reference"}},"servers":[{"url":"https://app.keeperhub.com"}],"components":{"schemas":{"Error":{"type":"object","required":["error","detail"],"properties":{"error":{"type":"string","description":"Stable snake_case error code. Branch on this value; it does not change across releases.","examples":["rate_limited"]},"detail":{"type":"string","description":"Human-readable explanation. Wording is not stable - never parse it."},"hint":{"type":"string","description":"Suggested next step for the caller, when one exists."},"docs":{"type":"string","format":"uri","description":"Deep link to the relevant documentation, when one exists."},"request_id":{"type":"string","description":"Correlation id, echoed on the x-request-id response header. Quote it in support requests."}}}},"headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"parameters":{"KeeperHubVersion":{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}},"responses":{"InvalidInput":{"description":"The request body or query failed validation. `error` is `invalid_input`.","headers":{"x-request-id":{"description":"Correlation id, matching request_id in the body.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"The credential is missing, malformed, or revoked. `error` is `unauthorized`.","headers":{"x-request-id":{"description":"Correlation id, matching request_id in the body.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"InsufficientScope":{"description":"The credential is valid but not permitted for this operation. `error` is `insufficient_scope`.","headers":{"x-request-id":{"description":"Correlation id, matching request_id in the body.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"The route or the resource does not exist. `error` is `not_found`.","headers":{"x-request-id":{"description":"Correlation id, matching request_id in the body.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Conflict":{"description":"The request contradicts current state, for example a reused idempotency key with a different body. `error` is `conflict`.","headers":{"x-request-id":{"description":"Correlation id, matching request_id in the body.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"RateLimited":{"description":"A published rate limit was exceeded. `error` is `rate_limited`. Wait for `Retry-After` seconds before retrying.","headers":{"x-request-id":{"description":"Correlation id, matching request_id in the body.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"InternalError":{"description":"An unexpected server fault. `error` is `internal_error`. Retry with backoff and quote `request_id` if it persists.","headers":{"x-request-id":{"description":"Correlation id, matching request_id in the body.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"securitySchemes":{"x402":{"type":"http","scheme":"Payment","description":"x402 challenge-response payment. The first unpaid call returns HTTP 402 with payment requirements; the client signs that payment and replays the request."},"siwx":{"type":"http","scheme":"bearer","bearerFormat":"CAIP-122","description":"Sign-In with X identity proof (CAIP-122) for compatible agent clients. KeeperHub workflow calls primarily use x402 payment discovery today."},"bearerAuth":{"type":"http","scheme":"bearer","description":"An organization API key (prefix `kh_`) or an OAuth access token, sent as `Authorization: Bearer <token>`. Create an organization key from the API Keys screen; verify it with GET /api/keys."}}},"paths":{"/api/health":{"get":{"operationId":"get-health","summary":"Service health","description":"Liveness probe. Answers without authentication and without touching the database.","security":[],"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}],"responses":{"200":{"description":"The service is up.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/api/chains":{"get":{"operationId":"list-chains","summary":"Supported chains","description":"The live source of truth for supported chains, including each chain's support status. Public: answers whether or not a credential is supplied, so it tests reachability rather than a credential.","security":[],"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}],"responses":{"200":{"description":"Supported chains and their status.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/api/mcp/workflows":{"get":{"operationId":"list-listed-workflows","summary":"Discover callable workflows","description":"Every listed marketplace workflow with its slug, price, and input schema. Enumerate slugs from here rather than guessing call paths.","security":[],"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}],"responses":{"200":{"description":"Listed workflows with their pricing and input schemas.","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object"}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/api/keys":{"get":{"operationId":"verify-credential","summary":"Verify an organization API key","description":"The auth probe. 200 means the credential is valid and scoped to an organization; 401 means it is not. Point first-run scripts and health checks here.","security":[{"bearerAuth":[]}],"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}],"responses":{"200":{"description":"The credential is valid.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/api/mcp/workflows/helloworld/call":{"post":{"operationId":"call-helloworld","summary":"HelloWorld","description":"Simple workflow that returns Hello, World! message.","security":[],"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/yield-read-morpho-get-market/call":{"post":{"operationId":"call-yield-read-morpho-get-market","summary":"Yield read: morpho/get-market","description":"Live on-chain yield read for Alpha","security":[],"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/zwarm-test-sepolia-balance-check/call":{"post":{"operationId":"call-zwarm-test-sepolia-balance-check","summary":"Zwarm Test: Sepolia Balance Check","description":"Alpha's first real KeeperHub execution — read-only","security":[],"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/zwarm-strategy-runner-v2/call":{"post":{"operationId":"call-zwarm-strategy-runner-v2","summary":"Zwarm Strategy Runner V2","description":"LLM-curated USDC yield rotation across Aave / Compound / Morpho on Base mainnet. Calls Zwarm's decision engine (zwarm.com/api/decide) via webhook; routes the decision through a 4-pair execution matrix","security":[],"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/zwarm-strategy-runner/call":{"post":{"operationId":"call-zwarm-strategy-runner","summary":"Zwarm Strategy Runner","description":"LLM-curated USDC yield rotation across Aave / Compound / Morpho on Base mainnet. Calls Zwarm's decision engine via webhook (zwarm.com/api/decide) and routes the result through KH execution primitives.","security":[],"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/zwarm-strategy-runner-v2-personal-0x5623d4a6-tokenid-83-v1/call":{"post":{"operationId":"call-zwarm-strategy-runner-v2-personal-0x5623d4a6-tokenid-83-v1","summary":"Zwarm Strategy Runner V2 (personal · 0x5623D4a6…) · tokenId 83","description":"Personal copy of the Zwarm V2 strategy runner with 0x5623D4a6A316Cf9b16fF92808E3931E17CcB960C hardcoded. LLM-curated USDC yield rotation across Aave / Compound / Morpho on Base mainnet. Per-rebalance ","security":[],"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/quorum-aegis-commit-v2/call":{"post":{"operationId":"call-quorum-aegis-commit-v2","summary":"aegis-commit-vote","description":"Quorum: verifier commits a vote hash to AegisContract on 0G Galileo.","security":[],"x-workflow-type":"write","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["jobId","commitHash"],"properties":{"jobId":{"type":"string"},"commitHash":{"type":"string"}}}}}},"responses":{"200":{"description":"Unsigned transaction calldata, to be signed and broadcast on the workflow's own chain. The example is illustrative: its addresses are placeholders, and its `value` of 0 refers to native currency only - an ERC-20 transfer in `data` still moves tokens.","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","const":"calldata"},"to":{"type":"string"},"data":{"type":"string"},"value":{"type":"string"}},"examples":[{"type":"calldata","to":"0x1111111111111111111111111111111111111111","data":"0xa9059cbb000000000000000000000000000000000000000000000000000000000000dead00000000000000000000000000000000000000000000000000000000000f4240","value":"0"}]}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/quorum-aegis-reveal-v3/call":{"post":{"operationId":"call-quorum-aegis-reveal-v3","summary":"aegis-reveal-vote","description":"Quorum: verifier reveals their vote on AegisContract.","security":[],"x-workflow-type":"write","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["jobId","verdict","nonce"],"properties":{"jobId":{"type":"string"},"nonce":{"type":"string"},"verdict":{"type":"string"}}}}}},"responses":{"200":{"description":"Unsigned transaction calldata, to be signed and broadcast on the workflow's own chain. The example is illustrative: its addresses are placeholders, and its `value` of 0 refers to native currency only - an ERC-20 transfer in `data` still moves tokens.","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","const":"calldata"},"to":{"type":"string"},"data":{"type":"string"},"value":{"type":"string"}},"examples":[{"type":"calldata","to":"0x1111111111111111111111111111111111111111","data":"0xa9059cbb000000000000000000000000000000000000000000000000000000000000dead00000000000000000000000000000000000000000000000000000000000f4240","value":"0"}]}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/quorum-aegis-settle-v3/call":{"post":{"operationId":"call-quorum-aegis-settle-v3","summary":"aegis-settle","description":"Quorum: anyone can call settle on AegisContract once reveal deadline passes.","security":[],"x-workflow-type":"write","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["jobId"],"properties":{"jobId":{"type":"string"}}}}}},"responses":{"200":{"description":"Unsigned transaction calldata, to be signed and broadcast on the workflow's own chain. The example is illustrative: its addresses are placeholders, and its `value` of 0 refers to native currency only - an ERC-20 transfer in `data` still moves tokens.","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","const":"calldata"},"to":{"type":"string"},"data":{"type":"string"},"value":{"type":"string"}},"examples":[{"type":"calldata","to":"0x1111111111111111111111111111111111111111","data":"0xa9059cbb000000000000000000000000000000000000000000000000000000000000dead00000000000000000000000000000000000000000000000000000000000f4240","value":"0"}]}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/quorum-aegis-reveal-v1/call":{"post":{"operationId":"call-quorum-aegis-reveal-v1","summary":"aegis-reveal-vote","description":"Quorum: verifier reveals their vote on AegisContract.","security":[],"x-workflow-type":"write","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["jobId","verdict","nonce"],"properties":{"jobId":{"type":"string"},"nonce":{"type":"string"},"verdict":{"type":"string"}}}}}},"responses":{"200":{"description":"Unsigned transaction calldata, to be signed and broadcast on the workflow's own chain. The example is illustrative: its addresses are placeholders, and its `value` of 0 refers to native currency only - an ERC-20 transfer in `data` still moves tokens.","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","const":"calldata"},"to":{"type":"string"},"data":{"type":"string"},"value":{"type":"string"}},"examples":[{"type":"calldata","to":"0x1111111111111111111111111111111111111111","data":"0xa9059cbb000000000000000000000000000000000000000000000000000000000000dead00000000000000000000000000000000000000000000000000000000000f4240","value":"0"}]}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/quorum-aegis-reveal-v2/call":{"post":{"operationId":"call-quorum-aegis-reveal-v2","summary":"aegis-reveal-vote","description":"Quorum: verifier reveals their vote on AegisContract.","security":[],"x-workflow-type":"write","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["jobId","verdict","nonce"],"properties":{"jobId":{"type":"string"},"nonce":{"type":"string"},"verdict":{"type":"string"}}}}}},"responses":{"200":{"description":"Unsigned transaction calldata, to be signed and broadcast on the workflow's own chain. The example is illustrative: its addresses are placeholders, and its `value` of 0 refers to native currency only - an ERC-20 transfer in `data` still moves tokens.","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","const":"calldata"},"to":{"type":"string"},"data":{"type":"string"},"value":{"type":"string"}},"examples":[{"type":"calldata","to":"0x1111111111111111111111111111111111111111","data":"0xa9059cbb000000000000000000000000000000000000000000000000000000000000dead00000000000000000000000000000000000000000000000000000000000f4240","value":"0"}]}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/quorum-aegis-settle-v2/call":{"post":{"operationId":"call-quorum-aegis-settle-v2","summary":"aegis-settle","description":"Quorum: anyone can call settle on AegisContract once reveal deadline passes.","security":[],"x-workflow-type":"write","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["jobId"],"properties":{"jobId":{"type":"string"}}}}}},"responses":{"200":{"description":"Unsigned transaction calldata, to be signed and broadcast on the workflow's own chain. The example is illustrative: its addresses are placeholders, and its `value` of 0 refers to native currency only - an ERC-20 transfer in `data` still moves tokens.","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","const":"calldata"},"to":{"type":"string"},"data":{"type":"string"},"value":{"type":"string"}},"examples":[{"type":"calldata","to":"0x1111111111111111111111111111111111111111","data":"0xa9059cbb000000000000000000000000000000000000000000000000000000000000dead00000000000000000000000000000000000000000000000000000000000f4240","value":"0"}]}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/quorum-aegis-settle-v1/call":{"post":{"operationId":"call-quorum-aegis-settle-v1","summary":"aegis-settle","description":"Quorum: anyone can call settle on AegisContract once reveal deadline passes.","security":[],"x-workflow-type":"write","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["jobId"],"properties":{"jobId":{"type":"string"}}}}}},"responses":{"200":{"description":"Unsigned transaction calldata, to be signed and broadcast on the workflow's own chain. The example is illustrative: its addresses are placeholders, and its `value` of 0 refers to native currency only - an ERC-20 transfer in `data` still moves tokens.","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","const":"calldata"},"to":{"type":"string"},"data":{"type":"string"},"value":{"type":"string"}},"examples":[{"type":"calldata","to":"0x1111111111111111111111111111111111111111","data":"0xa9059cbb000000000000000000000000000000000000000000000000000000000000dead00000000000000000000000000000000000000000000000000000000000f4240","value":"0"}]}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/quorum-aegis-commit-v3/call":{"post":{"operationId":"call-quorum-aegis-commit-v3","summary":"aegis-commit-vote","description":"Quorum: verifier commits a vote hash to AegisContract on 0G Galileo.","security":[],"x-workflow-type":"write","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["jobId","commitHash"],"properties":{"jobId":{"type":"string"},"commitHash":{"type":"string"}}}}}},"responses":{"200":{"description":"Unsigned transaction calldata, to be signed and broadcast on the workflow's own chain. The example is illustrative: its addresses are placeholders, and its `value` of 0 refers to native currency only - an ERC-20 transfer in `data` still moves tokens.","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","const":"calldata"},"to":{"type":"string"},"data":{"type":"string"},"value":{"type":"string"}},"examples":[{"type":"calldata","to":"0x1111111111111111111111111111111111111111","data":"0xa9059cbb000000000000000000000000000000000000000000000000000000000000dead00000000000000000000000000000000000000000000000000000000000f4240","value":"0"}]}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/quorum-aegis-commit-v1/call":{"post":{"operationId":"call-quorum-aegis-commit-v1","summary":"aegis-commit-vote","description":"Quorum: verifier commits a vote hash to AegisContract on 0G Galileo.","security":[],"x-workflow-type":"write","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["jobId","commitHash"],"properties":{"jobId":{"type":"string"},"commitHash":{"type":"string"}}}}}},"responses":{"200":{"description":"Unsigned transaction calldata, to be signed and broadcast on the workflow's own chain. The example is illustrative: its addresses are placeholders, and its `value` of 0 refers to native currency only - an ERC-20 transfer in `data` still moves tokens.","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","const":"calldata"},"to":{"type":"string"},"data":{"type":"string"},"value":{"type":"string"}},"examples":[{"type":"calldata","to":"0x1111111111111111111111111111111111111111","data":"0xa9059cbb000000000000000000000000000000000000000000000000000000000000dead00000000000000000000000000000000000000000000000000000000000f4240","value":"0"}]}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/eth-price-x402/call":{"post":{"operationId":"call-eth-price-x402","summary":"ETH Price Feed (x402 Demo)","description":"Get live ETH/USD price — paid via x402 USDC","x-payment-info":{"price":{"mode":"fixed","amount":"0.1","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/chainlink-btc-usd-decimals/call":{"post":{"operationId":"call-chainlink-btc-usd-decimals","summary":"Chainlink BTC/USD Decimals","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["coin"],"properties":{"coin":{"type":"string","description":"Coin supported by the price fetcher. (Only btc, eth, link, dai are supported)"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/email-send/call":{"post":{"operationId":"call-email-send","summary":"Email Send","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["email","content"],"properties":{"email":{"type":"string","description":"The email to send to"},"content":{"type":"string","description":"The content of the email"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/microtip/call":{"post":{"operationId":"call-microtip","summary":"Microtip","description":"Receive small tip of $0.01","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/simple-workflow/call":{"post":{"operationId":"call-simple-workflow","summary":"LendPay","description":"Repay your DeFi loan with a single USDC payment from Base. LendPay verifies the transaction and automatically completes the repayment—no bridging or switching chains needed.","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"txid":{"type":"string","description":"tx hash"},"amount":{"type":"number","description":"payment amount"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/defi-risk-snapshot/call":{"post":{"operationId":"call-defi-risk-snapshot","summary":"DeFi Risk Snapshot","description":"Checks Aave v3 position health for a wallet address across both Ethereum mainnet and Base simultaneously. Returns a consolidated risk report: all active positions, whether any are at risk (health fact","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","description":"EVM wallet address to check (0x...)"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/aave-v3-health-check/call":{"post":{"operationId":"call-aave-v3-health-check","summary":"Aave v3 Health Check","description":"Checks the health of an Aave v3 position for any wallet address on Ethereum mainnet. Returns health factor (normalized), total collateral in USD, total debt in USD, available borrow capacity, and a pl","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","description":"EVM wallet address to check"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/usdc-yield-rates-aave-vs-compound/call":{"post":{"operationId":"call-usdc-yield-rates-aave-vs-compound","summary":"USDC Yield Rates: Aave vs Compound","description":"Fetches current USDC supply rates from Aave v3 and Compound v3 on Ethereum mainnet and returns a ranked comparison. No input required. Aave rate comes from liquidityRate (ray, 1e27). Compound rate is ","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/mythos-x402-circle-gateway/call":{"post":{"operationId":"call-mythos-x402-circle-gateway","summary":"Mythos x402 Circle Gateway Agent","description":"Autonomous agent: minia2a x402 (Circle Gateway, 11-chain) + KeeperHub execution. Hackathon 2026.","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["task"],"properties":{"task":{"type":"string","description":"Agent task: monitor, think, or execute"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/liquidation-watcher-base/call":{"post":{"operationId":"call-liquidation-watcher-base","summary":"Liquidation Watcher: Wallet on Base","description":"Computes a wallet's distance to liquidation across Aave V3 on Base. Returns per-protocol health factor, % collateral drop required to reach HF=1, and a summary block flagging the riskiest protocol. Co","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["wallet"],"properties":{"wallet":{"type":"string","description":"Wallet address (0x...) to check liquidation distance for. Must be a valid Base-compatible EVM address."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/yield-curve-snapshot-base-usdc/call":{"post":{"operationId":"call-yield-curve-snapshot-base-usdc","summary":"Yield Curve Snapshot: USDC on Base","description":"Both sides of the USDC yield curve on Base — supply APR and borrow APR — across Aave V3, Compound V3, and Morpho Steakhouse, with utilization and liquidity context. Extends stablecoin-yield-compare-ba","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/yield-curve-snapshot-base-wsteth/call":{"post":{"operationId":"call-yield-curve-snapshot-base-wsteth","summary":"Yield Curve Snapshot: wstETH on Base","description":"Supply APR for wstETH (Lido staked ETH wrapper) on Base via Aave V3. wstETH is typically deposited as collateral against ETH/stable borrows; on Base its borrow side is usually frozen/disabled — borrow","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/yield-curve-snapshot-ethereum-usdc/call":{"post":{"operationId":"call-yield-curve-snapshot-ethereum-usdc","summary":"Yield Curve Snapshot: USDC on Ethereum","description":"Both sides of the USDC yield curve on Ethereum mainnet — supply APR and borrow APR — across Aave V3, Compound V3, and Morpho Steakhouse USDC, with utilization and liquidity context. Companion to yield","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/yield-curve-snapshot-ethereum-weth/call":{"post":{"operationId":"call-yield-curve-snapshot-ethereum-weth","summary":"Yield Curve Snapshot: WETH on Ethereum","description":"Both sides of the WETH yield curve on Ethereum mainnet — supply APR and borrow APR — across Aave V3 and Compound V3, with utilization and liquidity context. An agent can answer \"where do I deposit WET","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/token-approval-risk-scanner-ethereum/call":{"post":{"operationId":"call-token-approval-risk-scanner-ethereum","summary":"Token Approval Risk Scanner: Wallet on Ethereum","description":"Audits a wallet's outstanding USDC approvals on Ethereum mainnet across the major DeFi spenders, flagging unlimited allowances and oversized approvals. Universal pre-flight check for any agent about t","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["wallet"],"properties":{"wallet":{"type":"string","description":"Wallet address (0x...) to scan ERC-20 approvals for. Must be a valid Ethereum-compatible EVM address."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/mev-aware-swap-quote-base/call":{"post":{"operationId":"call-mev-aware-swap-quote-base","summary":"MEV-Aware Swap Quote: Base","description":"MEV-protected swap quote on Base via CoW Protocol. CoW uses batch auctions that intermediate trades through a uniform clearing price, structurally protecting against sandwich attacks and frontrunning.","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["sell_token","buy_token","sell_amount_raw"],"properties":{"from":{"type":"string","description":"Optional trader wallet address. Defaults to a standard test address."},"chain":{"enum":["base"],"type":"string","description":"Must be 'base' in this workflow."},"buy_token":{"type":"string","description":"ERC-20 address of the token you receive (0x-prefixed 20-byte hex)."},"sell_token":{"type":"string","description":"ERC-20 address of the token you sell (0x-prefixed 20-byte hex)."},"sell_amount_raw":{"type":"string","description":"Raw amount of sell_token in token-native decimals (e.g. '1000000000' = 1000 USDC)."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/mev-aware-swap-quote-ethereum/call":{"post":{"operationId":"call-mev-aware-swap-quote-ethereum","summary":"MEV-Aware Swap Quote: Ethereum","description":"MEV-protected swap quote on Ethereum mainnet via CoW Protocol. CoW uses batch auctions that intermediate trades through a uniform clearing price, structurally protecting against sandwich attacks and f","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["sell_token","buy_token","sell_amount_raw"],"properties":{"from":{"type":"string","description":"Optional trader wallet address. Defaults to a standard test address."},"chain":{"enum":["ethereum","mainnet"],"type":"string","description":"Must be 'ethereum' (or 'mainnet') in this workflow."},"buy_token":{"type":"string","description":"ERC-20 address of the token you receive (0x-prefixed 20-byte hex)."},"sell_token":{"type":"string","description":"ERC-20 address of the token you sell (0x-prefixed 20-byte hex)."},"sell_amount_raw":{"type":"string","description":"Raw amount of sell_token in token-native decimals (e.g. '1000000000' = 1000 USDC)."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/og-paid-beta-signup/call":{"post":{"operationId":"call-og-paid-beta-signup","summary":"OG Paid Beta Signup","description":"Repay your DeFi loan with a single USDC payment from Base. LendPay verifies the transaction and automatically completes the repayment—no bridging or switching chains needed.","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"":{"type":"string"},"txid":{"type":"string"},"chain":{"type":"string"},"email":{"type":"string"},"discord":{"type":"string"},"projectName":{"type":"string"},"governanceToken":{"type":"string"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/governance-scanner-ethereum/call":{"post":{"operationId":"call-governance-scanner-ethereum","summary":"Governance Scanner: Ethereum (OZ Governor)","description":"Read-only on-chain proposal scanner for any IGovernor-compatible DAO on Ethereum mainnet (OpenZeppelin Governor / Compound Bravo / GovernorBravo). Returns the live state, vote tallies, voting window, ","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["governor_address","proposal_id"],"properties":{"proposal_id":{"type":"string","description":"Decimal proposalId (uint256). For OZ Governor these are large keccak-derived numbers; for Bravo/sequential governors they are small integers."},"governor_address":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","description":"0x address of any IGovernor-compatible DAO Governor on Ethereum mainnet (OZ Governor / GovernorBravo). Examples: ENS Governor 0x323A76393544d5ecca80cd6ef2A560C6a395b7E3, Compound Bravo 0xc0Da02939E1441F497fd74F78cE7Decb17B66529."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/wallet-trust-score-ethereum/call":{"post":{"operationId":"call-wallet-trust-score-ethereum","summary":"Wallet Trust Score: Ethereum","description":"Wallet trust-score for an Ethereum address. Replaces the prep/HTTP nodes with the Blockscout get-address-info + get-address-counters action nodes; the Score code node composes the 0-100 trust score fr","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["address"],"properties":{"address":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","description":"Ethereum address to score (0x + 40 hex chars). Lower or mixed-case both fine."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/test-sepolia-weth-deposit-issue2/call":{"post":{"operationId":"call-test-sepolia-weth-deposit-issue2","summary":"Sepolia WETH Deposit (write test)","description":"Test workflow: web3/write-contract on Sepolia WETH9 deposit() to reproduce Issues 1-3","security":[],"x-workflow-type":"write","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Unsigned transaction calldata, to be signed and broadcast on the workflow's own chain. The example is illustrative: its addresses are placeholders, and its `value` of 0 refers to native currency only - an ERC-20 transfer in `data` still moves tokens.","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","const":"calldata"},"to":{"type":"string"},"data":{"type":"string"},"value":{"type":"string"}},"examples":[{"type":"calldata","to":"0x1111111111111111111111111111111111111111","data":"0xa9059cbb000000000000000000000000000000000000000000000000000000000000dead00000000000000000000000000000000000000000000000000000000000f4240","value":"0"}]}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/sep-eth-balance-test/call":{"post":{"operationId":"call-sep-eth-balance-test","summary":"E-test-sepolia-balance","description":"Setup verification test: check SepoliaETH balance for the moltbot wallet","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/defi-onchain-intelligence-base/call":{"post":{"operationId":"call-defi-onchain-intelligence-base","summary":"DeFi On-Chain Intelligence — Aave Yield + Aerodrome Liquidity","description":"Reads live DeFi state from Base blockchain: Aave V3 USDC normalized income index + Aerodrome WETH/USDC pool reserves. Pure on-chain data. Powered by KeeperHub DeFi Analysis Agent. Price: 0.01 USDC via","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"description":"No inputs required. Returns live on-chain DeFi data from Base: Aave V3 USDC supply rate + Aerodrome WETH/USDC reserves."}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/vigil-aave-health-guard/call":{"post":{"operationId":"call-vigil-aave-health-guard","summary":"Vigil Aave Health Guard","description":"Guard-as-a-service: pass an Aave v3 borrower address on Base; returns the position health factor and whether it clears the 1.5 safety threshold. Route position checks through Vigil before you act on-c","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["user"],"properties":{"user":{"type":"string","description":"Aave v3 borrower address to check on Base"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/sleep-safe-aave-read/call":{"post":{"operationId":"call-sleep-safe-aave-read","summary":"Sleep-Safe Aave Read (Base)","description":"Aave-read workflow (Base): reads aave-v3/get-user-account-data for any Base Aave V3 borrower. Input: {userAddress}. network hardcoded to 8453 (Base) per the action's strict field validation. The Guard","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["userAddress"],"properties":{"userAddress":{"type":"string","description":"EIP-55 checksummed Base Aave V3 borrower address to read (health factor, LTV, collateral, debt, available borrows, liquidation threshold)."}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/keepersense-demo-transfer/call":{"post":{"operationId":"call-keepersense-demo-transfer","summary":"KeeperSense Demo Transfer","description":"Manual-trigger Sepolia ETH transfer for the KeeperSense intent-to-execution demo","security":[],"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/position-health-check/call":{"post":{"operationId":"call-position-health-check","summary":"Position Health Check","description":"Read-only liquidation-risk check for a MockLendingPosition on Sepolia. Returns the current health factor, whether the position is inside the 1.2e18 danger band, and the raw collateral and debt figures","x-payment-info":{"price":{"mode":"fixed","amount":"0.02","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["positionAddress"],"properties":{"positionAddress":{"type":"string","default":"0x675C1ecEd58e4f20f5d4FF49823a42055206abf8","description":"Address of the MockLendingPosition to inspect on Sepolia (0x...)."}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/checked-transfer-16zk/call":{"post":{"operationId":"call-checked-transfer-16zk","summary":"checked-transfer-ms3r0ujj","description":"Checks your source wallet balance before acting. If the balance is above the configured threshold, it sends a small fixed amount to your des","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/deplex-risk-intel/call":{"post":{"operationId":"call-deplex-risk-intel","summary":"Deplex Transaction Risk Preflight","description":"Decodes Ethereum Sepolia transaction calldata and returns a KeeperHub-native preflight risk score, factors, and explanation before signing.","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["calldata","contractAddress","senderAddress","value"],"properties":{"value":{"type":"string","pattern":"^[0-9]+(?:\\.[0-9]+)?$","description":"Native token value in ETH units, usually 0"},"calldata":{"type":"string","pattern":"^0x[0-9a-fA-F]*$","description":"Hex transaction calldata to inspect"},"senderAddress":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Address that would send the transaction"},"contractAddress":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Target EVM contract address"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/legacykeeper-status-sepolia/call":{"post":{"operationId":"call-legacykeeper-status-sepolia","summary":"LegacyKeeper — Block Health Check","description":"Chain-native liveness check every 50 blocks. Deliberately redundant with the cron monitor so a single scheduler outage cannot silently stop the estate from executing.","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/checked-transfer-g63s/call":{"post":{"operationId":"call-checked-transfer-g63s","summary":"checked-transfer-ms3zg0c1","description":"Checks your source wallet balance and sends a small ETH transfer to a destination wallet only if the balance exceeds a set threshold. You ne","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/sleep-safe-paid-rescue/call":{"post":{"operationId":"call-sleep-safe-paid-rescue","summary":"Sleep-Safe Rescue Quote (Paid)","description":"Paid read-only rescue quote for a SleepSafeVault (demo vault, Sepolia): reads the vault's current healthFactor and returns a protect() rescue plan (to + calldata + fixed 1 mUSD top-up) for the caller ","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["vaultAddress"],"properties":{"vaultAddress":{"type":"string","description":"SleepSafeVault address (Sepolia) to quote a rescue for"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/yield-snapshot/call":{"post":{"operationId":"call-yield-snapshot","summary":"Yield Snapshot","description":"Paid data service: current Chainlink prices (8 decimals) for ETH/BTC/USDC on Sepolia. Output is the int256 latestAnswer value (divide by 1e8 for USD).","x-payment-info":{"price":{"mode":"fixed","amount":"0.001","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["asset"],"properties":{"asset":{"enum":["eth","btc","usdc"],"type":"string","description":"one of eth, btc, usdc"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/gas-refuel/call":{"post":{"operationId":"call-gas-refuel","summary":"Gas Refuel","description":"Paid keeper service: when a wallet's native balance drops below a threshold, top it up from the provider treasury.","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["walletAddress","threshold","topupAmount"],"properties":{"threshold":{"type":"number","description":"ETH balance below which to refuel"},"topupAmount":{"type":"number","description":"ETH to send"},"walletAddress":{"type":"string","description":"wallet to refuel"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/probe-trigger-binding/call":{"post":{"operationId":"call-probe-trigger-binding","summary":"probe-trigger-binding","description":"Probe workflow to test manual trigger input binding into read-contract nodes via getUserAccountData on Aave V3 Pool (Base).","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["address","ownerAddress"],"properties":{"address":{"type":"string","description":"Address to probe"},"ownerAddress":{"type":"string","description":"Owner address to probe"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/lifeline-rescue-check/call":{"post":{"operationId":"call-lifeline-rescue-check","summary":"LIFELINE Rescue Check","description":"Pay-per-call liquidation risk check: reads the caller-supplied account's Aave v3 (Sepolia) health factor through LIFELINE's HealthFactorLens and returns the raw 1e18 value — the same on-chain read LIF","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["user"],"properties":{"user":{"type":"string","description":"EVM address whose Aave v3 (Sepolia) health factor to check"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/payroll-preflight/call":{"post":{"operationId":"call-payroll-preflight","summary":"Payroll Preflight - Can This Treasury Cover The Run?","description":"Read-only affordability check for batch payouts on Base. Give it a treasury address and the total a payout run needs. It reads the live onchain balance and tells you whether the run is fully funded, b","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["treasury","totalRequired"],"properties":{"treasury":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","description":"Treasury address to check (0x...)"},"totalRequired":{"type":"string","description":"Total the payout run needs, in ETH (e.g. \"1.25\")"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/sentinel-aave-v3-health-guardian/call":{"post":{"operationId":"call-sentinel-aave-v3-health-guardian","summary":"Sentinel Health Guardian Loop","description":"Monitors Aave V3 health factor. If HF drops below 1.5, supplies collateral to rebalance. Runs every minute on Sepolia.","security":[],"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/kachunk-verify-invoice-payment/call":{"post":{"operationId":"call-kachunk-verify-invoice-payment","summary":"Kachunk - Verify Invoice Payment","description":"Given a transaction hash from a Kachunk-released invoice payment (or any Tempo tx), confirms it landed onchain -- independent verification, no trust in Kachunk's own dashboard required.","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"transactionHash":{"type":"string"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/aave-v3-health-check-ej56mm/call":{"post":{"operationId":"call-aave-v3-health-check-ej56mm","summary":"Aave V3 Health Check","description":"Checks the health of an Aave v3 position for any wallet address on Ethereum mainnet. Calls getUserAccountData on the Aave V3 Pool (chain 1) and returns health factor (normalized), total collateral in ","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/carrydesk-signal/call":{"post":{"operationId":"call-carrydesk-signal","summary":"carrydesk-signal","description":"Hourly Hyperliquid funding signal: EMA-72 vs Aave V3 DAI reference rate. Emits {coin, fundingapr, emaapr, reference_apr, spread, state} where state is ENTER/HOLD/EXIT. BTC thresholds: entry spread >3%","x-payment-info":{"price":{"mode":"fixed","amount":"0.10","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"description":"No inputs required. Returns current BTC carry signal vs Aave V3 DAI reference rate. Runs EMA-72 over 72h of Hyperliquid funding history and emits state ENTER/HOLD/EXIT."}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/warden-policy-checked-write/call":{"post":{"operationId":"call-warden-policy-checked-write","summary":"Warden: policy-checked daily keeper write","description":"Authored by Warden under policy.yaml. Pinned to approve() on 0x036CbD53842c5426634e7929541eC2318f3dCF7e (chain 84532, value 0). Trigger fires at most 1/h, inside the policy limit of 10/h.","security":[],"x-workflow-type":"write","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"description":"No inputs. Contract, function, args and value are pinned by the Warden policy this workflow was authored under."}}}},"responses":{"200":{"description":"Unsigned transaction calldata, to be signed and broadcast on the workflow's own chain. The example is illustrative: its addresses are placeholders, and its `value` of 0 refers to native currency only - an ERC-20 transfer in `data` still moves tokens.","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","const":"calldata"},"to":{"type":"string"},"data":{"type":"string"},"value":{"type":"string"}},"examples":[{"type":"calldata","to":"0x1111111111111111111111111111111111111111","data":"0xa9059cbb000000000000000000000000000000000000000000000000000000000000dead00000000000000000000000000000000000000000000000000000000000f4240","value":"0"}]}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/chronicleai-paid-onchain-watch-v2/call":{"post":{"operationId":"call-chronicleai-paid-onchain-watch-v2","summary":"ChronicleAI Paid Onchain Watch","description":"Free-tier Marketplace workflow: send the Watch request through ChronicleAI's Telegram bridge. ChronicleAI derives the campaign window and spec hash, executes the existing createSponsoredWatch workflow","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["targetContract","targetKind","focusKey","durationHours","visibility","telegramBindingCode"],"properties":{"focusKey":{"type":"string","description":"Use none, transfers, swaps, liquidations, deposits, stablecoin, or cex"},"targetKind":{"type":"string","description":"Use contract or wallet"},"visibility":{"type":"string","description":"Use public or private"},"durationHours":{"type":"number","description":"Campaign duration in hours, from 1 to 2160"},"targetContract":{"type":"string","description":"Ethereum contract or wallet address to watch"},"telegramBindingCode":{"type":"string","description":"One-time code from @chronicleai_bot after /start"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/exit-guard-check-enrolled/call":{"post":{"operationId":"call-exit-guard-check-enrolled","summary":"Exit Guard - Check Enrolled","description":"Check whether an owner has setEnrolled(true) on ExitGuardExecutor (Base). Part of Exit Guard agent exit layer.","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["owner"],"properties":{"owner":{"type":"string","description":"Wallet address to check"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/exit-guard-exit/call":{"post":{"operationId":"call-exit-guard-exit","summary":"Exit Guard - Exit Onchain","description":"Call ExitGuardExecutor.exit on Base via KeeperHub. Requires enrol+approve. Agents pay x402; atomic non-custodial pull-swap-return.","x-workflow-type":"write","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["owner","token","poolFee","amountIn","amountOutMinimum","feeBps"],"properties":{"owner":{"type":"string","description":"Position owner"},"token":{"type":"string","description":"ERC-20"},"feeBps":{"type":"string","description":"Fee bps"},"poolFee":{"type":"string","description":"Fee tier"},"amountIn":{"type":"string","description":"Amount in"},"amountOutMinimum":{"type":"string","description":"Min out"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Unsigned transaction calldata, to be signed and broadcast on the workflow's own chain. The example is illustrative: its addresses are placeholders, and its `value` of 0 refers to native currency only - an ERC-20 transfer in `data` still moves tokens.","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","const":"calldata"},"to":{"type":"string"},"data":{"type":"string"},"value":{"type":"string"}},"examples":[{"type":"calldata","to":"0x1111111111111111111111111111111111111111","data":"0xa9059cbb000000000000000000000000000000000000000000000000000000000000dead00000000000000000000000000000000000000000000000000000000000f4240","value":"0"}]}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/basis-order-t2/call":{"post":{"operationId":"call-basis-order-t2","summary":"basis-order-t2","description":"Accept a signed Basis $0.05-tier quote for asynchronous execution.","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["quoteId"],"properties":{"quoteId":{"type":"string","description":"Signed, unconsumed Basis quote identifier"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/basis-status/call":{"post":{"operationId":"call-basis-status","summary":"basis-status","description":"Return public Basis order state and independent verification proof.","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["orderId"],"properties":{"orderId":{"type":"string","description":"Basis order identifier"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/meridian-base-usdc-monitor-9bfbd747/call":{"post":{"operationId":"call-meridian-base-usdc-monitor-9bfbd747","summary":"MERIDIAN — Batch Read Proof 98e56cdb","description":"Multicall3 proof reading multiple Base Sepolia USDC balances in one KeeperHub action.","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/meridian-payment-80618321/call":{"post":{"operationId":"call-meridian-payment-80618321","summary":"MERIDIAN — Direct Savings","description":"payment strategy managed by Meridian","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/zwarm-strategy-runner-v2-personal-0x5623d4a6-tokenid-83/call":{"post":{"operationId":"call-zwarm-strategy-runner-v2-personal-0x5623d4a6-tokenid-83","summary":"Zwarm Strategy Runner V2 (personal · 0x5623D4a6…) · tokenId 83","description":"Personal copy of the Zwarm V2 strategy runner with 0x5623D4a6A316Cf9b16fF92808E3931E17CcB960C hardcoded. LLM-curated USDC yield rotation across Aave / Compound / Morpho on Base mainnet. Per-rebalance ","security":[],"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/stablecoin-price-check/call":{"post":{"operationId":"call-stablecoin-price-check","summary":"StablecoinPriceCheck","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["stablecoin"],"properties":{"stablecoin":{"type":"string","description":"Stablecoin to query (currently only USDC is supported in v0.5)"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/token-safety-check/call":{"post":{"operationId":"call-token-safety-check","summary":"TokenSafetyCheck","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["tokenAddress"],"properties":{"tokenAddress":{"type":"string","description":"ERC-20 token contract to evaluate"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/eu-ai-act-audit/call":{"post":{"operationId":"call-eu-ai-act-audit","summary":"EU AI Act Audit (zhgg)","description":"Pay $0.10 USDC, get a tamper-proof EU AI Act compliance certificate for any AI agent. The audit runs on 0G Compute (TEE-verified Qwen inference) against Articles 5, 13, and 50 of Regulation (EU) 2024/","x-payment-info":{"price":{"mode":"fixed","amount":"0.10","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["agentName"],"properties":{"agentName":{"type":"string","description":"Target agent display name (e.g. oracle-agent). Listener resolves it to the iNFT tokenId on 0G."}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/wallet-snapshot-base/call":{"post":{"operationId":"call-wallet-snapshot-base","summary":"Aave V3 Liquidation Risk Check — Base","description":"Pay $0.01 USDC, get a real-time liquidation-risk snapshot for any Aave V3 borrower on Base mainnet. Returns the canonical Aave V3 account-level health metrics (totalCollateralBase, totalDebtBase, avai","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/usdc-eth-price-alert-workflow/call":{"post":{"operationId":"call-usdc-eth-price-alert-workflow","summary":"USDC/ETH Price Alert Workflow","description":"Checks USDC/ETH on a schedule and sends a Telegram alert when the price drops below 0.0003","x-payment-info":{"price":{"mode":"fixed","amount":"10","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"price":{"type":"string","description":"get prices"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/buy-me-a-coffee/call":{"post":{"operationId":"call-buy-me-a-coffee","summary":"Buy me a coffee","description":"Send a small tip to support the builder. This workflow processes a quick payment and confirms the transaction on-chain.","x-payment-info":{"price":{"mode":"fixed","amount":"3","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/yield-curve-snapshot-ethereum-wsteth/call":{"post":{"operationId":"call-yield-curve-snapshot-ethereum-wsteth","summary":"Yield Curve Snapshot: wstETH on Ethereum","description":"Supply APR for wstETH (Lido staked ETH wrapper) on Ethereum mainnet via Aave V3. wstETH on Eth is primarily a collateral asset against ETH/stable borrows; the borrow side is typically frozen or near-z","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/liquidation-watcher-ethereum/call":{"post":{"operationId":"call-liquidation-watcher-ethereum","summary":"Liquidation Watcher: Wallet on Ethereum","description":"Computes a wallet's distance to liquidation across Aave V3 + Spark on Ethereum mainnet. Returns per-protocol health factor, % collateral drop required to reach HF=1, and a summary block flagging the r","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["wallet"],"properties":{"wallet":{"type":"string","description":"Wallet address (0x...) to check liquidation distance for. Must be a valid Ethereum-compatible EVM address."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/price-oracle-consensus-check-ethereum/call":{"post":{"operationId":"call-price-oracle-consensus-check-ethereum","summary":"Price Oracle Consensus Check: ETH/USD on Ethereum","description":"Cross-source ETH/USD price check on Ethereum mainnet. Returns the latest price from Pyth and Chainlink, the median, and the max divergence in basis points so an agent can pre-flight a trade against or","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/price-oracle-consensus-check-base/call":{"post":{"operationId":"call-price-oracle-consensus-check-base","summary":"Price Oracle Consensus Check: ETH/USD on Base","description":"Cross-source ETH/USD price check on Base. Returns the latest price from Pyth and Chainlink, the median, and the max divergence in basis points so an agent can pre-flight a trade against oracle manipul","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/yield-curve-snapshot-base-weth/call":{"post":{"operationId":"call-yield-curve-snapshot-base-weth","summary":"Yield Curve Snapshot: WETH on Base","description":"Both sides of the WETH yield curve on Base — supply APR and borrow APR — across Aave V3 and Compound V3, with utilization and liquidity context. An agent can answer \"where do I deposit WETH?\" and \"whe","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/token-approval-risk-scanner-base/call":{"post":{"operationId":"call-token-approval-risk-scanner-base","summary":"Token Approval Risk Scanner: Wallet on Base","description":"Audits a wallet's outstanding USDC approvals on Base across the major DeFi spenders, flagging unlimited allowances and oversized approvals. Universal pre-flight check for any agent about to spend a wa","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["wallet"],"properties":{"wallet":{"type":"string","description":"Wallet address (0x...) to scan ERC-20 approvals for. Must be a valid Base-compatible EVM address."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/wallet-trust-score-base/call":{"post":{"operationId":"call-wallet-trust-score-base","summary":"Wallet Trust Score: Base","description":"Composite trust/reputation score for any Base mainnet address, sourced from Blockscout's public address summary and counter endpoints — no API key, no auth. Inputs (via x402/MCP input payload): addres","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["address"],"properties":{"address":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","description":"Base address to score (0x + 40 hex chars). Lower or mixed-case both fine."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/lendpay-paid-beta-signup/call":{"post":{"operationId":"call-lendpay-paid-beta-signup","summary":"LendPay Paid Beta Signup","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"txid":{"type":"string"},"email":{"type":"string"},"discord":{"type":"string"},"telegram":{"type":"string"},"baseAddress":{"type":"string"},"algorandAddress":{"type":"string"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/sentinel-vault-protection/call":{"post":{"operationId":"call-sentinel-vault-protection","summary":"Sentinel Vault Protection","x-workflow-type":"write","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["vaultAddress"],"properties":{"reason":{"type":"string"},"vaultAddress":{"type":"string"}}}}}},"responses":{"200":{"description":"Unsigned transaction calldata, to be signed and broadcast on the workflow's own chain. The example is illustrative: its addresses are placeholders, and its `value` of 0 refers to native currency only - an ERC-20 transfer in `data` still moves tokens.","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","const":"calldata"},"to":{"type":"string"},"data":{"type":"string"},"value":{"type":"string"}},"examples":[{"type":"calldata","to":"0x1111111111111111111111111111111111111111","data":"0xa9059cbb000000000000000000000000000000000000000000000000000000000000dead00000000000000000000000000000000000000000000000000000000000f4240","value":"0"}]}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/signer-gas-runway/call":{"post":{"operationId":"call-signer-gas-runway","summary":"Blackbox: signer gas runway","description":"Can this signer still pay for its next transaction? Returns the native balance in ETH and wei for any address on any supported chain. This is the read behind Blackbox's SIGNERGASSTARVED rule (R6), whi","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/mandate-policy-status/call":{"post":{"operationId":"call-mandate-policy-status","summary":"Mandate — Is This Spending Policy Live","description":"Given a Mandate policy id, reads PolicyRegistry on Sepolia and reports whether that agent's spending limit is enforceable right now: the anchored ruleset hash, the version, the owner, the expiry, and ","x-payment-info":{"price":{"mode":"fixed","amount":"0.02","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["policyId"],"properties":{"policyId":{"type":"string","description":"The uint256 Mandate policy id, as a decimal string."}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/exit-guard-check-keeper/call":{"post":{"operationId":"call-exit-guard-check-keeper","summary":"Exit Guard - Check Keeper","description":"Check whether an address is an authorized keeper on ExitGuardExecutor (Base).","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["address"],"properties":{"address":{"type":"string","description":"Address to check as keeper"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/basis-order-t4/call":{"post":{"operationId":"call-basis-order-t4","summary":"basis-order-t4","description":"Accept a signed Basis $1.00-tier quote for asynchronous execution.","x-payment-info":{"price":{"mode":"fixed","amount":"1.00","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["quoteId"],"properties":{"quoteId":{"type":"string","description":"Signed, unconsumed Basis quote identifier"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/basis-order-t3/call":{"post":{"operationId":"call-basis-order-t3","summary":"basis-order-t3","description":"Accept a signed Basis $0.25-tier quote for asynchronous execution.","x-payment-info":{"price":{"mode":"fixed","amount":"0.25","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["quoteId"],"properties":{"quoteId":{"type":"string","description":"Signed, unconsumed Basis quote identifier"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/position-guardian-aave-v3/call":{"post":{"operationId":"call-position-guardian-aave-v3","summary":"Position Guardian — Aave V3","description":"Monitors an Aave V3 health factor and auto-repays when it drops below the configured threshold.","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"object"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/riskguard-health-check/call":{"post":{"operationId":"call-riskguard-health-check","summary":"RiskGuard — Health Check","description":"Reads a lending position's health factor straight from the vault, scales it out of WAD, and reports whether it sits inside the liquidation buffer. Read-only: no wallet, no gas, no state change. An age","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["vault","account"],"properties":{"vault":{"type":"string","description":"Lending vault address exposing healthFactor(address)"},"account":{"type":"string","description":"Position holder to score"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/meridian-yield-262edba7/call":{"post":{"operationId":"call-meridian-yield-262edba7","summary":"MERIDIAN — Annual Monthly Savings","description":"yield strategy managed by Meridian","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/paypeek-demo-preview/call":{"post":{"operationId":"call-paypeek-demo-preview","summary":"PayPeek Demo Preview","description":"Persistent PayPeek preview payment workflow. KeeperHub owns the x402 challenge, settlement, execution record, and creator earnings.","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["contentId","tier","nonce","accessSteps"],"properties":{"tier":{"type":"string"},"nonce":{"type":"string"},"contentId":{"type":"string"},"accessSteps":{"type":"array","items":{"type":"string"}}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/paypeek-demo-download/call":{"post":{"operationId":"call-paypeek-demo-download","summary":"PayPeek Demo Download","description":"Persistent PayPeek download payment workflow. KeeperHub owns the x402 challenge, settlement, execution record, and creator earnings.","x-payment-info":{"price":{"mode":"fixed","amount":"0.02","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["contentId","tier","nonce","accessSteps"],"properties":{"tier":{"type":"string"},"nonce":{"type":"string"},"contentId":{"type":"string"},"accessSteps":{"type":"array","items":{"type":"string"}}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/emporia-sense-decide/call":{"post":{"operationId":"call-emporia-sense-decide","summary":"emporia-sense-decide","description":"Reads pool state on a block interval, computes CBRI in a Code node, and fires the execute workflow when CBRI crosses tau. Deterministic: no LLM anywhere on this path. CALIBRATION: tau*=66 and the sign","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["poolAddress","depegPoolAddress","token0Address","token1Address","executeWebhookUrl"],"properties":{"tau":{"type":"number","default":66,"description":"Firing threshold. DERIVED, not chosen: the highest threshold capturing maximum funds saved with zero false positives on the March 2023 USDC depeg. Calibrated on ONE event - generalisation is asserted, not proven."},"ofiWeight":{"type":"number","default":0,"description":"Noisy-OR weight for OFI. Ships at 0: this signal was non-discriminant on the reference crash (calm and crisis both ~0.5), so it is diagnostic only. CBRI is effectively two signals today."},"ofiWindow":{"type":"integer","default":6,"description":"Rolling window in candles for OFI."},"depegWeight":{"type":"number","default":1,"description":"Noisy-OR weight for depeg."},"drainWeight":{"type":"number","default":1,"description":"Noisy-OR weight for drain. 0 disables the signal entirely."},"drainWindow":{"type":"integer","default":9,"description":"Rolling window in candles. A FULL window is required; a partial one invents a drain spike at startup."},"poolAddress":{"type":"string","description":"Uniswap v3 pool to monitor. The drain and order-flow signals are read from this pool."},"ofiSteepness":{"type":"number","default":15,"description":"Sigmoid steepness for OFI."},"ofiThreshold":{"type":"number","default":0.3,"description":"Order-flow imbalance knee."},"candleSeconds":{"type":"integer","default":300,"description":"Candle size in seconds. The calibration assumes 300."},"token0Address":{"type":"string","description":"token0 of the monitored pool."},"token1Address":{"type":"string","description":"token1 of the monitored pool."},"depegSteepness":{"type":"number","default":250,"description":"Sigmoid steepness for depeg."},"depegThreshold":{"type":"number","default":0.012,"description":"Depeg knee, |1 - price|. THE CONFIRMATION SIGNAL."},"drainSteepness":{"type":"number","default":60,"description":"Sigmoid steepness for drain."},"drainThreshold":{"type":"number","default":0.06,"description":"Liquidity-drain knee, as a fraction of TVL per hour. THE EARLY-WARNING SIGNAL: on the reference crash it fired ~17h before the peg broke."},"token0Decimals":{"type":"integer","default":6,"description":"Decimals of token0. Wrong values silently rescale the drain signal."},"token1Decimals":{"type":"integer","default":18,"description":"Decimals of token1."},"depegPoolAddress":{"type":"string","description":"Stable/stable pool used to price the distressed asset DIRECTLY. Never derive this via an ETH ratio."},"executeWebhookUrl":{"type":"string","description":"Webhook of the execute workflow. Webhook triggers inherit the conservative gas multiplier, which is why the handoff is a webhook and not a schedule."},"depegToken0Decimals":{"type":"integer","default":6,"description":"Decimals of the depeg pool's token0."},"depegToken1Decimals":{"type":"integer","default":6,"description":"Decimals of the depeg pool's token1."}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/mythos-trench-liq-gate-v2/call":{"post":{"operationId":"call-mythos-trench-liq-gate-v2","summary":"Trench Liquidity Floor Gate","description":"Reads live Uniswap-V2 LP reserves for a freshly-launched Base pair and returns the liquidity-floor gate.","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["pairAddress"],"properties":{"pairAddress":{"type":"string","description":"Uniswap-V2 LP pair address on Base"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/themis-core-jqsn45/call":{"post":{"operationId":"call-themis-core-jqsn45","summary":"themis-core-0x9007a5","description":"THEMIS — The agent with its own laws. Five-layer self-verifying verdict on any DeFi position. Callable by any agent via call_workflow. x402 payment. No API key. No SDK. No human. Repulsive Gravity: re","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["position_owner"],"properties":{"chain_id":{"type":"string","description":"Chain ID (e.g. 11155111 for Sepolia)"},"time_horizon":{"enum":["SHORT","MEDIUM","LONG"],"type":"string","description":"Caller time horizon"},"position_owner":{"type":"string","description":"Wallet address to evaluate (0x...)"},"risk_tolerance":{"enum":["CONSERVATIVE","STANDARD","AGGRESSIVE"],"type":"string","description":"Caller risk profile"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/themis-core-3l4uuv/call":{"post":{"operationId":"call-themis-core-3l4uuv","summary":"themis-core-0x9007a5","description":"THEMIS — The agent with its own laws. Five-layer self-verifying verdict on any DeFi position. Callable by any agent via call_workflow. x402 payment. No API key. No SDK. No human. Repulsive Gravity: re","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["position_owner"],"properties":{"chain_id":{"type":"string","description":"Chain ID (e.g. 11155111 for Sepolia)"},"time_horizon":{"enum":["SHORT","MEDIUM","LONG"],"type":"string","description":"Caller time horizon"},"position_owner":{"type":"string","description":"Wallet address to evaluate (0x...)"},"risk_tolerance":{"enum":["CONSERVATIVE","STANDARD","AGGRESSIVE"],"type":"string","description":"Caller risk profile"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/resource-sentinel-risk-provider/call":{"post":{"operationId":"call-resource-sentinel-risk-provider","summary":"ReSource Sentinel Risk Provider","x-payment-info":{"price":{"mode":"fixed","amount":"0.03","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["value","calldata","senderAddress","contractAddress"],"properties":{"value":{"type":"string","description":"Native transaction value in wei"},"calldata":{"type":"string","description":"0x-prefixed EVM transaction calldata to assess"},"senderAddress":{"type":"string","description":"Address initiating the transaction"},"contractAddress":{"type":"string","description":"Target contract address"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/resource-atlas-risk-provider/call":{"post":{"operationId":"call-resource-atlas-risk-provider","summary":"ReSource Atlas Risk Provider","description":"Alternative transaction risk intelligence provider for ReSource autonomous procurement.","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["value","calldata","senderAddress","contractAddress"],"properties":{"value":{"type":"string","description":"Native transaction value in wei"},"calldata":{"type":"string","description":"0x-prefixed EVM transaction calldata to assess"},"senderAddress":{"type":"string","description":"Address initiating the transaction"},"contractAddress":{"type":"string","description":"Target contract address"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/basis-quote/call":{"post":{"operationId":"call-basis-quote","summary":"basis-quote","description":"Return a signed, expiring Basis execution quote without executing it.","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["jobType","params","chainId","deadlineTier","refundRecipient"],"properties":{"params":{"type":"object","description":"Structured parameters validated by the selected Basis adapter"},"chainId":{"type":"integer"},"jobType":{"enum":["weth.wrap","weth.unwrap","erc20.transfer","morpho.accrue_interest"],"type":"string"},"deadlineTier":{"enum":["next-block","5m","1h","best-effort"],"type":"string"},"refundRecipient":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","description":"Future refund recipient cryptographically bound into the signed quote"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/basis-order-t1/call":{"post":{"operationId":"call-basis-order-t1","summary":"basis-order-t1","description":"Accept a signed Basis $0.01-tier quote for asynchronous execution.","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["quoteId"],"properties":{"quoteId":{"type":"string","description":"Signed, unconsumed Basis quote identifier"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/warden-guarded-gateway/call":{"post":{"operationId":"call-warden-guarded-gateway","summary":"Warden Guarded Execution Gateway","description":"An intelligent middleware that wraps KeeperHub to provide policy-based transaction holding, anomaly detection, and audited execution for AI agents.","security":[],"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/emporia-cbri-score/call":{"post":{"operationId":"call-emporia-cbri-score","summary":"emporia-cbri-score","description":"Scores break risk for any Uniswap v3 pool and returns CBRI 0-100 plus the three raw signals. READ-ONLY: no writes, no approvals, no evacuation — a caller cannot move funds through this workflow. Same ","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["poolAddress","depegPoolAddress","token0Address","token1Address"],"properties":{"tau":{"type":"number","default":66,"description":"Reference firing threshold, returned for comparison. This workflow never acts on it. DERIVED from the March 2023 USDC depeg; calibrated on ONE event."},"ofiWeight":{"type":"number","default":0,"description":"Noisy-OR weight for OFI. Ships at 0: non-discriminant on the reference crash, diagnostic only."},"ofiWindow":{"type":"integer","default":6,"description":"Rolling window in candles for OFI."},"depegWeight":{"type":"number","default":1,"description":"Noisy-OR weight for depeg."},"drainWeight":{"type":"number","default":1,"description":"Noisy-OR weight for drain. 0 disables the signal."},"drainWindow":{"type":"integer","default":9,"description":"Rolling window in candles. A FULL window is required; a partial one invents a drain spike."},"poolAddress":{"type":"string","description":"Uniswap v3 pool to score. Drain and order-flow signals are read from this pool."},"ofiSteepness":{"type":"number","default":15,"description":"Sigmoid steepness for OFI."},"ofiThreshold":{"type":"number","default":0.3,"description":"Order-flow imbalance knee."},"candleSeconds":{"type":"integer","default":300,"description":"Candle size in seconds. The calibration assumes 300."},"token0Address":{"type":"string","description":"token0 of the scored pool."},"token1Address":{"type":"string","description":"token1 of the scored pool."},"depegSteepness":{"type":"number","default":250,"description":"Sigmoid steepness for depeg."},"depegThreshold":{"type":"number","default":0.012,"description":"Depeg knee, |1 - price|. THE CONFIRMATION SIGNAL."},"drainSteepness":{"type":"number","default":60,"description":"Sigmoid steepness for drain."},"drainThreshold":{"type":"number","default":0.06,"description":"Liquidity-drain knee, fraction of TVL per hour. THE EARLY-WARNING SIGNAL."},"token0Decimals":{"type":"integer","default":6,"description":"Decimals of token0. Wrong values silently rescale the drain signal."},"token1Decimals":{"type":"integer","default":18,"description":"Decimals of token1."},"depegPoolAddress":{"type":"string","description":"Stable/stable pool used to price the distressed asset DIRECTLY. The depeg signal is only meaningful if this is a genuine stable pair."},"depegToken0Decimals":{"type":"integer","default":6,"description":"Decimals of the depeg pool's token0."},"depegToken1Decimals":{"type":"integer","default":6,"description":"Decimals of the depeg pool's token1."}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/meridian-payment-9358d564/call":{"post":{"operationId":"call-meridian-payment-9358d564","summary":"MERIDIAN — Monthly Savings","description":"payment strategy managed by Meridian","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/mythos-trench-liq-gate/call":{"post":{"operationId":"call-mythos-trench-liq-gate","summary":"Mythos Trench Rug-Risk","description":"Reads live LP reserves for a freshly-launched Base pair and returns the liquidity-floor gate.","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["pairAddress"],"properties":{"pairAddress":{"type":"string","description":"Uniswap-V2-style LP pair address on Base for a freshly-launched token"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/premise-freshness-check/call":{"post":{"operationId":"call-premise-freshness-check","summary":"Premise Freshness Check","description":"Re-read a contract value and stamp it with the block height it was observed at, so an agent can verify the premise behind a pending action still holds. Addresses the check-and-act staleness gap: condi","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"description":"No inputs required."}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/themis-core-a2q16w/call":{"post":{"operationId":"call-themis-core-a2q16w","summary":"themis-core-0x9007a5","description":"THEMIS — The agent with its own laws. Five-layer self-verifying verdict on any DeFi position. Callable by any agent via call_workflow. x402 payment. No API key. No SDK. No human. Repulsive Gravity: re","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["position_owner"],"properties":{"chain_id":{"type":"string","description":"Chain ID (e.g. 11155111 for Sepolia)"},"time_horizon":{"enum":["SHORT","MEDIUM","LONG"],"type":"string","description":"Caller time horizon"},"position_owner":{"type":"string","description":"Wallet address to evaluate (0x...)"},"risk_tolerance":{"enum":["CONSERVATIVE","STANDARD","AGGRESSIVE"],"type":"string","description":"Caller risk profile"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/gavel-drain/call":{"post":{"operationId":"call-gavel-drain","summary":"gavel-drain","description":"Executes ONE Safe transaction that already holds every signature it needs but was never executed — from a wallet that owns nothing on the Safe. Refuses by name (not-next-nonce, below-threshold, refund","x-workflow-type":"write","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["safeAddress"],"properties":{"safeAddress":{"type":"string","description":"The Safe whose queue to drain. Must be on gavel's opt-in roster; anything else is refused (not-on-roster). Executes at most ONE queued transaction: the one at the live nonce, only if it already holds every signature it needs and none of the nine named refusals apply."}}}}}},"responses":{"200":{"description":"Unsigned transaction calldata, to be signed and broadcast on the workflow's own chain. The example is illustrative: its addresses are placeholders, and its `value` of 0 refers to native currency only - an ERC-20 transfer in `data` still moves tokens.","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","const":"calldata"},"to":{"type":"string"},"data":{"type":"string"},"value":{"type":"string"}},"examples":[{"type":"calldata","to":"0x1111111111111111111111111111111111111111","data":"0xa9059cbb000000000000000000000000000000000000000000000000000000000000dead00000000000000000000000000000000000000000000000000000000000f4240","value":"0"}]}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/themis-core/call":{"post":{"operationId":"call-themis-core","summary":"themis-core-0x9007a5","description":"THEMIS — The agent with its own laws. Five-layer self-verifying verdict on any DeFi position. Callable by any agent via call_workflow. x402 payment. No API key. No SDK. No human. Repulsive Gravity: re","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["position_owner"],"properties":{"chain_id":{"type":"string","description":"Chain ID (e.g. 11155111 for Sepolia)"},"time_horizon":{"enum":["SHORT","MEDIUM","LONG"],"type":"string","description":"Caller time horizon"},"position_owner":{"type":"string","description":"Wallet address to evaluate (0x...)"},"risk_tolerance":{"enum":["CONSERVATIVE","STANDARD","AGGRESSIVE"],"type":"string","description":"Caller risk profile"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/bursar-payout-preflight/call":{"post":{"operationId":"call-bursar-payout-preflight","summary":"Bursar Payout Preflight","description":"Before an agent sends a payment, check the payment will not strand it. Reads the payer's live native balance, subtracts the amount about to go out, and reports whether what remains clears the gas rese","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["payer","amountWei"],"properties":{"payer":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","description":"The address that would send the payment — usually the agent's own wallet."},"amountWei":{"type":"string","pattern":"^[0-9]+$","description":"The payment being considered, in wei. Decimal string, no exponent."},"gasReserveWei":{"type":"string","pattern":"^[0-9]+$","description":"Native balance the agent must keep to stay operational, in wei. Defaults to 0.002 ETH — roughly a day of routine transactions."}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/themis-core-2cav06/call":{"post":{"operationId":"call-themis-core-2cav06","summary":"themis-core-0x9007a5","description":"THEMIS — The agent with its own laws. Five-layer self-verifying verdict on any DeFi position. Callable by any agent via call_workflow. x402 payment. No API key. No SDK. No human. Repulsive Gravity: re","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["position_owner"],"properties":{"chain_id":{"type":"string","description":"Chain ID (e.g. 11155111 for Sepolia)"},"time_horizon":{"enum":["SHORT","MEDIUM","LONG"],"type":"string","description":"Caller time horizon"},"position_owner":{"type":"string","description":"Wallet address to evaluate (0x...)"},"risk_tolerance":{"enum":["CONSERVATIVE","STANDARD","AGGRESSIVE"],"type":"string","description":"Caller risk profile"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/themis-core-3fj3m8/call":{"post":{"operationId":"call-themis-core-3fj3m8","summary":"themis-core-0x9007a5","description":"THEMIS — The agent with its own laws. Five-layer self-verifying verdict on any DeFi position. Callable by any agent via call_workflow. x402 payment. No API key. No SDK. No human. Repulsive Gravity: re","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["position_owner"],"properties":{"chain_id":{"type":"string","description":"Chain ID (e.g. 11155111 for Sepolia)"},"time_horizon":{"enum":["SHORT","MEDIUM","LONG"],"type":"string","description":"Caller time horizon"},"position_owner":{"type":"string","description":"Wallet address to evaluate (0x...)"},"risk_tolerance":{"enum":["CONSERVATIVE","STANDARD","AGGRESSIVE"],"type":"string","description":"Caller risk profile"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/themis-core-sefy92/call":{"post":{"operationId":"call-themis-core-sefy92","summary":"themis-core-0x9007a5","description":"THEMIS — The agent with its own laws. Five-layer self-verifying verdict on any DeFi position. Callable by any agent via call_workflow. x402 payment. No API key. No SDK. No human. Repulsive Gravity: re","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["position_owner"],"properties":{"chain_id":{"type":"string","description":"Chain ID (e.g. 11155111 for Sepolia)"},"time_horizon":{"enum":["SHORT","MEDIUM","LONG"],"type":"string","description":"Caller time horizon"},"position_owner":{"type":"string","description":"Wallet address to evaluate (0x...)"},"risk_tolerance":{"enum":["CONSERVATIVE","STANDARD","AGGRESSIVE"],"type":"string","description":"Caller risk profile"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/themis-core-wnllwb/call":{"post":{"operationId":"call-themis-core-wnllwb","summary":"themis-core-0x9007a5","description":"THEMIS — The agent with its own laws. Five-layer self-verifying verdict on any DeFi position. Callable by any agent via call_workflow. x402 payment. No API key. No SDK. No human. Repulsive Gravity: re","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["position_owner"],"properties":{"chain_id":{"type":"string","description":"Chain ID (e.g. 11155111 for Sepolia)"},"time_horizon":{"enum":["SHORT","MEDIUM","LONG"],"type":"string","description":"Caller time horizon"},"position_owner":{"type":"string","description":"Wallet address to evaluate (0x...)"},"risk_tolerance":{"enum":["CONSERVATIVE","STANDARD","AGGRESSIVE"],"type":"string","description":"Caller risk profile"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/themis-core-sa1vo6/call":{"post":{"operationId":"call-themis-core-sa1vo6","summary":"themis-core-0x9007a5","description":"THEMIS — The agent with its own laws. Five-layer self-verifying verdict on any DeFi position. Callable by any agent via call_workflow. x402 payment. No API key. No SDK. No human. Repulsive Gravity: re","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["position_owner"],"properties":{"chain_id":{"type":"string","description":"Chain ID (e.g. 11155111 for Sepolia)"},"time_horizon":{"enum":["SHORT","MEDIUM","LONG"],"type":"string","description":"Caller time horizon"},"position_owner":{"type":"string","description":"Wallet address to evaluate (0x...)"},"risk_tolerance":{"enum":["CONSERVATIVE","STANDARD","AGGRESSIVE"],"type":"string","description":"Caller risk profile"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/themis-core-iz6qk1/call":{"post":{"operationId":"call-themis-core-iz6qk1","summary":"themis-core-0x9007a5","description":"THEMIS — The agent with its own laws. Five-layer self-verifying verdict on any DeFi position. Callable by any agent via call_workflow. x402 payment. No API key. No SDK. No human. Repulsive Gravity: re","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["position_owner"],"properties":{"chain_id":{"type":"string","description":"Chain ID (e.g. 11155111 for Sepolia)"},"time_horizon":{"enum":["SHORT","MEDIUM","LONG"],"type":"string","description":"Caller time horizon"},"position_owner":{"type":"string","description":"Wallet address to evaluate (0x...)"},"risk_tolerance":{"enum":["CONSERVATIVE","STANDARD","AGGRESSIVE"],"type":"string","description":"Caller risk profile"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/sixa-aave-tempo/call":{"post":{"operationId":"call-sixa-aave-tempo","summary":"Aave Health Factor Monitor","description":"Check your Aave v3 health factor hourly, and when it drops below the 1.5 safety threshold alert both Discord and email.","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","description":"EVM address of the Aave V3 borrower to check"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/defi-position-aggregator-base/call":{"post":{"operationId":"call-defi-position-aggregator-base","summary":"DeFi Position Aggregator: Wallet on Base","description":"Aggregates a wallet's DeFi positions across the major lending and yield venues KeeperHub supports on Base in a single call - Aave V3 (with health factor), Compound V3 USDC market, Morpho Steakhouse US","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["wallet"],"properties":{"wallet":{"type":"string","description":"Wallet address (0x...) to aggregate DeFi positions for. Must be a valid Base-compatible EVM address."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/defi-position-aggregator-ethereum/call":{"post":{"operationId":"call-defi-position-aggregator-ethereum","summary":"DeFi Position Aggregator: Wallet on Ethereum","description":"Aggregates a wallet's DeFi positions across the major lending and yield venues KeeperHub supports on Ethereum mainnet in a single call - Aave V3, Spark (DAI ecosystem), Compound V3 USDC, Lido stETH + ","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["wallet"],"properties":{"wallet":{"type":"string","description":"Wallet address (0x...) to aggregate DeFi positions for. Must be a valid Ethereum-compatible EVM address."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/stablecoin-yield-compare-base/call":{"post":{"operationId":"call-stablecoin-yield-compare-base","summary":"Stablecoin Yield Compare: USDC on Base","description":"Compares supply yield on USDC across the three blue-chip stablecoin venues KeeperHub supports on Base — Aave V3, Compound V3, and the Steakhouse USDC vault on Morpho. Manual / read-only; designed for ","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/claimlayer-paid-claimall/call":{"post":{"operationId":"call-claimlayer-paid-claimall","summary":"ClaimLayer Paid ClaimAll","description":"Repay your DeFi loan with a single USDC payment from Base. LendPay verifies the transaction and automatically completes the repayment—no bridging or switching chains needed.","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"txid":{"type":"string"},"targetChain":{"type":"string"},"paymentChain":{"type":"string"},"paymentAmount":{"type":"string"},"targetAddress":{"type":"string"},"paymentAddress":{"type":"string"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/evoyield-sepolia-usdc-rebalancer/call":{"post":{"operationId":"call-evoyield-sepolia-usdc-rebalancer","summary":"EvoYield Sepolia USDC Rebalancer","description":"Receives EvoYield allocation and rebalances exactly 60.1 Sepolia USDC across mock vaults.","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"call":{"type":"string"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/bridge-route-optimizer-usdc/call":{"post":{"operationId":"call-bridge-route-optimizer-usdc","summary":"Bridge Route Optimizer: USDC","description":"Cross-chain USDC bridge route ranking. Live Across + Bungee aggregator quotes plus a synthetic CCTP baseline (Circle 1:1 burn-and-mint), ranked by post-fee delivered amount and a cost+time score. Inpu","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"recipient":{"type":"string","description":"Optional destination address (0x...). Defaults to a standard test address; bridge quote won't be perfectly accurate for the actual caller until recipient is real."},"amount_raw":{"type":"string","description":"USDC amount in 6-decimal raw units (e.g. '1000000000' for $1000). Default '1000000' if missing."},"asset_symbol":{"enum":["USDC"],"type":"string","description":"Must be 'USDC' in v1."},"dst_chain_id":{"enum":["1","8453","42161","10","137"],"type":"string","description":"Destination chain ID. Must differ from src_chain_id."},"src_chain_id":{"enum":["1","8453","42161","10","137"],"type":"string","description":"Source chain ID. 1=Ethereum, 8453=Base, 42161=Arbitrum, 10=Optimism, 137=Polygon."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/pendle-pt-maturity-watcher-ethereum/call":{"post":{"operationId":"call-pendle-pt-maturity-watcher-ethereum","summary":"Pendle PT Maturity Watcher (Mainnet)","description":"Check the on-chain maturity status of a Pendle Principal Token (PT) holding for any wallet on Ethereum mainnet. Returns the market expiry timestamp + ISO date, days remaining until maturity, current P","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["wallet","marketAddress","ptAddress"],"properties":{"wallet":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","description":"Wallet address (0x...) holding the Pendle Principal Token. The PT balance is read for this address."},"alertDays":{"type":"number","default":7,"maximum":3650,"minimum":0,"description":"Threshold in days. The 'at_risk' flag returns true when days_remaining <= alertDays AND the PT is not yet expired. Default 7."},"ptAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","description":"Principal Token (PT) contract address (0x...) corresponding to the market. Used for expired-flag and balance reads. Example: PT-sUSDe-Aug2026 = 0x5a19fa369f2895dcd8d2cee62e4ceae58ef92bbb."},"marketAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","description":"Pendle market contract address (0x...) on Ethereum mainnet. Used for expiry lookup. Example: sUSDe Aug 2026 market = 0x177768caf9d0e036725a51d3f60d7e20f2d4d194."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/hyperliquid-vault-equity-reconciliation/call":{"post":{"operationId":"call-hyperliquid-vault-equity-reconciliation","summary":"Hyperliquid Vault Equity Reconciliation","description":"Reconciles a Hyperliquid vault's on-exchange account value (clearinghouse) against the sum of LP follower equity, reporting the delta, drift %, withdrawable balance, and open-position count. Defaults ","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/hyperliquid-vault-position-concentration/call":{"post":{"operationId":"call-hyperliquid-vault-position-concentration","summary":"Hyperliquid Vault Position Concentration","description":"Computes per-asset position concentration for a Hyperliquid account (vault or trader): notional per coin, % of total notional, unrealized PnL, and leverage. Flags when the largest position exceeds a 2","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/hyperliquid-vault-lp-statement/call":{"post":{"operationId":"call-hyperliquid-vault-lp-statement","summary":"Hyperliquid Vault LP Statement","description":"Generates a per-LP statement for a Hyperliquid vault: each follower's equity, all-time PnL, and days following, plus vault APR and leader commission. Defaults to the HLP (Hyperliquidity Provider) vaul","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/hyperliquid-vault-fee-accrual/call":{"post":{"operationId":"call-hyperliquid-vault-fee-accrual","summary":"Hyperliquid Vault Fee Accrual","description":"Estimates management/performance fee accrual for a Hyperliquid vault from its current AUM, annualized APR, and leader commission rate. Reports estimated annual profit, annual perf fee, and monthly acc","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/ethereum-wallet-discord-alert/call":{"post":{"operationId":"call-ethereum-wallet-discord-alert","summary":"Untitled 4","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"":{"type":"string"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/checked-transfer-2bet/call":{"post":{"operationId":"call-checked-transfer-2bet","summary":"checked-transfer-ms3z1ueq","description":"Checks your source wallet balance and sends a small ETH transfer to a destination wallet only if the balance exceeds a set threshold. You ne","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/approval-risk-rescan/call":{"post":{"operationId":"call-approval-risk-rescan","summary":"sentinel-rescan","description":"Weekly scheduled re-scan of the watched wallet. Reads the live on-chain allowance of the demo LINK approval on Sepolia. In the full design a notification action follows this read (requires KeeperHub P","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/portfolio-rebalance/call":{"post":{"operationId":"call-portfolio-rebalance","summary":"Portfolio Analyzer","description":"Snapshots Base holdings (ETH, USDC, WETH) and produces an audit-trailed rebalance plan","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["address"],"properties":{"address":{"type":"string"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/tempo-sign-and-hold-payment/call":{"post":{"operationId":"call-tempo-sign-and-hold-payment","summary":"(Tempo) - Showcase: Sign and hold payment","description":"Highlights the Sign & Hold Payment node. On demand, signs a 25.00 PathUSD payment to a recipient on Tempo Moderato (42431) and holds the signed transaction, scheduled to broadcast 5 minutes later, wit","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/token-risk-analysis/call":{"post":{"operationId":"call-token-risk-analysis","summary":"Token Risk Analyzer","description":"Snapshots wallet holdings on Base — ETH, USDC and WETH — with a full KeeperHub audit trail","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/yield-scanner/call":{"post":{"operationId":"call-yield-scanner","summary":"Yield Scanner","description":"Scans DeFi protocols for best yield opportunities","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["asset","address"],"properties":{"asset":{"type":"string"},"address":{"type":"string"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/tempo-swap-pathusd-to-alphausd/call":{"post":{"operationId":"call-tempo-swap-pathusd-to-alphausd","summary":"(Tempo) - Showcase: Swap treasury PathUSD to AlphaUSD","description":"Highlights the Swap Stablecoins node. On-demand swap of 500 PathUSD for AlphaUSD on the Tempo Moderato testnet (42431) via the enshrined DEX, with a 50 bps slippage floor. Free-tier nodes only.","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/tempo-large-payment-alert/call":{"post":{"operationId":"call-tempo-large-payment-alert","summary":"(Tempo) - Showcase: Large payment alert","description":"Highlights the Transfer trigger. Watches PathUSD payments to the deposit wallet on Tempo Moderato (42431), memo prefix INV-14, and posts a Discord alert when a single payment exceeds 100 PathUSD. Free","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/tempo-monthly-pay-run/call":{"post":{"operationId":"call-tempo-monthly-pay-run","summary":"(Tempo) - Showcase: Monthly pay run","description":"Highlights the Batch Payout node. On-demand atomic batch payout of 400.50 AlphaUSD across three invoice payments on Tempo Moderato (42431), with PAYRUN-2026-07 as the shared pay-run memo. Free-tier no","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/tempo-forward-invoice-payments/call":{"post":{"operationId":"call-tempo-forward-invoice-payments","summary":"(Tempo) - Showcase: Forward invoice payments","description":"Highlights the Transfer with Memo node. On each PathUSD payment to the deposit wallet with memo prefix INV-14, sends 25.00 PathUSD to a forwarding address on Tempo Moderato (42431), reusing the incomi","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/assay-verify/call":{"post":{"operationId":"call-assay-verify","summary":"Assay — Verify an Agent Commitment","description":"Independent verification for onchain agents. Given an intent hash, reports whether the agent committed to that action onchain BEFORE it executed, and returns the verifier's full public verdict record ","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["intentHash","verifier"],"properties":{"verifier":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Address of the verifier whose public verdict record to return."},"intentHash":{"type":"string","pattern":"^0x[0-9a-fA-F]{64}$","description":"The canonical hash of the intent to check, as committed to IntentRegistry. Produce it with the assay_hash_intent MCP tool."}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/checked-transfer-ndzh/call":{"post":{"operationId":"call-checked-transfer-ndzh","summary":"checked-transfer-msaxn12e","description":"Checks your source wallet balance and sends a small ETH transfer to a destination wallet only if the balance exceeds a set threshold. You ne","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/checked-transfer-rk5t/call":{"post":{"operationId":"call-checked-transfer-rk5t","summary":"checked-transfer-msb2r77m","description":"Checks your source wallet balance and sends a small ETH transfer to a destination wallet only if the balance exceeds a set threshold. You ne","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/checked-transfer-qjcm/call":{"post":{"operationId":"call-checked-transfer-qjcm","summary":"checked-transfer-msb2q6ie","description":"Checks your source wallet balance and sends a small ETH transfer to a destination wallet only if the balance exceeds a set threshold. You ne","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/checked-transfer-bmgc/call":{"post":{"operationId":"call-checked-transfer-bmgc","summary":"checked-transfer-msb3b9s6","description":"Checks your source wallet balance and sends a small ETH transfer to a destination wallet only if the balance exceeds a set threshold. You ne","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/checked-transfer-6hea/call":{"post":{"operationId":"call-checked-transfer-6hea","summary":"checked-transfer-msb362eu","description":"Checks your source wallet balance and only sends ETH if it exceeds a set threshold. You need: source wallet address, destination wallet addr","x-payment-info":{"price":{"mode":"fixed","amount":"0.05","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/tab-anchor-verifier/call":{"post":{"operationId":"call-tab-anchor-verifier","summary":"Tab — Anchor Verifier","description":"Reads the on-chain anchor count for an agent audit chain.","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["agentId"],"properties":{"agentId":{"type":"string","description":"Agent identifier (bytes32 hex) whose anchor count to read"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/nexus-guardian-hf-read/call":{"post":{"operationId":"call-nexus-guardian-hf-read","summary":"NexusAgent HF Read","description":"Read-only Aave V3 health factor snapshot on Base Sepolia. Callable by external agents via marketplace.","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["walletAddress"],"properties":{"walletAddress":{"type":"string","description":"EVM address to read Aave V3 health factor for on Base Sepolia"}}}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/ripcord-risk-score/call":{"post":{"operationId":"call-ripcord-risk-score","summary":"Ripcord WF-3 risk-score","description":"Raw Aave V3 liquidation-risk figures for any Base address: health factor, collateral, debt, LT/LTV — read fresh on-chain. Bands and score are computed locally from them, not returned inline. From the ","x-payment-info":{"price":{"mode":"fixed","amount":"0.02","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["address"],"properties":{"address":{"type":"string","default":"0x30C8A36e99f0708c3e3301b1Ed99cf418BDCf27a","pattern":"^0x[a-fA-F0-9]{40}$","description":"Base address whose Aave V3 position to score (0x + 40 hex chars)."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}},"/api/mcp/workflows/gasguard-aave-hf-check/call":{"post":{"operationId":"call-gasguard-aave-hf-check","summary":"Bulwark: hf-check","description":"Health factor and liquidation risk for any Aave V3 position on Ethereum mainnet. Returns collateral, debt, health factor and liquidation threshold, so a calling agent can judge whether a position need","x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453"}},{"mpp":{"method":"tempo","intent":"charge","currency":"USDC"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["wallet"],"properties":{"wallet":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","description":"Address of the Aave V3 position to inspect, 0x-prefixed, on Ethereum mainnet."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Workflow execution started","headers":{"RateLimit-Limit":{"description":"Requests permitted in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Legacy spelling of RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Legacy spelling of RateLimit-Remaining.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Legacy spelling. Unix epoch seconds at which the window resets - an absolute time, not a delta.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string"},"status":{"type":"string","const":"running"}}}}}},"400":{"$ref":"#/components/responses/InvalidInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment Required. The body carries the payment challenge described in x-payment-info; settle it and replay the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"$ref":"#/components/responses/InsufficientScope"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"parameters":[{"name":"KeeperHub-Version","in":"header","required":false,"description":"Pins the request to a major version of the REST surface. Omit to use the current version. A breaking change ships as a new version rather than in place, so a pinned caller keeps its behaviour.","schema":{"type":"string","enum":["1"],"default":"1"}}]}}}}