TL;DR
The guard pipeline currently runs deterministic checks (size, cooldown, whitelist) before order push. I've been building a Lightning-paid MCP server that adds a structured LLM second-opinion verdict on the same proposal — verdict types approve | approve_with_concerns | reject with ranked issues and confidence score. Wanted to surface it as a drop-in .mcp.json entry since the integration shape happens to fit your existing template format exactly.
Edit 2026-05-22: corrected the cost-shape section and softened the "capital-scale-aware" claim — include_trading_state is exposed on the MCP review tool but is a no-op for accounts without a registered internal trading state (so it's mostly a future hook, not the current external value prop).
Why this might slot in
Your mcp.json templates already speak streamable-http and the workspaces UI lets users enable/disable MCP servers without code changes. The verdict tool is a single new entry. The review MCP tool takes an artifact (a trade proposal, plan, config change, or arbitrary string), an artifact_type enum, optional context and concerns strings, and returns a structured {verdict, confidence, issues[]} JSON.
This is meant to complement the existing guard pipeline (which catches the structural violations cleanly) by adding a slower, paid, model-graded check on the agent's reasoning itself — not to replace any of the local rules.
Drop-in .mcp.json entry
{
"mcpServers": {
"invinoveritas": {
"type": "streamable-http",
"url": "https://api.babyblueviper.com/mcp",
"headers": {
"Authorization": "Bearer ${INVINOVERITAS_KEY}"
}
}
}
}
The Claude Agent SDK path you ship by default picks this up without any code changes. Vercel AI SDK users hit it via their existing MCP client.
Cost shape (honest)
POST /register (free): returns a Bearer token + 250 non-withdrawable starter sats.
/review MCP tool: ~260 sats minimum per call (1 sat / 100 chars on top of base).
- The 250 starter sats are enough for one
/reason (~100 sats) but not one /review. To actually try /review you'd need to top up ~1k sats via Lightning (POST /topup returns a bolt11 invoice).
- Auth: Bearer (recommended for an agent loop) or L402 (one-shot pay-per-call).
On license
The MCP server is hosted infrastructure, so users adding the .mcp.json entry pull in zero new code into your tree — no AGPL implications. If anyone later wanted a native TS helper that wraps the verdict in your decision model, I'd ship that as a separate package rather than upstreaming into core, to keep your AGPL boundary clean.
Maintainer questions
- Is there an existing convention for "optional paid tool" entries — separate workspace template, env-gated entry, or just listed alongside
openalice/openalice-workspace?
- Anyone running a paper-trading loop right now who'd want to feed a few historical trader-agent proposals through and compare verdicts?
- Would a short docs note (e.g.
docs/optional-tools/invinoveritas.md) be welcomed as a follow-up PR, or do you prefer external docs?
Happy to iterate the framing either way. The server is up and accepting calls now; if anyone wants to try it the /register flow is one POST.
References:
TL;DR
The guard pipeline currently runs deterministic checks (size, cooldown, whitelist) before order push. I've been building a Lightning-paid MCP server that adds a structured LLM second-opinion verdict on the same proposal — verdict types
approve | approve_with_concerns | rejectwith ranked issues and confidence score. Wanted to surface it as a drop-in.mcp.jsonentry since the integration shape happens to fit your existing template format exactly.Why this might slot in
Your
mcp.jsontemplates already speak streamable-http and the workspaces UI lets users enable/disable MCP servers without code changes. The verdict tool is a single new entry. ThereviewMCP tool takes an artifact (a trade proposal, plan, config change, or arbitrary string), anartifact_typeenum, optionalcontextandconcernsstrings, and returns a structured{verdict, confidence, issues[]}JSON.This is meant to complement the existing guard pipeline (which catches the structural violations cleanly) by adding a slower, paid, model-graded check on the agent's reasoning itself — not to replace any of the local rules.
Drop-in
.mcp.jsonentry{ "mcpServers": { "invinoveritas": { "type": "streamable-http", "url": "https://api.babyblueviper.com/mcp", "headers": { "Authorization": "Bearer ${INVINOVERITAS_KEY}" } } } }The Claude Agent SDK path you ship by default picks this up without any code changes. Vercel AI SDK users hit it via their existing MCP client.
Cost shape (honest)
POST /register(free): returns a Bearer token + 250 non-withdrawable starter sats./reviewMCP tool: ~260 sats minimum per call (1 sat / 100 chars on top of base)./reason(~100 sats) but not one/review. To actually try/reviewyou'd need to top up ~1k sats via Lightning (POST /topupreturns a bolt11 invoice).On license
The MCP server is hosted infrastructure, so users adding the
.mcp.jsonentry pull in zero new code into your tree — no AGPL implications. If anyone later wanted a native TS helper that wraps the verdict in your decision model, I'd ship that as a separate package rather than upstreaming into core, to keep your AGPL boundary clean.Maintainer questions
openalice/openalice-workspace?docs/optional-tools/invinoveritas.md) be welcomed as a follow-up PR, or do you prefer external docs?Happy to iterate the framing either way. The server is up and accepting calls now; if anyone wants to try it the
/registerflow is one POST.References: