Maple JurisGive your agent checked citations.
Maple Juris ships an MCP server so AI agents can validate Canadian legal citations against the real statute graph instead of recalling them from memory. Two tools: validate_citation and validate_citations_batch (up to 100 citations per call, metered one credit per citation). Transport is streamable HTTP; auth is your API key as a bearer token. The MCP server is included on the Commercial, Enterprise and Custom plans; Free and Research are REST only.
Tools
Two, both returning the same result object as the REST endpoints - validity, status, validity score and the matched provision.
validate_citation validates one Canadian citation. validate_citations_batch validates several in a single call, up to 100. Both accept an optional jurisdiction argument.
The same caveats apply as over REST: a validity score describes how well the citation matched the graph, not whether a legal conclusion drawn from it is right, and an unsupported result means the citation fell outside the corpus - not that no such provision exists. See the response object.
1 · Get a key
The MCP server needs a Commercial or Enterprise plan. Choose one on the pricing page (you create your account on the way), then mint a key on the API keys page. The secret is shown once - export it in your shell:
export MAPLEJURIS_KEY=ak_your_key_here
2 · Claude Code
One command, then ask Claude to validate a citation:
claude mcp add maplejuris \ --transport http https://api.maplejuris.com/mcp \ --header "Authorization: Bearer $MAPLEJURIS_KEY"
Verify with /mcp inside a session - you should see maplejuris connected with two tools.
2b · Codex CLI
Add to ~/.codex/config.toml. Codex requires the key as an environment-variable reference (an inline token is rejected for streamable HTTP) plus the RMCP client flag:
experimental_use_rmcp_client = true [mcp_servers.maplejuris] url = "https://api.maplejuris.com/mcp" bearer_token_env_var = "MAPLEJURIS_KEY" startup_timeout_sec = 20
Then codex mcp list should show the server as reachable.
2c · Python
Any MCP client library works. With fastmcp:
from fastmcp import Client
client = Client(
"https://api.maplejuris.com/mcp",
headers={"Authorization": f"Bearer {MAPLEJURIS_KEY}"},
)
async with client:
result = await client.call_tool(
"validate_citation",
{"query": "Criminal Code s. 718"},
)Other clients
Cursor and anything that accepts an HTTP MCP entry with headers:
{
"mcpServers": {
"maplejuris": {
"type": "http",
"url": "https://api.maplejuris.com/mcp",
"headers": { "Authorization": "Bearer ak_your_key_here" }
}
}
}Claude Desktop (and other launch-a-process clients) via the mcp-remote bridge:
{
"mcpServers": {
"maplejuris": {
"command": "npx",
"args": [
"mcp-remote@latest", "https://api.maplejuris.com/mcp",
"--header", "Authorization: Bearer ${MAPLEJURIS_KEY}"
],
"env": { "MAPLEJURIS_KEY": "ak_your_key_here" }
}
}
}claude.ai's one-click custom connectors require OAuth, which we don't support yet - use Claude Code or the bridge above in the meantime.
Every one of these clients holds your key and sends it with each call. §4.3 of the Terms makes you responsible for that: only enter a key into a platform whose configuration youcontrol, and where the key is stored as securely as your own systems would store it. A shared or managed workspace where someone else can read the configuration is not that. Every request made with your key is attributed to the account that owns it and spends that account's credits - on an organization, the shared pool - including requests you did not make.
Metering
Only tools/call spends credits - one per citation, so a 50-citation batch costs 50. Connecting and listing tools are free. Past your allowance, tool calls return a quota error and the connection itself keeps working. Full REST + MCP reference: llms-full.txt.