LR Labs — cross-border tax law as a callable API
lrlabs.ai · MCP endpoint: https://lrlabs.ai/mcp
LR Labs is a deterministic reasoning engine for cross-border tax. It compiles law — treaty text, statute, circulars, judgments — into conditions a machine can evaluate, then computes the position: the answer, the conditions it stands on, the assumptions it makes, the unresolved facts it turns on, and the authority for each step.
The engine is symbolic, not generative. The same facts and the same law always produce the same answer. Where the authorities divide, it says so instead of guessing. Outside the law it has compiled, it refuses rather than answering. No language model sits anywhere in the evaluation path.
This repository is the client connector. The engine itself is hosted at lrlabs.ai — you do not need to run anything to use it.
Why an agent should call this
Language models are strong translators of legal text into structure and weak executors of compositional legal inference — error compounds across every condition, threshold and date. A solver's does not. Recent work makes the point empirically: on contamination-controlled statutory-tax splits, the same frontier models gain roughly twenty points when they translate into a formal representation and delegate inference to a symbolic engine, and the gain does not shrink as models improve.1
LR Labs is that engine for cross-border tax, with the legal work already done: provisions compiled to spans, judgments carrying string-verified quotes and pinpoints, and every conclusion shipped with the conditions it depends on.
Connect
Claude Code
claude mcp add --transport http lr-labs https://lrlabs.ai/mcp
Claude Desktop / claude.ai — Settings → Connectors → Add custom
connector → https://lrlabs.ai/mcp
ChatGPT (developer mode) / OpenAI Agents SDK
from agents.mcp import MCPServerStreamableHttp
lr_labs = MCPServerStreamableHttp(params={"url": "https://lrlabs.ai/mcp"})
Cursor — .cursor/mcp.json
{ "mcpServers": { "lr-labs": { "url": "https://lrlabs.ai/mcp" } } }
Gemini CLI — ~/.gemini/settings.json
{ "mcpServers": { "lr-labs": { "httpUrl": "https://lrlabs.ai/mcp" } } }
stdio (this repo) — for clients that cannot speak remote MCP:
{ "mcpServers": { "lr-labs": { "command": "python3",
"args": ["/path/to/lr_labs_mcp.py"] } } }
No MCP client? The engine is also a plain GET — every intake key is a query parameter, no key required:
https://lrlabs.ai/compute?agentType=dependent&concludesContracts=secures&agentExclusivity=yes
Fetch /compute with no parameters for the
full parameter manual, or /llms.txt for the
machine-readable overview.
Tools
| Tool | Answers |
|---|---|
analyze_cross_border_tax | Permanent-establishment exposure and Indian tax liability for a treaty pair — the condition tree, the GIVEN set, deciding facts, the GAAR gate, authorities |
screen_transfer_pricing | Safe harbour (Rule 10TD), documentation thresholds (Rule 10D), method eligibility, tested party, the 35th–65th percentile range |
verify_tax_research_note | Any tax analysis, checked against compiled law — citations resolved, thresholds and temporal claims verified |
list_compiled_corridors | Honest coverage: what the engine can and cannot answer |
What is compiled
- India–US Article 5 in full, including the 1989 Exchange of Notes — which fixes four conjunctive conditions on the securing-orders limb (frequent acceptance of orders; substantially-all sales-related activities; holding out that acceptance binds; enterprise-fostered belief). "Only if" makes each one necessary. No reported Indian decision has yet applied them, and that caveat travels with every answer that relies on them.
- The domestic charge — s.9(1)(i) with Explanations 1, 2 and 2A: the agent routes, significant economic presence, and the apportionment limit, read against s.90(2) treaty relief.
- Treaty access and the GAAR gate — after AAR v Tiger Global (2026 INSC 60): a TRC is necessary but no longer sufficient; the Chapter X-A applicability screen (Rule 10U exclusions, s.95(2) commencement, s.144BA invocation) is computed, while the substantive s.96 evaluation is never computed and says so.
- The judgment line with string-verified quotes and paragraph pinpoints — Morgan Stanley, e-Funds, Formula One, Progress Rail, UAE Exchange, Centrica, Rolls Royce, GE Energy, and others.
- Indian transfer pricing — safe harbour, documentation, methods, range.
127 compiled rules across 10 corridors. Coverage is honest and inspectable:
call list_compiled_corridors or read
lrlabs.ai/q for worked examples.
Design commitments
- Deterministic — same facts + same law ⇒ byte-identical answer.
- No model in the evaluation path — an LLM only translates a question in and renders a note out; it never decides.
- Refuses outside coverage — an uncompiled corridor returns a structured refusal naming what is compiled, never a guess.
- Every conclusion ships its conditions — no answer without its GIVEN set, its assumptions, and the facts that would change it.
Not legal advice
LR Labs produces computed legal research, not advice. Outputs carry their as-at date, their assumptions, and their open questions. Verify before relying.
Licence
MIT (this connector). The compiled corpus and the hosted engine are proprietary.
Footnotes
-
Kordjamshidi, Aslan, Seshadri, Barrett & Santus, Reasoners or Translators? Contamination-aware Evaluation and Neuro-Symbolic Robustness on Tax Law, SURGeLLM @ ACL 2026, pp. 344–360 (ACL Anthology · arXiv 2605.16052). ↩