provgraf-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DATABASE_URL | Yes | PostgreSQL connection string for the provenance knowledge graph. | |
| RERANKER_MODEL | No | Cross-encoder model used for reranking search results. | sdadas/polish-reranker-large-ranknet |
| EMBEDDING_MODEL | No | Sentence-transformers model used for generating embeddings for semantic search. | sdadas/mmlw-retrieval-roberta-large |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_factsA | List the bank's facts and documents for a client. client = owner slug (e.g. 'acme-housing'). status (optional) = confirmed|disputed|to_confirm|resolved. |
| get_factB | A single fact with full provenance: value, unit, status, sources (wasDerivedFrom), description. The bank is BITEMPORAL — two independent time axes: at = 'YYYY-MM-DD': the BANK's state at the END of that day (transaction time, over the valid_from/valid_to windows) — "what the bank knew then", e.g. on filing day. world_at = 'YYYY-MM-DD': the version in force IN THE WORLD that day (world time, over the world_valid_from/world_valid_to windows) — e.g. the rent that applied in May. Both together = the full bitemporal question ("per what the bank knew on 15 June, what held in May"). |
| searchB | Semantic search over facts/documents (mmlw -> reranker). client = owner slug, or empty for everyone plus global. The models are loaded ONCE and kept warm — the first call after the server starts is slower, every later one is instant. |
| precedentsB | Decision precedents: the semantically closest EARLIER rulings (decision) and open structural questions. Run this BEFORE settling a new dilemma — if a similar one was already settled, reuse that rationale instead of asking from scratch. |
| checkA | Integrity/freshness report: hard and soft staleness, overdue sources, disputed facts
(with a recency hint), unresolved derivations, DANGLING-DOC and ORPHANED (a fact whose only
source went missing). Same code as the CLI client (optional) = owner slug: narrows the documents and ADDS the INCOMPLETE section (required fields that are missing or unconfirmed). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 5 tools
Each tool serves a clear, distinct purpose: listing facts, retrieving a single fact with provenance, semantic search, finding precedents, and running integrity checks. No two tools overlap in intent, and the descriptions make selection unambiguous.
Tool names use a consistent lowercase_with_underscores style and mostly follow verb_noun patterns (list_facts, get_fact), but 'search', 'precedents', and 'check' deviate slightly—'precedents' is a noun and 'search'/'check' are bare verbs. Still, the style is uniform and readable, so the inconsistency is minor.
With 5 tools, the server is well-scoped for its purpose—querying facts with provenance, searching, and checking integrity. Each tool earns its place, and the count is comfortably within the ideal 3–15 range.
The server covers the core read-side operations for the domain: listing, retrieving, searching, finding precedents, and integrity checks. Since it appears to be a read-only provenance query service, it lacks mutation tools, but that's likely by design. Minor gap: no explicit way to fetch a raw document or list all clients, though these are discoverable via search and list_facts.