Skip to main content
The official Python SDK for QWED.

Installation

pip install qwed

Quick Start

from qwed_sdk import QWEDClient

client = QWEDClient(api_key="qwed_your_key")

# Basic verification
result = client.verify("Is 2+2=4?")
print(result.verified)  # True
print(result.status)    # "VERIFIED"
As of v5.0.0, the status field may return INCONCLUSIVE, BLOCKED, or UNKNOWN in addition to VERIFIED and ERROR. Natural-language math queries return INCONCLUSIVE when the inner engine succeeds, because the LLM translation step is non-deterministic. See the trust boundary documentation for details.

Async Client

from qwed_sdk import QWEDAsyncClient
import asyncio

async def main():
    async with QWEDAsyncClient(api_key="qwed_...") as client:
        result = await client.verify("2+2=4")
        print(result.verified)

asyncio.run(main())

Methods

verify(query)

Auto-detect and verify any claim.
result = client.verify("What is 15% of 200?")

verify_math(expression)

Verify mathematical expressions.
result = client.verify_math("x**2 + 2*x + 1 = (x+1)**2")

verify_logic(query)

Verify logical constraints (QWED-Logic DSL).
result = client.verify_logic("(AND (GT x 5) (LT y 10))")
print(result.model)  # {"x": 6, "y": 9}

verify_code(code, language)

Check code for security vulnerabilities.
result = client.verify_code(code, language="python")
for vuln in result.vulnerabilities:
    print(f"{vuln.severity}: {vuln.message}")

verify_sql(query, schema_ddl, dialect)

Validate SQL queries against a schema.
result = client.verify_sql(
    query="SELECT * FROM users WHERE id = 1",
    schema_ddl="CREATE TABLE users (id INT, name TEXT)",
    dialect="postgresql"
)

verify_fact(claim, context)

New in v4.0.0
Verify factual claims against a provided context. Includes client-side PII pre-check.
result = client.verify_fact(
    claim="The company was founded in 2020",
    context="Acme Corp was established in 2020 in San Francisco."
)
print(result.verified)  # True

verify_stats(query, file_path)

New in v4.0.0
Verify statistical claims against CSV data.
result = client.verify_stats(
    query="The average salary is above 50000",
    file_path="data.csv"
)

verify_consensus(query, mode, min_confidence)

New in v4.0.0
Multi-engine consensus verification.
result = client.verify_consensus(
    query="The square root of 144 is 12",
    mode="high",
    min_confidence=0.8
)
print(result.verified)     # True
print(result.confidence)   # 0.95
ParameterTypeDefaultDescription
querystrClaim to verify
modestr"single"single, high, or maximum
min_confidencefloat0.8Minimum confidence threshold

verify_image(image_path, claim)

New in v4.0.0
Verify claims about image content.
result = client.verify_image(
    image_path="photo.jpg",
    claim="This image contains a cat"
)

verify_batch(items)

Verify multiple items at once.
results = client.verify_batch([
    {"query": "2+2=4", "type": "math"},
    {"query": "3*3=9", "type": "math"},
])
print(results.summary.success_rate)

CLI

# Verify
qwed verify "2+2=4"

# Verify logic
qwed verify-logic "(AND (GT x 5) (LT y 10))"

# Verify code file
qwed verify-code -f script.py

# Batch verify
qwed batch -f queries.json

Guards

The SDK includes security guards for protecting AI agent pipelines:
from qwed_sdk.guards import (
    RAGGuard,
    ExfiltrationGuard,
    MCPPoisonGuard,
    SelfInitiatedCoTGuard,
    SovereigntyGuard,
    SystemGuard,
    ConfigGuard,
)

# Prevent RAG hallucinations from wrong document chunks
rag_guard = RAGGuard(max_drm_rate="1/10")
result = rag_guard.verify_retrieval_context(
    target_document_id="contract_v2",
    retrieved_chunks=chunks
)

# Block data exfiltration to unauthorized endpoints
exfil_guard = ExfiltrationGuard(allowed_endpoints=["https://api.openai.com"])
result = exfil_guard.verify_outbound_call(
    destination_url=url,
    payload=data
)

# Detect poisoned MCP tool definitions
mcp_guard = MCPPoisonGuard()
result = mcp_guard.verify_tool_definition(tool_schema)

# Block dangerous shell commands (v4.0.0)
sys_guard = SystemGuard()
result = sys_guard.verify_shell_command("rm -rf /")

# Detect plaintext secrets in config (v4.0.0)
cfg_guard = ConfigGuard()
result = cfg_guard.verify_config_safety(config_data)
See the SDK Guards reference for complete documentation.

Environment Variables

VariableDescription
QWED_API_KEYAPI key
QWED_BASE_URLAPI base URL