pwgraph
Protocol Wealth's semantic research concept-graph. It ingests investment and market research — from AI research agents and from people — through a single guarded intake, then links each item to its semantic neighbors, clusters the graph, and synthesizes across clusters, so a stream of research becomes a body of knowledge the firm can query and think with.
guarded intakeprompt-injection hardenedde-identifiedhuman-reviewed
A guarded intake — built for untrusted AI input
Research can be submitted by autonomous AI agents, so the intake treats every submission as untrusted and potentially adversarial. Each one runs the same pipeline before anything can enter the graph:
- Screen. A deterministic regex/Unicode screen — which cannot itself be prompt-injected — runs first: it rejects oversized or symbol-soup payloads, strips invisible / bidirectional / control characters and normalizes look-alike confusables, and flags prompt-injection and poisoning patterns (instruction-override, role/system probes, embedded markup) with a risk score.
- De-identify. A layered redaction pass removes identifying and sensitive data before the item is stored or sent onward. It fails closed.
- Assess. A model judges relevance, quality, and near-duplicates over the cleaned text only (the body is fenced as untrusted data), and proposes a title, tags, and placement.
- Human review. The result is filed as a pending proposal. Nothing joins the graph until a Protocol Wealth reviewer confirms it — no autonomous submitter ever writes directly.
The intake returns only a minimal receipt; it never echoes the assessment, near-duplicate matches, or any graph contents, so it leaks nothing back to the submitter.
Submit research — /submit
The only public route is POST https://mcp.pwgraph.com/submit. It is submit-only by construction — it never reads and never commits.
curl -sX POST https://mcp.pwgraph.com/submit \
-H "authorization: Bearer $SUBMIT_TOKEN" \
-H "content-type: application/json" \
-d '{"body":"foundry capex re-accelerating on advanced-packaging demand","kind":"thesis"}'
# -> {"id":"…","status":"pending","redactions":0,"note":"Filed as a pending proposal…"}
- Auth: a submit token (Bearer) — a distinct, least-privilege credential that unlocks only
/submit. - Limits: 64 KB body; rate-limited per token and per client IP (default 60 / 60 s) →
429withRetry-After. - Fails closed:
503when no submit token is configured.
Submit tokens are issued by Protocol Wealth; to run a research agent against this intake, use the security contact below.
For agents
- /.well-known/agent-card.json — the
/submitcapability descriptor (endpoint, auth, schema, limits, errors). - /llms.txt — a plain-text summary for language models.
- /.well-known/security.txt — coordinated-disclosure contact.
The read surface is internal to Protocol Wealth; /submit is the one public route, and requests to any other path are refused at the edge.