Governed Model Context Protocol tools that let approved AI assistants search and summarize case records with citations. The server implements the Model Context Protocol and calls the Case Management and Documents APIs on behalf of the signed-in user, so an assistant can never see more than that person can.
Transport: Streamable HTTP at the agency MCP gateway (OAuth 2.0; acts on behalf of the signed-in user).
Guardrails
- Read-only by default. The only write tool drafts a note; a person reviews and posts it.
- Per-user authorization: each tool call carries the user's identity and is checked against their scopes and record access.
- Citations required: summaries reference the case event or document page behind every statement.
- Every tool call is written to the Audit Log API with the user, agent, tool, arguments, and outcome.
- Sensitive fields (for example SSN, A-Number, date of birth) are masked in tool output unless policy allows them.
Example call
{
"jsonrpc": "2.0",
"id": 7,
"method": "tools/call",
"params": {
"name": "summarize_case",
"arguments": {
"caseId": "CASE-2026-004817",
"focus": "missing evidence"
}
}
}{
"jsonrpc": "2.0",
"id": 7,
"result": {
"content": [
{
"type": "text",
"text": "The case is in review. A birth certificate requested on 2026-09-02 has not been received [event EVT-77290]. The applicant's employment letter covers 2024 only [DOC-55102 p.2]."
}
],
"structuredContent": {
"citations": [
{
"type": "event",
"id": "EVT-77290"
},
{
"type": "document",
"id": "DOC-55102",
"page": 2
}
]
}
}
}TOOL search_cases
Find cases by status, type, office, or date range. Returns case IDs and summaries only.
Mode: read · Scopes: cases:read
| Argument | Type |
|---|---|
status | string (optional) |
caseType | string (optional) |
updatedSince | date-time (optional) |
limit | integer, max 25 |
TOOL get_case
Return one case with its status history.
Mode: read · Scopes: cases:read
| Argument | Type |
|---|---|
caseId | string |
TOOL summarize_case
Summarize a case file. Every sentence cites a case event or document page.
Mode: read · Scopes: cases:read, documents:read
| Argument | Type |
|---|---|
caseId | string |
focus | string (optional), e.g. 'missing evidence' |
TOOL list_case_documents
List documents linked to a case, with classification and sensitivity labels.
Mode: read · Scopes: cases:read
| Argument | Type |
|---|---|
caseId | string |
TOOL get_document_text
Return extracted text for specific pages of a document, for citation.
Mode: read · Scopes: documents:read
| Argument | Type |
|---|---|
documentId | string |
pages | array of integers |
TOOL draft_case_note
Draft a case note for human review. Never saves on its own; a person approves and posts it.
Mode: draft (human approval required) · Scopes: cases:write
| Argument | Type |
|---|---|
caseId | string |
instructions | string |