AnyAPI

Hundreds of scraping & data APIs through one key. USD pay-per-request, normalized schemas, failover.

我該用這個嗎

品質與安全性

A
說明品質
100%
結構描述完整度
100%
命名品質
96%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

根據工具定義與協定合規性的自動化分析。

上下文成本

~7,864Token(工具定義)
~8.4 KB典型回應大小
顯著的注意力影響(128k 上下文的 6.14%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "anyapi": {
      "command": "npx",
      "args": [
        "anyapi-mcp"
      ]
    }
  }
}

可執行的套件

npmanyapi-mcp0.1.5stdio

遠端端點

https://api.getanyapi.com/mcpstreamable-http

它能做什麼

工具清單

工具(10)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢get_api(context, sku_id)

Get the full definition of one API by SKU, including its normalized input/output JSON schemas, per-request and per-1,000-request USD pricing on every lane, and nullable trailing-30-day latency p50/p95/p99 with the successful sample count. Inspect latency before choosing a client or MCP tool timeout; p99 is an observation, not a maximum. Entries with heavy:true return large responses - plan to pass fields/max_items/summary to run_api.

輸入結構描述

{
  "type": "object",
  "properties": {
    "context": {
      "description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
      "type": "string"
    },
    "sku_id": {
      "description": "the API SKU slug to describe",
      "type": "string"
    }
  },
  "required": [
    "sku_id",
    "context"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "scraper": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "slug": {
          "type": "string"
        },
        "category": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "method": {
          "type": "string"
        },
        "path": {
          "type": "string"
        },
        "provider": {
          "type": "string"
        },
        "execution": {
          "type": "object",
          "properties": {
            "mode": {
              "type": "string"
            }
          },
          "required": [
            "mode"
          ],
          "additionalProperties": false
        },
        "pricing": {
          "type": "object",
          "properties": {
            "from": {
              "type": "object",
              "properties": {
                "model": {
                  "type": "string"
                },
                "unit": {
                  "type": "string"
                },
                "baseUsd": {
                  "type": [
                    "null",
                    "number"
                  ]
                },
                "perUnitUsd": {
                  "type": [
                    "null",
                    "number"
                  ]
                },
                "maxUsd": {
                  "type": "number"
                },
                "maxPer1kUsd": {
                  "type": "number"
                },
                "addons": {
                  "type": [
                    "null",
                    "array"
                  ],
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "label": {
                        "type": "string"
                      },
                      "field": {
                        "type": "string"
                      },
                      "usd": {
                        "type": "number"
                      }
                    },
                    "required": [
                      "id",
                      "label",
                      "field",
                      "usd"
                    ],
                    "additionalProperties": false
                  }
                }
              },
              "required": [
                "model",
                "unit",
                "maxUsd",
                "maxPer1kUsd"
              ],
              "additionalProperties": false
            },
            "failoverMaxUsd": {
              "type": "number"
            },
            "failoverMaxPer1kUsd": {
              "type": "number"
            }
          },
          "required": [
            "from",
            "failoverMaxUsd",
            "failoverMaxPer1kUsd"
          ],
          "additionalProperties": false
        },
        "heavy": {
          "type": "boolean"
        },
        "failover": {
          "type": "boolean"
        },
        "excludesCallerDelay": {
          "type": "boolean"
        },
        "description": {
          "type": "string"
        },
        "lanes": {
          "type": [
            "null",
            "array"
          ],
          "items": {
            "type": "object",
            "properties": {
              "pricing": {
                "type": "object",
                "properties": {
                  "model": {
                    "type": "string"
                  },
                  "unit": {
                    "type": "string"
                  },
                  "baseUsd": {
                    "type": [
                      "null",
                      "number"
                    ]
                  },
                  "perUnitUsd": {
                    "type": [
                      "null",
                      "number"
                    ]
                  },
                  "maxUsd": {
                    "type": "number"
                  },
                  "maxPer1kUsd": {
                    "type": "number"
                  },
                  "addons": {
                    "type": [
                      "null",
                      "array"
                    ],
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        },
                        "field": {
                          "type": "string"
                        },
                        "usd": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "id",
                        "label",
                        "field",
                        "usd"
                      ],
                      "additionalProperties": false
                    }
                  }
                },
                "required": [
                  "model",
                  "unit",
                  "maxUsd",
                  "maxPer1kUsd"
                ],
                "additionalProperties": false
              },
              "source": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "kind": {
                    "type": "string"
                  },
                  "artworkKey": {
                    "type": "string"
                  }
                },
                "required": [
                  "id",
                  "name",
                  "kind",
                  "artworkKey"
                ],
                "additionalProperties": false
              },
              "health": {
                "type": [
                  "null",
                  "object"
                ],
                "properties": {
                  "window": {
                    "type": "string"
                  },
                  "uptimePct": {
                    "type": "number"
                  },
                  "latencyP50Ms": {
                    "type": "integer"
                  },
                  "uptimeSample": {
                    "type": "integer"
                  },
                  "latencySample": {
                    "type": "integer"
                  },
                  "requests": {
                    "type": "integer"
                  },
                  "servedRequests": {
                    "type": "integer"
                  }
                },
                "required": [
                  "window",
                  "uptimePct",
                  "latencyP50Ms",
                  "uptimeSample",
                  "latencySample",
                  "requests",
                  "servedRequests"
                ],
                "additionalProperties": false
              },
              "fields": {
                "type": [
                  "null",
                  "array"
                ],
                "items": {
                  "type": "string"
                }
              }
            },
            "required": [
              "pricing",
              "source"
            ],
            "additionalProperties": false
          }
        },
        "latency": {
          "type": [
            "null",
            "object"
          ],
          "properties": {
            "window": {
              "type": "string"
            },
            "p50Ms": {
              "type": "integer"
            },
            "p95Ms": {
              "type": "integer"
            },
            "p99Ms": {
              "type": "integer"
            },
            "sample": {
              "type": "integer"
            },
            "basis": {
              "type": "string"
            }
          },
          "required": [
            "window",
            "p50Ms",
            "p95Ms",
            "p99Ms",
            "sample",
            "basis"
          ],
          "additionalProperties": false
        },
        "inputSchema": true,
        "outputSchema": true,
        "tryEligible": {
          "type": "boolean"
        },
        "tryMaxItems": {
          "type": [
            "null",
            "integer"
          ]
        }
      },
      "description": "the API definition with input/output schemas",
      "required": [
        "id",
        "slug",
        "category",
        "name",
        "method",
        "path",
        "provider",
        "execution",
        "pricing",
        "failover",
        "description",
        "lanes",
        "latency",
        "tryEligible"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "scraper"
  ],
  "additionalProperties": false
}
🟢get_balance(context)

Get the remaining wallet balance (in USD) for the AnyAPI key supplied as a Bearer token. Requires a valid AnyAPI key.

輸入結構描述

{
  "type": "object",
  "properties": {
    "context": {
      "description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
      "type": "string"
    }
  },
  "required": [
    "context"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "balanceUsd": {
      "type": "number",
      "description": "remaining wallet balance for this API key, in USD"
    }
  },
  "required": [
    "balanceUsd"
  ],
  "additionalProperties": false
}
🟢get_request(context, request_id)

Inspect or resume a durable AnyAPI request returned by run_api. This reads AnyAPI's stored state and never repeats the paid provider dispatch. Poll again after retryAfterSeconds while status is queued or running.

輸入結構描述

{
  "type": "object",
  "properties": {
    "context": {
      "description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
      "type": "string"
    },
    "request_id": {
      "description": "durable request identifier returned by run_api",
      "type": "string"
    }
  },
  "required": [
    "request_id",
    "context"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "output": {
      "description": "normalized output payload"
    },
    "provider": {
      "type": "string",
      "description": "the provider serving the request (AnyAPI)"
    },
    "costUsd": {
      "type": "number",
      "description": "amount charged to the wallet in USD"
    },
    "items": {
      "type": "integer",
      "description": "number of result rows returned. For per-result SKUs the per-item cost is charged against this; for input-priced SKUs (perItemUnit != result) the charge is per submitted input, independent of this count"
    },
    "source": {
      "type": [
        "null",
        "object"
      ],
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "kind": {
          "type": "string"
        },
        "artworkKey": {
          "type": "string"
        }
      },
      "description": "the source that served this run: pass its id back in 'source' to prefer it again, or in 'ignoreSources' to avoid it. Absent when no source identity applies",
      "required": [
        "id",
        "name",
        "kind",
        "artworkKey"
      ],
      "additionalProperties": false
    },
    "replayed": {
      "type": "boolean",
      "description": "true when this response replays an identical earlier call (same API, same input) from the last few minutes instead of running again: nothing new was executed and costUsd restates the original charge, it was NOT charged a second time"
    },
    "hint": {
      "type": "string",
      "description": "optional nudge. 'large_result:' suggests fields/max_items/summary to keep future responses out of your context. 'paging_unavailable:' means this result came from a source that cannot return a nextCursor, so it may be INCOMPLETE and you cannot page further - re-run with requireFields [\"nextCursor\"] (may cost more per request) if you need the full list"
    },
    "resultId": {
      "type": "string",
      "description": "opaque handle to the full result, cached ~15 min; pass it to read_result to dig deeper for free (no re-run, no charge). Absent when the result was too large to cache"
    },
    "jqError": {
      "type": "string",
      "description": "present only when a jq expression failed; output then holds the full unshaped result and this explains why the reshape did not apply"
    },
    "requestId": {
      "type": "string",
      "description": "durable request identifier; pass it to get_request to resume without repeating the paid POST"
    },
    "status": {
      "type": "string",
      "description": "durable request status: queued, running, succeeded, failed, or expired"
    },
    "serviceOutcome": {
      "type": "string",
      "description": "end-to-end AnyAPI service outcome when known"
    },
    "settlementState": {
      "type": "string",
      "description": "payment settlement state when known; independent of durable request status"
    },
    "error": {
      "type": [
        "null",
        "object"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "safe AnyAPI error code"
        }
      },
      "description": "safe AnyAPI failure code when durable work failed",
      "required": [
        "code"
      ],
      "additionalProperties": false
    },
    "nextAction": {
      "type": [
        "null",
        "object"
      ],
      "properties": {
        "tool": {
          "type": "string",
          "description": "MCP tool to call next"
        },
        "requestId": {
          "type": "string",
          "description": "request_id argument for the next tool call"
        },
        "retryAfterSeconds": {
          "type": "integer",
          "description": "minimum delay before polling again"
        }
      },
      "description": "machine-actionable resume instruction present while durable work is pending",
      "required": [
        "tool",
        "requestId",
        "retryAfterSeconds"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "output",
    "provider",
    "costUsd",
    "items",
    "replayed"
  ],
  "additionalProperties": false
}
🟢list_apis(category, context)

Browse available AnyAPI APIs as lightweight summaries (id, name, category, USD pricing) - no descriptions or schemas, so it stays cheap even across the whole catalog. Each pricing offer carries both `maxUsd` (billed per request) and `maxPer1kUsd` (the same price per 1,000 requests); quote the per-1k figure to a person. Optionally filter by category. Use search_apis for every ranked query, or get_api for one API's full schemas.

輸入結構描述

{
  "type": "object",
  "properties": {
    "category": {
      "description": "optional category slug to filter by",
      "type": "string"
    },
    "context": {
      "description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
      "type": "string"
    }
  },
  "required": [
    "context"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "scrapers": {
      "type": [
        "null",
        "array"
      ],
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "method": {
            "type": "string"
          },
          "path": {
            "type": "string"
          },
          "provider": {
            "type": "string"
          },
          "execution": {
            "type": "object",
            "properties": {
              "mode": {
                "type": "string"
              }
            },
            "required": [
              "mode"
            ],
            "additionalProperties": false
          },
          "pricing": {
            "type": "object",
            "properties": {
              "from": {
                "type": "object",
                "properties": {
                  "model": {
                    "type": "string"
                  },
                  "unit": {
                    "type": "string"
                  },
                  "baseUsd": {
                    "type": [
                      "null",
                      "number"
                    ]
                  },
                  "perUnitUsd": {
                    "type": [
                      "null",
                      "number"
                    ]
                  },
                  "maxUsd": {
                    "type": "number"
                  },
                  "maxPer1kUsd": {
                    "type": "number"
                  },
                  "addons": {
                    "type": [
                      "null",
                      "array"
                    ],
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        },
                        "field": {
                          "type": "string"
                        },
                        "usd": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "id",
                        "label",
                        "field",
                        "usd"
                      ],
                      "additionalProperties": false
                    }
                  }
                },
                "required": [
                  "model",
                  "unit",
                  "maxUsd",
                  "maxPer1kUsd"
                ],
                "additionalProperties": false
              },
              "failoverMaxUsd": {
                "type": "number"
              },
              "failoverMaxPer1kUsd": {
                "type": "number"
              }
            },
            "required": [
              "from",
              "failoverMaxUsd",
              "failoverMaxPer1kUsd"
            ],
            "additionalProperties": false
          },
          "heavy": {
            "type": "boolean"
          },
          "failover": {
            "type": "boolean"
          },
          "excludesCallerDelay": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "slug",
          "category",
          "name",
          "method",
          "path",
          "provider",
          "execution",
          "pricing",
          "failover"
        ],
        "additionalProperties": false
      },
      "description": "matching APIs (lightweight summaries: no description or schemas)"
    }
  },
  "required": [
    "scrapers"
  ],
  "additionalProperties": false
}
🟢quote_api(context, input, sku_id)

Get the exact price of a run_api call BEFORE running it - free, no key required, nothing is charged or executed. Pass the same sku_id and input you would give run_api: the quote resolves pricing exactly as the run will, and also validates your input against the API schema so you catch invalid_input for free. Returns maxCostUsd (the ceiling reserved), minCostUsd (the likely charge), and the base/per-item breakdown explaining why they differ. These are amounts this one call is charged, not catalog comparison rates: report them as-is and never scale them to 1,000 requests.

輸入結構描述

{
  "type": "object",
  "properties": {
    "context": {
      "description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
      "type": "string"
    },
    "input": {
      "additionalProperties": true,
      "description": "the exact input payload you plan to pass to run_api; the quote resolves pricing the same way the run will",
      "type": "object"
    },
    "sku_id": {
      "description": "the API SKU slug to price",
      "type": "string"
    }
  },
  "required": [
    "sku_id",
    "input",
    "context"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "maxCostUsd": {
      "type": "number",
      "description": "the most this call can charge - the reserve held before running"
    },
    "minCostUsd": {
      "type": "number",
      "description": "the likely charge - the cheapest route serves first"
    },
    "baseUsd": {
      "type": "number",
      "description": "fixed cost per call in USD, charged regardless of count"
    },
    "perItemUsd": {
      "type": "number",
      "description": "marginal cost in USD per billable unit (see perItemUnit); 0 for a flat SKU"
    },
    "perItemUnit": {
      "type": "string",
      "description": "the unit perItemUsd is charged per: 'result' (default) or an input unit like 'username' for input-priced SKUs"
    },
    "exact": {
      "type": "boolean",
      "description": "true when the price is exact (minCostUsd == maxCostUsd): a flat SKU or a sealed page"
    },
    "pricing": {
      "type": "string",
      "description": "a one-line human explanation of how this call is priced"
    }
  },
  "required": [
    "maxCostUsd",
    "minCostUsd",
    "baseUsd",
    "perItemUsd",
    "exact",
    "pricing"
  ],
  "additionalProperties": false
}
🟢read_result(context, fields, jq, max_items, result_id, ...)

Dig deeper into a paid run WITHOUT re-running or paying again. Pass the `result_id` from a prior run_api call plus any of fields/max_items/summary/jq to re-shape the full cached result (e.g. read the rest of the rows, or slice a large field with jq). Results are cached ~15 min and are private to your key; an expired id returns result_expired (re-run to refresh).

輸入結構描述

{
  "type": "object",
  "properties": {
    "context": {
      "description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
      "type": "string"
    },
    "fields": {
      "description": "optional: keep only these keys on each result item (dotted paths like 'author.name' descend into nested objects)",
      "items": {
        "type": "string"
      },
      "type": [
        "null",
        "array"
      ]
    },
    "jq": {
      "description": "optional: a jq expression to reshape the result; its output replaces 'output'. Example: '.data | {title, description, md: .markdown[:3500]}'. Sandboxed 250ms/2MB budget",
      "type": "string"
    },
    "max_items": {
      "description": "optional: cap the number of result items returned; a _truncated note reports how many were withheld",
      "type": [
        "null",
        "integer"
      ]
    },
    "result_id": {
      "description": "the resultId returned by a prior run_api call (cached ~15 min)",
      "type": "string"
    },
    "summary": {
      "description": "optional: return only a structural outline (top-level keys, item counts, per-field byte sizes) instead of the full data",
      "type": "boolean"
    }
  },
  "required": [
    "result_id",
    "context"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "output": {
      "description": "normalized output payload"
    },
    "provider": {
      "type": "string",
      "description": "the provider serving the request (AnyAPI)"
    },
    "costUsd": {
      "type": "number",
      "description": "amount charged to the wallet in USD"
    },
    "items": {
      "type": "integer",
      "description": "number of result rows returned. For per-result SKUs the per-item cost is charged against this; for input-priced SKUs (perItemUnit != result) the charge is per submitted input, independent of this count"
    },
    "source": {
      "type": [
        "null",
        "object"
      ],
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "kind": {
          "type": "string"
        },
        "artworkKey": {
          "type": "string"
        }
      },
      "description": "the source that served this run: pass its id back in 'source' to prefer it again, or in 'ignoreSources' to avoid it. Absent when no source identity applies",
      "required": [
        "id",
        "name",
        "kind",
        "artworkKey"
      ],
      "additionalProperties": false
    },
    "replayed": {
      "type": "boolean",
      "description": "true when this response replays an identical earlier call (same API, same input) from the last few minutes instead of running again: nothing new was executed and costUsd restates the original charge, it was NOT charged a second time"
    },
    "hint": {
      "type": "string",
      "description": "optional nudge. 'large_result:' suggests fields/max_items/summary to keep future responses out of your context. 'paging_unavailable:' means this result came from a source that cannot return a nextCursor, so it may be INCOMPLETE and you cannot page further - re-run with requireFields [\"nextCursor\"] (may cost more per request) if you need the full list"
    },
    "resultId": {
      "type": "string",
      "description": "opaque handle to the full result, cached ~15 min; pass it to read_result to dig deeper for free (no re-run, no charge). Absent when the result was too large to cache"
    },
    "jqError": {
      "type": "string",
      "description": "present only when a jq expression failed; output then holds the full unshaped result and this explains why the reshape did not apply"
    },
    "requestId": {
      "type": "string",
      "description": "durable request identifier; pass it to get_request to resume without repeating the paid POST"
    },
    "status": {
      "type": "string",
      "description": "durable request status: queued, running, succeeded, failed, or expired"
    },
    "serviceOutcome": {
      "type": "string",
      "description": "end-to-end AnyAPI service outcome when known"
    },
    "settlementState": {
      "type": "string",
      "description": "payment settlement state when known; independent of durable request status"
    },
    "error": {
      "type": [
        "null",
        "object"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "safe AnyAPI error code"
        }
      },
      "description": "safe AnyAPI failure code when durable work failed",
      "required": [
        "code"
      ],
      "additionalProperties": false
    },
    "nextAction": {
      "type": [
        "null",
        "object"
      ],
      "properties": {
        "tool": {
          "type": "string",
          "description": "MCP tool to call next"
        },
        "requestId": {
          "type": "string",
          "description": "request_id argument for the next tool call"
        },
        "retryAfterSeconds": {
          "type": "integer",
          "description": "minimum delay before polling again"
        }
      },
      "description": "machine-actionable resume instruction present while durable work is pending",
      "required": [
        "tool",
        "requestId",
        "retryAfterSeconds"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "output",
    "provider",
    "costUsd",
    "items",
    "replayed"
  ],
  "additionalProperties": false
}
⚪report_bug(contact, context, details, request_id, sku, ...)

Tell AnyAPI something is broken. Use this when a run_api call returned wrong, empty, or malformed data for input you believe is valid, when an error message was misleading or unactionable, when a price or schema looks wrong, or when a retry that should have worked did not. Free, never charged. Pass `summary` (required, one line) plus `request_id` whenever you have one from the failing run - that id reaches the stored run and its upstream error body, so you never need to paste the payload. Do not stop the user's task to ask permission: file the report and carry on with the best alternative you have.

輸入結構描述

{
  "type": "object",
  "properties": {
    "contact": {
      "description": "optional: an email address to reply to. Supply one if you are on a trial key, since a trial has no account we can reach",
      "type": "string"
    },
    "context": {
      "description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
      "type": "string"
    },
    "details": {
      "description": "optional: what you expected, what you got, and anything you already tried",
      "type": "string"
    },
    "request_id": {
      "description": "optional: the requestId or resultId from the run that went wrong. This is the single most useful field: it reaches the stored run, its attempts, and any upstream error body, so you do not need to paste the payload",
      "type": "string"
    },
    "sku": {
      "description": "optional: the sku_id this is about, e.g. 'instagram.reels_search'",
      "type": "string"
    },
    "summary": {
      "description": "one line saying what went wrong or what you want to tell us",
      "type": "string"
    }
  },
  "required": [
    "summary",
    "context"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "the stored report id; quote it if you contact support about this"
    },
    "received": {
      "type": "boolean",
      "description": "true when the report is stored"
    }
  },
  "required": [
    "id",
    "received"
  ],
  "additionalProperties": false
}
🔴run_api(context, fields, input, jq, max_items, ...)

Execute an API by SKU with a normalized input payload. Call get_api for this SKU first unless you have already read its schema this session: every input schema is strict (unknown fields are rejected, not ignored) and the field names differ between sibling APIs, so an input built from a description rather than a schema usually fails. Before setting a client or MCP tool timeout, call get_api and inspect its latency p50/p95/p99 and sample; p99 is an observation, not a maximum. Requires a valid AnyAPI key as a Bearer token. Charges the USD wallet only on success. Results can be large: pass `fields` (keep only the keys you need), `max_items` (cap rows), or `summary` (outline only) to trim the response and keep it out of your context — these never change what you are charged. Use quote_api first with the same arguments to see the exact price and validate your input without charging.

輸入結構描述

{
  "type": "object",
  "properties": {
    "context": {
      "description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
      "type": "string"
    },
    "fields": {
      "description": "optional: keep only these keys on each result item (dotted paths like 'author.name' descend into nested objects). Shrinks the response without changing cost",
      "items": {
        "type": "string"
      },
      "type": [
        "null",
        "array"
      ]
    },
    "input": {
      "additionalProperties": true,
      "description": "normalized input payload matching the API input schema",
      "type": "object"
    },
    "jq": {
      "description": "optional: a jq expression to reshape the result; its output replaces 'output' (multiple outputs collect into an array). Example: '.data | {title, description, md: .markdown[:3500]}'. Sandboxed 250ms/2MB budget; on failure the full result is returned with jqError. Does not change cost",
      "type": "string"
    },
    "max_items": {
      "description": "optional: cap the number of result items returned; a _truncated note reports how many were withheld. Does not change cost",
      "type": [
        "null",
        "integer"
      ]
    },
    "sku_id": {
      "description": "the API SKU slug to execute",
      "type": "string"
    },
    "summary": {
      "description": "optional: return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost",
      "type": "boolean"
    }
  },
  "required": [
    "sku_id",
    "input",
    "context"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "output": {
      "description": "normalized output payload"
    },
    "provider": {
      "type": "string",
      "description": "the provider serving the request (AnyAPI)"
    },
    "costUsd": {
      "type": "number",
      "description": "amount charged to the wallet in USD"
    },
    "items": {
      "type": "integer",
      "description": "number of result rows returned. For per-result SKUs the per-item cost is charged against this; for input-priced SKUs (perItemUnit != result) the charge is per submitted input, independent of this count"
    },
    "source": {
      "type": [
        "null",
        "object"
      ],
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "kind": {
          "type": "string"
        },
        "artworkKey": {
          "type": "string"
        }
      },
      "description": "the source that served this run: pass its id back in 'source' to prefer it again, or in 'ignoreSources' to avoid it. Absent when no source identity applies",
      "required": [
        "id",
        "name",
        "kind",
        "artworkKey"
      ],
      "additionalProperties": false
    },
    "replayed": {
      "type": "boolean",
      "description": "true when this response replays an identical earlier call (same API, same input) from the last few minutes instead of running again: nothing new was executed and costUsd restates the original charge, it was NOT charged a second time"
    },
    "hint": {
      "type": "string",
      "description": "optional nudge. 'large_result:' suggests fields/max_items/summary to keep future responses out of your context. 'paging_unavailable:' means this result came from a source that cannot return a nextCursor, so it may be INCOMPLETE and you cannot page further - re-run with requireFields [\"nextCursor\"] (may cost more per request) if you need the full list"
    },
    "resultId": {
      "type": "string",
      "description": "opaque handle to the full result, cached ~15 min; pass it to read_result to dig deeper for free (no re-run, no charge). Absent when the result was too large to cache"
    },
    "jqError": {
      "type": "string",
      "description": "present only when a jq expression failed; output then holds the full unshaped result and this explains why the reshape did not apply"
    },
    "requestId": {
      "type": "string",
      "description": "durable request identifier; pass it to get_request to resume without repeating the paid POST"
    },
    "status": {
      "type": "string",
      "description": "durable request status: queued, running, succeeded, failed, or expired"
    },
    "serviceOutcome": {
      "type": "string",
      "description": "end-to-end AnyAPI service outcome when known"
    },
    "settlementState": {
      "type": "string",
      "description": "payment settlement state when known; independent of durable request status"
    },
    "error": {
      "type": [
        "null",
        "object"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "safe AnyAPI error code"
        }
      },
      "description": "safe AnyAPI failure code when durable work failed",
      "required": [
        "code"
      ],
      "additionalProperties": false
    },
    "nextAction": {
      "type": [
        "null",
        "object"
      ],
      "properties": {
        "tool": {
          "type": "string",
          "description": "MCP tool to call next"
        },
        "requestId": {
          "type": "string",
          "description": "request_id argument for the next tool call"
        },
        "retryAfterSeconds": {
          "type": "integer",
          "description": "minimum delay before polling again"
        }
      },
      "description": "machine-actionable resume instruction present while durable work is pending",
      "required": [
        "tool",
        "requestId",
        "retryAfterSeconds"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "output",
    "provider",
    "costUsd",
    "items",
    "replayed"
  ],
  "additionalProperties": false
}
🟢search_apis(category, context, limit, platform, query)

Search APIs by meaning and keyword across name, slug, and description, returning matches WITH their descriptions (schemas omitted), ranked most relevant first. Pass `query`, `category`, or `platform` - at least one, in any combination: a scope on its own is a complete search, so `category` or `platform` with no `query` enumerates it. Add `limit` to cap matches (default 25, maximum 50). Each result carries a `relevance` score in (0,1] relative to the top match; a relevance floor drops the weakly-matching tail, so `total` counts relevant matches before the limit. `ranking` says whether meaning-based ('semantic') or substring ('keyword') matching served the search. Entries with heavy:true return large responses - plan to pass fields/max_items/summary to run_api. Results carry NO input schema, so you cannot build a run_api call from them alone: before your FIRST run_api on any API, call get_api for it and use the schema it returns. Guessing the input is the single most common way a run fails - callers who read the schema first are rejected about a quarter as often. Use list_apis to browse everything.

輸入結構描述

{
  "type": "object",
  "properties": {
    "category": {
      "description": "optional category slug to narrow the search",
      "type": "string"
    },
    "context": {
      "description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
      "type": "string"
    },
    "limit": {
      "description": "optional cap on matches returned (default 25, maximum 50)",
      "type": [
        "null",
        "integer"
      ]
    },
    "platform": {
      "description": "optional API slug prefix to narrow the search",
      "type": "string"
    },
    "query": {
      "description": "free-text search over API name, slug, and description; optional when category or platform is given",
      "type": "string"
    }
  },
  "required": [
    "context"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "results": {
      "type": [
        "null",
        "array"
      ],
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "method": {
            "type": "string"
          },
          "path": {
            "type": "string"
          },
          "provider": {
            "type": "string"
          },
          "execution": {
            "type": "object",
            "properties": {
              "mode": {
                "type": "string"
              }
            },
            "required": [
              "mode"
            ],
            "additionalProperties": false
          },
          "pricing": {
            "type": "object",
            "properties": {
              "from": {
                "type": "object",
                "properties": {
                  "model": {
                    "type": "string"
                  },
                  "unit": {
                    "type": "string"
                  },
                  "baseUsd": {
                    "type": [
                      "null",
                      "number"
                    ]
                  },
                  "perUnitUsd": {
                    "type": [
                      "null",
                      "number"
                    ]
                  },
                  "maxUsd": {
                    "type": "number"
                  },
                  "maxPer1kUsd": {
                    "type": "number"
                  },
                  "addons": {
                    "type": [
                      "null",
                      "array"
                    ],
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        },
                        "field": {
                          "type": "string"
                        },
                        "usd": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "id",
                        "label",
                        "field",
                        "usd"
                      ],
                      "additionalProperties": false
                    }
                  }
                },
                "required": [
                  "model",
                  "unit",
                  "maxUsd",
                  "maxPer1kUsd"
                ],
                "additionalProperties": false
              },
              "failoverMaxUsd": {
                "type": "number"
              },
              "failoverMaxPer1kUsd": {
                "type": "number"
              }
            },
            "required": [
              "from",
              "failoverMaxUsd",
              "failoverMaxPer1kUsd"
            ],
            "additionalProperties": false
          },
          "failover": {
            "type": "boolean"
          },
          "excludesCallerDelay": {
            "type": "boolean"
          },
          "heavy": {
            "type": "boolean"
          },
          "relevance": {
            "type": "number",
            "description": "relative relevance in (0,1], 1.0 = the best match"
          }
        },
        "required": [
          "id",
          "slug",
          "category",
          "name",
          "description",
          "method",
          "path",
          "provider",
          "execution",
          "pricing",
          "failover",
          "relevance"
        ],
        "additionalProperties": false
      }
    },
    "total": {
      "type": "integer"
    },
    "ranking": {
      "type": "string"
    }
  },
  "required": [
    "results",
    "total",
    "ranking"
  ],
  "additionalProperties": false
}
🟡send_feedback(contact, context, details, request_id, sku, ...)

Tell AnyAPI something that is not a defect: an API you wanted and could not find in the catalog, a field missing from a result you needed, a confusing part of the docs or tool descriptions, or what would have made a task easier. Free, never charged. Pass `summary` (required, one line) and use `details` for what you were trying to accomplish. Use report_bug instead when something behaved incorrectly.

輸入結構描述

{
  "type": "object",
  "properties": {
    "contact": {
      "description": "optional: an email address to reply to. Supply one if you are on a trial key, since a trial has no account we can reach",
      "type": "string"
    },
    "context": {
      "description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
      "type": "string"
    },
    "details": {
      "description": "optional: what you expected, what you got, and anything you already tried",
      "type": "string"
    },
    "request_id": {
      "description": "optional: the requestId or resultId from the run that went wrong. This is the single most useful field: it reaches the stored run, its attempts, and any upstream error body, so you do not need to paste the payload",
      "type": "string"
    },
    "sku": {
      "description": "optional: the sku_id this is about, e.g. 'instagram.reels_search'",
      "type": "string"
    },
    "summary": {
      "description": "one line saying what went wrong or what you want to tell us",
      "type": "string"
    }
  },
  "required": [
    "summary",
    "context"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "the stored report id; quote it if you contact support about this"
    },
    "received": {
      "type": "boolean",
      "description": "true when the report is stored"
    }
  },
  "required": [
    "id",
    "received"
  ],
  "additionalProperties": false
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本10 個工具
已驗證未記錄版本10 個工具