{"name":"QVeris AI","description":"Search and execute a broad catalog of AI tools via a single API. Register programmatically, obtain an API key, and start calling tools.","url":"https://qveris.ai","version":"1.0.0","authentication":{"schemes":["bearer"],"credentials_type":"api_key","instructions":"Include your API key in the Authorization header: Authorization: Bearer YOUR_API_KEY"},"registration":{"anonymous_trial":{"register_url":"https://qveris.ai/api/v1/agent/anonymous-register","claim_url":"https://qveris.ai/api/v1/agent/claim","claim_verify_url":"https://qveris.ai/api/v1/agent/claim-verify","trial_credits":50.0,"expires_in_days":7,"capabilities":["search","execute"],"excluded":["model_gateway"],"instructions":"Preferred when no human operator or verified email is available: POST https://qveris.ai/api/v1/agent/anonymous-register with an optional agent_name. Save the one-time api_key and claim_code. Use https://qveris.ai/api/v1/agent/claim and https://qveris.ai/api/v1/agent/claim-verify later to bind an email."},"register_url":"https://qveris.ai/api/v1/agent/register","verify_url":"https://qveris.ai/api/v1/agent/verify","instructions":"If no human-verified API key exists, first use anonymous_trial.register_url; no email verification is required. For a formal account, 1. POST https://qveris.ai/api/v1/agent/register with your email and agent name. 2. Check your email for a 6-digit verification code. 3. POST https://qveris.ai/api/v1/agent/verify with your email and code to receive an API key. 4. Store the API key securely — it is only shown once."},"recharge":{"recharge_token_url":"https://qveris.ai/api/v1/agent/recharge-token","instructions":"When credits run low, GET https://qveris.ai/api/v1/agent/recharge-token with your API key to obtain a temporary recharge URL. Share that URL with your account owner to add credits."},"endpoints":[{"method":"POST","path":"/api/v1/agent/anonymous-register","summary":"Register an anonymous agent trial","description":"No human email verification required. Returns a one-time api_key, claim_code, 50 trial credits, and a 7-day expiry. Anonymous trials can call search/execute but cannot use the model gateway.","authentication":false,"request_body":{"content_type":"application/json","schema":{"agent_name":{"type":"string","required":false,"description":"Optional agent display name"}}},"response":{"status":"success","data":{"agent_id":"uuid","agent_name":"string","api_key":"sk-…","trial_credits":50.0,"claim_code":"string","expires_at":"ISO-8601 timestamp"}}},{"method":"POST","path":"/api/v1/agent/claim","summary":"Claim an anonymous agent trial","description":"Bind an email to an anonymous trial and receive a 6-digit verification code.","authentication":false,"request_body":{"content_type":"application/json","schema":{"claim_code":{"type":"string","required":true},"email":{"type":"string","required":true}}}},{"method":"POST","path":"/api/v1/agent/claim-verify","summary":"Verify and complete an anonymous trial claim","description":"Submit the emailed code to convert the anonymous trial into a formal account.","authentication":false,"request_body":{"content_type":"application/json","schema":{"claim_code":{"type":"string","required":true},"email":{"type":"string","required":true},"code":{"type":"string","required":true,"description":"6-digit code from email"}}}},{"method":"POST","path":"/api/v1/agent/register","summary":"Register a new agent account","description":"Step 1: Send a 6-digit verification code to the provided email.","authentication":false,"request_body":{"content_type":"application/json","schema":{"email":{"type":"string","required":true,"description":"Agent operator email address"},"agent_name":{"type":"string","required":true,"description":"Agent name / identifier (1-100 chars)"},"description":{"type":"string","required":false,"description":"Brief description of the agent's purpose (max 500 chars)"}}},"response":{"status":"success","message":"Verification code sent to your email. The code is valid for 10 minutes.","data":{"email":"string"}}},{"method":"POST","path":"/api/v1/agent/verify","summary":"Verify agent and obtain API key","description":"Step 2: Submit the 6-digit code received via email. On success the response contains an API key that must be stored securely — it is only shown once.","authentication":false,"request_body":{"content_type":"application/json","schema":{"email":{"type":"string","required":true,"description":"Same email used in register step"},"code":{"type":"string","required":true,"description":"6-digit verification code from email"}}},"response":{"status":"success","data":{"api_key":"sk-…","user_id":"uuid","agent_name":"string"}}},{"method":"POST","path":"/api/v1/search","summary":"Search for tools","description":"Search for tools based on natural language queries. Returns ranked results with tool metadata, parameters, and usage examples.","authentication":true,"request_body":{"content_type":"application/json","schema":{"query":{"type":"string","required":true,"description":"Natural language search query describing the capability needed"},"session_id":{"type":"string","required":false,"description":"UUID identifying the user session (reuse for continuity)"},"limit":{"type":"integer","required":false,"description":"Maximum number of results (default 20, range 1-100)"},"view":{"type":"string","required":false,"description":"routing for compact routing cards; full or omitted for complete metadata"},"lang":{"type":"string","required":false,"description":"Response language: zh or en"}}},"response":{"search_id":"string — use in subsequent execute calls","total":"integer","results":[{"tool_id":"string — unique tool identifier","name":"string","description":"string","provider_name":"string","params":[{"name":"string","type":"string","required":true,"description":"string"}],"examples":{"sample_parameters":{}},"stats":{"avg_execution_time_ms":null,"success_rate":null,"sample_count":0,"minimum_sample_count":5,"success_rate_status":"insufficient","latency_status":"insufficient"}}]}},{"method":"POST","path":"/api/v1/tools/execute","summary":"Execute a tool","description":"Execute a tool with specified parameters. The tool_id and search_id should come from a prior /search call. If the response exceeds max_response_size, a truncated preview and a download URL are returned instead.","authentication":true,"query_parameters":{"tool_id":{"type":"string","required":true,"description":"Unique identifier of the tool to execute (from search results)"}},"request_body":{"content_type":"application/json","schema":{"search_id":{"type":"string","required":true,"description":"search_id from the /search response"},"session_id":{"type":"string","required":false,"description":"UUID identifying the user session"},"parameters":{"type":"object","required":true,"description":"Key-value pairs of tool parameters (values can be any JSON type)"},"max_response_size":{"type":"integer","required":false,"description":"Max response bytes before truncation; -1 = no limit (default 20480)"},"respond_with":{"type":"string","required":false,"description":"Server-side projection: full, summary, or fields:<JSONPath,...>"}}},"response":{"execution_id":"string","success":true,"error_message":"string | null","result":{"data":"object — tool output"}}},{"method":"POST","path":"/api/v1/tools/by-ids","summary":"Get tool descriptions by IDs","description":"Retrieve detailed information for specific tools by their IDs. Response schema is the same as /search.","authentication":true,"request_body":{"content_type":"application/json","schema":{"tool_ids":{"type":"array of strings","required":true,"description":"List of tool IDs to retrieve"},"session_id":{"type":"string","required":false,"description":"UUID identifying the user session"},"search_id":{"type":"string","required":false,"description":"search_id from a prior /search call"}}},"response":{"search_id":"string","total":"integer","results":["same schema as /search results"]}},{"method":"POST","path":"/api/v1/tools/probe","summary":"Validate a tool call without executing it","description":"Run zero-cost schema and quote checks before execution. Coverage and sample checks currently return unknown.","authentication":true,"query_parameters":{"tool_id":{"type":"string","required":true,"description":"Unique identifier of the tool to validate"}},"request_body":{"content_type":"application/json","schema":{"parameters":{"type":"object","required":false,"description":"Candidate tool parameters"},"checks":{"type":"array of strings","required":false,"description":"Any of schema, quote, coverage, sample"},"live_budget":{"type":"string","required":false,"description":"none, metadata, or sampled; M1 never executes the tool"}}},"response":{"schema":"object | null","quote":"object | null","coverage":"object | null","sample":"object | null"}},{"method":"GET","path":"/api/v1/agent/recharge-token","summary":"Get a temporary recharge URL","description":"Returns a short-lived URL that a human (the agent's owner) can open in a browser to add credits — no sign-in needed. The link expires in 1 hour.","authentication":true,"request_body":null,"response":{"status":"success","data":{"recharge_url":"string — URL to open in a browser","token":"string — the embedded short-lived JWT","expires_in":"integer — seconds until expiry (3600)"}}}]}