QVeris Documentation
What is QVeris
QVeris is a tool search + tool execution layer for LLM agents. It lets your agent:
- Search for live tools (APIs, data sources, automations) using natural language.
- Execute any discovered tool by passing the required parameters.
QVeris works well in agent loops (tool discovery → tool execution → feed results back to the model) and supports multiple integration styles.
Quick start
There are three ways to use QVeris.
Use QVeris MCP anywhere MCP is supported
If your client supports Model Context Protocol (MCP), you can add the official QVeris MCP server and immediately get:
search_toolsexecute_tool
Configure (Cursor / any MCP client)
1{
2 "mcpServers": {
3 "qveris": {
4 "command": "npx",
5 "args": ["@qverisai/mcp"],
6 "env": {
7 "QVERIS_API_KEY": "your-api-key-here"
8 }
9 }
10 }
11}Try it
"Find me a weather tool and get the current weather in Tokyo"
The assistant will:
- call
search_toolswith a capability query (e.g. "weather") - pick a tool from results
- call
execute_toolwith the tool id + parameters
Use the QVeris Python SDK
Get it from github and install:
pip install qverisSet environment variables:
QVERIS_API_KEY(from QVeris)OPENAI_API_KEY(or your OpenAI-compatible provider key)OPENAI_BASE_URL(optional; for OpenAI-compatible providers)
Minimal streaming example:
1import asyncio
2from qveris import Agent, Message
3
4async def main():
5 agent = Agent()
6 messages = [Message(role="user", content="Find a weather tool and check New York weather.")]
7 async for event in agent.run(messages):
8 if event.type == "content" and event.content:
9 print(event.content, end="", flush=True)
10
11if __name__ == "__main__":
12 asyncio.run(main())Directly call the QVeris REST API
Base URL
https://qveris.ai/api/v1Authentication
Send your API key in the Authorization header:
Authorization: Bearer YOUR_API_KEY1) Search tools
POST /search
You'll get a search_id and a list of tools (each with tool_id, params schema, examples, etc.).
1curl -sS -X POST "https://qveris.ai/api/v1/search" \
2 -H "Authorization: Bearer YOUR_API_KEY" \
3 -H "Content-Type: application/json" \
4 -d "{\"query\":\"weather forecast API\",\"limit\":10}"2) Execute a tool
POST /tools/execute?tool_id={tool_id}
If tool output exceeds max_response_size, the response includes truncated_content plus a temporary full_content_file_url.
1curl -sS -X POST "https://qveris.ai/api/v1/tools/execute?tool_id=openweathermap_current_weather" \
2 -H "Authorization: Bearer YOUR_API_KEY" \
3 -H "Content-Type: application/json" \
4 -d "{\"search_id\":\"YOUR_SEARCH_ID\",\"parameters\":{\"city\":\"London\",\"units\":\"metric\"},\"max_response_size\":20480}"How to get an API key
- Go to QVeris
- Sign in / create an account
- Create an API key
- Use it as:
QVERIS_API_KEYenv var (MCP / Python SDK), orAuthorization: Bearer ...header (REST API)
Recommended system prompt
Use this (copy/paste) in your assistant's system prompt when enabling QVeris tools:
You are a helpful assistant that can dynamically search and execute tools to help the user. First think about what kind of tools might be useful to accomplish the user's task. Then use the search_tools tool with query describing the capability of the tool, not what params you want to pass to the tool later. Then call suitable searched tool(s) using the execute_tool tool, passing parameters to the searched tool through params_to_tool. If tool has weighted_success_rate and avg_execution_time (in seconds), consider them when selecting which tool to call. You could reference the examples given if any for each tool. You could call make multiple tool calls in a single response.