smithery.ai

qveris

Discover, inspect, and call third-party API capabilities via the QVeris MCP server, then generate production code that calls the QVeris REST API for tasks like fetching weather data, stock prices, or public datasets.

First seen Mar 21, 2026

Installation

$ npx skills add https://smithery.ai

Summary

  • Discover, inspect, and call third-party API capabilities via the QVeris MCP server, then generate production code that calls the QVeris REST API for tasks like fetching weather data, stock prices, or public datasets.
  • Use when the user needs to find an external API, integrate a web service, connect to a third-party REST endpoint, or retrieve data from an external source.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery.ai · top by installs.

npx skills add https://smithery.ai

Browse all from smithery.ai

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 5,538 B
  • docs SUMMARY.md 175 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 1 installs

SKILL.md

For more detailed discovery query formulation, tool selection criteria, parameter handling, and error recovery, see the Agent Guidelines.

When external functionality is needed, follow this two-phase workflow:

Phase 1: Discover and Call Capabilities via MCP

  1. Identify what tool capability the user needs
  2. Call discover with a functionality description (not parameter names) — limit results to 10
  3. Call inspect when you need full parameter details, examples, success rate, latency, or billing metadata
  4. Call call to test a candidate, passing parameters via paramstotool
  5. Repeat or broaden the discovery query if no suitable capability is found

Compatibility note: legacy MCP names searchtools, gettoolsbyids, and execute_tool remain deprecated aliases only. Prefer discover, inspect, and call in all new workflows.

Billing and Audit

QVeris separates pricing rules, pre-settlement billing, and final settlement:

  • billing_rule explains how a capability is priced.
  • billing / presettlementbill explains the theoretical charge for a call.
  • usagehistory and creditsledger answer whether credits were actually charged and how the balance changed.

When the user asks whether a failed call was charged, do not infer from cost alone. Query usagehistory with the executionid and inspect charge_outcome.

Use context-safe audit patterns:

  • Start with mode: "summary" for usage or ledger totals.
  • Use mode: "search" with precise filters such as executionid, chargeoutcome, mincredits, maxcredits, or a date range.
  • Use mode: "export_file" for large analysis; read the resulting JSONL file in chunks instead of returning all rows into context.

Phase 2: Generate Production Code

Once a suitable tool is identified, generate code that calls the QVeris REST API directly. Do not reuse the MCP tool-call result — produce standalone code the user can run.

  • Read the API key from the MCP server config (QVERISAPIKEY)
  • Set a 5-second request timeout
  • Handle errors by checking the success field and error_message
  • Verify the response structure matches expectations before delivering to the user; if the call fails (invalid key, rate limit, tool not found), report the error and suggest corrective action

Example: Fetch Weather Data

import requests

import os

API_KEY = os.environ.get("QVERIS_API_KEY", "<QVERIS_API_KEY from MCP config>")
BASE_URL = os.environ.get("QVERIS_BASE_URL", "https://qveris.ai/api/v1").rstrip("/")

def call_tool(tool_id: str, search_id: str, params: dict) -> dict:
    """Call a QVeris capability and return the result."""
    resp = requests.post(
        f"{BASE_URL}/tools/execute",
        params={"tool_id": tool_id},
        headers={"Authorization": f"Bearer {API_KEY}"},
        json={
            "search_id": search_id,
            "session_id": "",
            "parameters": params,
            "max_response_size": 20480,
        },
        timeout=5,
    )
    resp.raise_for_status()
    try:
        data = resp.json()
    except requests.exceptions.JSONDecodeError:
        raise RuntimeError("Failed to decode API response as JSON.")

    if not data.get("success"):
        raise RuntimeError(f"QVeris error: {data.get('error_message', 'Unknown error')}")

    result = data.get("result")
    if result is None:
        raise RuntimeError("API response is missing the 'result' field.")
    return result

# Usage
result = call_tool(
    tool_id="openweathermap_current_weather",
    search_id="<search_id from Phase 1>",
    params={"city": "London", "units": "metric"},
)
print(result)  # {"data": {"temperature": 15.5, "humidity": 72}}

API Reference

Base URL: https://qveris.ai/api/v1 by default. Set QVERISBASEURL to the active deployment's API root when an explicit override is required.

Authentication: Authorization: Bearer YOURAPIKEY

POST /tools/execute?toolid={toolid}

Field Type Description
search_id string ID returned by discover
session_id string Optional session identifier
parameters object Tool-specific input parameters
maxresponsesize number Max response bytes (default 20480)

Response Fields

Field Type Description
execution_id string Unique ID for the execution.
result object Contains the tool's output, typically under a data key.
success boolean true if the call succeeded, false otherwise.
error_message string Details of the error if success is false.
elapsedtimems number Execution time in milliseconds.