POST /tools/by-ids
Fetch full capability metadata for one or more tool ids. Inspect is free and returns the same capability shape as Discover, including parameter schema, verification evidence, provider access restrictions, examples, quality signals, and cost estimates. Clients must disclose restrictions before Call. Explicit public-readonly mode accepts only the bounded PublicRead request schema, returns public catalog metadata without prices, balances or user activity, and uses a non-executable pub_ context. Public clients must omit cookies; unknown fields, deep pagination and mixed credentials are rejected. Authenticate and Inspect the selected tool again before a fresh quote and confirmed Call; no extra Discover is required for a known selected tool.
REST API overview · OpenAPI JSON · OpenAPI YAML
| Stability | Authentication | Cost | Operation ID |
|---|---|---|---|
| Published | Bearer API key | Free | get_tools_by_ids_api_v1_tools_by_ids_post |
| Name | Location | Required | Type | Description |
|---|---|---|---|---|
X-Qveris-Access-Mode | header | No | "public-readonly" | Explicit stateless public reads. Omit Authorization, Cookie and session proof headers; mixed identities are rejected. |
PublicToolsByIdsRequest | PublicReadInspectRequest
curl --fail-with-body --request POST \
--url "https://qveris.ai/api/v1/tools/by-ids" \
--header "Authorization: Bearer $QVERIS_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"tool_ids": [
"openweathermap.weather.execute.v1"
],
"search_id": "srch_01HZX9QK7J3M9T",
"session_id": "sess_7Q9m"
}'
const response = await fetch("https://qveris.ai/api/v1/tools/by-ids", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.QVERIS_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"tool_ids": [
"openweathermap.weather.execute.v1"
],
"search_id": "srch_01HZX9QK7J3M9T",
"session_id": "sess_7Q9m"
}),
})
if (!response.ok) throw new Error(`QVeris request failed: ${response.status}`)
if (response.status !== 204) console.log(await response.json())
import json
import os
import requests
response = requests.request(
"POST",
"https://qveris.ai/api/v1/tools/by-ids",
headers={"Authorization": f"Bearer {os.environ['QVERIS_API_KEY']}"},
json=json.loads(r'''{
"tool_ids": [
"openweathermap.weather.execute.v1"
],
"search_id": "srch_01HZX9QK7J3M9T",
"session_id": "sess_7Q9m"
}'''),
timeout=30,
)
response.raise_for_status()
if response.status_code != 204:
print(response.json())
| Status | Meaning | Schema |
|---|---|---|
200 | Successful Response | PublicInspectResponse |
401 | Unauthorized | PublicApiError |
429 | Too Many Requests | unknown |
504 | Upstream timeout | PublicApiError |
{
"search_id": "srch_01HZX9QK7J3M9T",
"total": 1,
"results": [
{
"tool_id": "openweathermap.weather.execute.v1",
"name": "Current Weather",
"description": "Get current weather data for a city.",
"provider_name": "OpenWeatherMap",
"params": [
{
"name": "q",
"type": "string",
"required": true,
"description": "Location query accepted by the weather provider."
}
],
"expected_cost": "5 credits per successful request",
"billing_rule": {
"unit": "request",
"amount_credits": 5
},
"stats": {
"avg_execution_time_ms": 210.7,
"success_rate": 0.982
},
"verification_status": "unverified",
"verification": {
"status": "unverified",
"policy_version": "catalog-verification-v1",
"required_checks": [
"schema",
"authentication",
"description_contract",
"provider_identity",
"permissions",
"freshness",
"live_check"
],
"checks": [
{
"name": "schema",
"status": "missing",
"checked_at": null,
"evidence_digest": null,
"reason": null
},
{
"name": "authentication",
"status": "missing",
"checked_at": null,
"evidence_digest": null,
"reason": "authentication_path_missing"
},
{
"name": "description_contract",
"status": "missing",
"checked_at": null,
"evidence_digest": null,
"reason": null
},
{
"name": "provider_identity",
"status": "missing",
"checked_at": null,
"evidence_digest": null,
"reason": "provider_id_missing"
},
{
"name": "permissions",
"status": "missing",
"checked_at": null,
"evidence_digest": null,
"reason": null
},
{
"name": "freshness",
"status": "missing",
"checked_at": null,
"evidence_digest": null,
"reason": "expires_at_missing"
},
{
"name": "live_check",
"status": "missing",
"checked_at": null,
"evidence_digest": null,
"reason": "live_check_samples_missing"
}
],
"verified_at": null,
"expires_at": null,
"test_run_digest": null,
"quality_issues": [
"live_check_samples_missing",
"authentication_path_missing",
"provider_id_missing",
"permission_disclosure_incomplete",
"permission_disclosure_missing",
"verified_at_missing",
"expires_at_missing",
"test_run_digest_missing"
]
},
"execution_restrictions": {
"callable": false,
"technical": "ready",
"authentication": "unknown",
"eligibility": "unknown",
"license": "unknown",
"regions": {
"allow": [],
"deny": []
},
"region_status": "unknown",
"commercial_use": "unknown",
"freshness": "unknown",
"price_certainty": "estimated",
"data_as_of": null,
"warnings": [],
"confidence": 0.125,
"allowed_actions": [
"discover",
"inspect",
"probe",
"confirm_budget"
],
"blocked_actions": [
"execute"
],
"next_action": "confirm_budget",
"retryable": true
},
"examples": {
"sample_parameters": {
"q": "London"
}
}
}
],
"remaining_credits": 995
}
POST Discover capabilities · POST Probe a capability · POST Call a capability
Was this page helpful?