Query layer
Agents and MCP
Data LiveAPI PlannedPoint your own agent at the graph, which speaks the Model Context Protocol, so an assistant discovers the available tools when it connects and pulls structured, cited answers back inside its own loop with no bespoke integration on your side.
Connecting
{
"mcpServers": {
"civoren": {
"url": "https://mcp.civoren.com/sse",
"headers": { "Authorization": "Bearer civ_live_7f3a…" }
}
}
}Tools exposed
| Tool | What it does |
|---|---|
ask_graph | Takes a natural-language question and returns a grounded answer with its sources |
lookup_node | Fetches one node by slug together with everything directly connected to it |
search_nodes | Full-text search across regions, offices, people and contests, resolving shorthand such as "AZ" or "NY-12" to the node it names |
semantic_search | Searches position text by meaning, with filters for issue and stance applied before the search |
query_cypher | Runs a read-only traversal under the same guardrails as the Cypher endpoint |
districts_at_point | Resolves a coordinate to every district containing it |
contest_results | Returns structured vote tallies and winners for a contest |
What a call looks like
{
"answer": "Three candidates have filed …",
"citations": [
{ "node": "candidacy:az-maricopa-recorder-2026-primary-…",
"source_url": "https://recorder.maricopa.gov/…",
"retrieved_at": "2026-08-14T09:12:00Z",
"confidence": 0.7 }
]
}Every answer is attributable. The tool will not assert a fact it cannot cite, and where the graph does not know something it says so rather than inferring, which is the behaviour you want when the output feeds a product your own users trust.