Seven tools, one server.
Expose every domain to any MCP client. Tool descriptions carry the routing hints — “legal, regulatory, compliance questions go here” — so the upstream agent routes itself.
BuildingThe MCP server ships with 1stAuthor Law. The configuration below is final; the endpoint goes live with it.
claude mcp add --transport http 1stauthor https://mcp.1stauthor.com/mcp \ --header "Authorization: Bearer YOUR_KEY"
{
"mcpServers": {
"1stauthor": {
"url": "https://mcp.1stauthor.com/mcp",
"headers": { "Authorization": "Bearer YOUR_KEY" }
}
}
}from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
async with streamablehttp_client(
"https://mcp.1stauthor.com/mcp",
headers={"Authorization": "Bearer YOUR_KEY"},
) as (read, write, _):
async with ClientSession(read, write) as s:
await s.initialize()
r = await s.call_tool("ask", {"query": "网络刷单诈骗三万元,未遂,量刑区间", "scope": "both"})
print(r.content[0].text)Tools
Tools
| papers_search | Hybrid search over full-text papers with database-style filters. Returns briefs, not answers. |
| papers_read | Read a paper in layers: brief, head, one section, or raw. |
| law_search | Article-level retrieval over statutes from 26 jurisdictions. Filters by jurisdiction, law, domain, status, date. |
| law_read | One article with translation and extraction, its context window, a chapter, or the full law. |
| case_search | Retrieve Chinese judgments by cause, court, date, cited article, amount, sentence. Carries a coverage block. |
| case_read | A judgment in layers: brief, head, opinion, decision, raw. Also the articles it cites. |
| ask | Agentic search: a question in, a cited answer out. scope=auto routes to papers, law or cases. |
An agent handed a bare ask(query) tool will use this API poorly. These three distinctions belong in your tool descriptions. Read the docs →