[project] name = "verity-mcp" version = "0.4.2" description = "Independent fail-closed 'verify before you act' trust gate for AI agents — MCP server. Tiered, disclosed, pay-per-call via x402 (USDC on Base): quick_verify $0.02, grounded_verify $0.25 (live web citations), pro_verify $0.35, free verify_receipt (checks Ed25519-signed verdict receipts), plus prompt-injection, moderation, PII, and pre-action guardrail checks at $0.02. Keyless." readme = "README.md" requires-python = ">=3.10" license = { text = "MIT" } authors = [{ name = "Verity Labs", email = "veritylayer@gmail.com" }] keywords = ["mcp", "model-context-protocol", "agent", "x402", "trust", "verification", "hallucination", "guardrail", "ai-safety", "prompt-injection"] # UPPER BOUND IS LOAD-BEARING. mcp 2.0.0 removed `mcp.server.fastmcp`, which server.py imports # at module scope, so an unbounded floor meant a fresh resolve installed 2.x and the server died # on import with ModuleNotFoundError before serving a single request. Caught by a Glama container # build on 2026-07-29; the published 0.4.0 wheel carries the unbounded floor and is broken for # any new install. Do not widen this until server.py is ported to the 2.x API. # # httpx carries a FLOOR ONLY, deliberately. It was declared bare, which is a real gap: a bare # name lets pip keep whatever ancient httpx is already in the environment, and the failure then # lands at runtime instead of at install, which is the worse of the two. >=0.24 matches the floor # verity-guard already declares, so the [x402] extra cannot resolve the two siblings to different # minimums. It is NOT capped, and the mcp cap above is not a precedent for capping it: that cap # exists because mcp 2.0.0 was OBSERVED to remove an API server.py imports. httpx has had no such # event, is still pre-1.0 (0.28.1 at time of writing), and our entire surface is one call -- # httpx.AsyncClient(timeout=...) -- which is the most stable thing in the library. Capping below # an unreleased 1.0 would be asserting a break nobody has seen, and would fight the resolver in # the environments of users who install this alongside their own stack. Cap it when a real # incompatibility is observed, not before. dependencies = ["mcp>=1.2.0,<2", "httpx>=0.24"] [project.optional-dependencies] # Opt-in wallet mode: lets this server settle its own x402 micro-payments so the paid # tools actually return verdicts. Keyless remains the default and needs none of this. # FLOOR IS 0.2.2: 0.2.0's payer had NO spend cap (it would sign whatever a 402 named, # capped only by wallet balance) and 0.2.1 still allowed pip to resolve the x402 v1 # protocol client, which cannot read our v2 challenge. Wallet mode hands this payer a # real key, so the floor is the first version that is both capped and v2-correct. x402 = ["verity-guard[x402]>=0.2.2"] [project.urls] Homepage = "https://veritylayer.dev" Repository = "https://github.com/meloliva14/verity-mcp" [project.scripts] verity-mcp = "server:main" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] include = ["server.py"]