SACS.ai MCP — California School District Financial Data
by sacs.ai · remote · no sign-in to list tools · v0.1.1 · published by ai.sacs
SACS California school finance: public district financial data, CDE filings, comparisons, briefings.
12 tools: 4 change things and 8 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things4Claude Code: ask: see these tools
- Only reads8Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http sacs https://mcp.sacs.ai/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
12 tools
Changes things 4Claude Code: ask
sacs_district_context_packBuild fiscal-distress rows with source filing details.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Build fiscal-distress rows with source filing details. Deficit spending is signed net operating result / expenditure; negative means deficit.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
sacs_district_context_pack_batchBuild bounded district packs with source filing details.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Build bounded district packs with source filing details. Deficit spending is signed net operating result / expenditure; negative means deficit.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
sacs_register_clientOptionally register this MCP installation.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Optionally register this MCP installation. Before calling, tell the operator registration is voluntary, data access works without it, list the fields to be stored, and obtain consent. Never infer or submit personal or confidential information.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
sacs_submit_feedbackReport a wrong, stale, incomplete, or failed result, or send a feature request.No findings
Why it is in this group
- The name "sacs_submit_feedback" says "submit": a word for a change.
Description, as the server wrote it Report a wrong, stale, incomplete, or failed result, or send a feature request. Ask the operator to report issues here; explain the exact fields and submit only with consent. Include request ID and data version when available. Anonymous feedback is welcome. Never include personal, student, personnel, or confidential information.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
Only reads 8Claude Code: allow
sacs_compare_districtsCompare deterministic object-category totals for two explicit official datasets.No findings
Why it is in this group
- The name "sacs_compare_districts" says "compare": a word for reading.
Description, as the server wrote it Compare deterministic object-category totals for two explicit official datasets.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
sacs_explain_codeExplain current public fund, resource, goal, function, or object codes.No findings
Why it is in this group
- The name "sacs_explain_code" says "explain": a word for reading.
Description, as the server wrote it Explain current public fund, resource, goal, function, or object codes.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
sacs_list_public_datasetsList versioned official public SACS datasets for one district.No findings
Why it is in this group
- The name "sacs_list_public_datasets" says "list": a word for reading.
Description, as the server wrote it List versioned official public SACS datasets for one district.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
sacs_query_attendanceReturn recovered Form A ADA observations for one official district filing.No findings
Why it is in this group
- The name "sacs_query_attendance" says "query": a word for reading.
Description, as the server wrote it Return recovered Form A ADA observations for one official district filing.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
sacs_query_financial_summaryReturn bounded aggregate financial summaries for one explicit official dataset.No findings
Why it is in this group
- The name "sacs_query_financial_summary" says "query": a word for reading.
Description, as the server wrote it Return bounded aggregate financial summaries for one explicit official dataset.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
sacs_search_csamSearch California School Accounting Manual (CSAM 2024) by keywords and topic, procedure number or a returned chunk_id.No findings
Why it is in this group
- The name "sacs_search_csam" says "search": a word for reading.
Description, as the server wrote it Search California School Accounting Manual (CSAM 2024) by keywords and topic, procedure number or a returned chunk_id. Use chunk_id with direction=previous or next and limit (1–10) to read adjacent source chunks within the same procedure; navigation.continuation supplies the next request. Results include extracted text plus Markdown with conservative code-definition/journal tables, topic path, procedure revision, printed/PDF page and a CDE PDF citation. All non-stopword keywords must match; topic filters heading words. Use short accounting terms rather than a long question. Read citations for surrounding tables/context; later correspondence is excluded. No login or model-provider key required.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
sacs_search_districtsSearch current public California districts by name, 7-digit LEA, or 14-digit CDS.No findings
Why it is in this group
- The name "sacs_search_districts" says "search": a word for reading.
Description, as the server wrote it Search current public California districts by name, 7-digit LEA, or 14-digit CDS. Omit query or pass an empty string to browse all current districts. Follow page.next_offset while page.has_more is true; pages contain at most 50 rows.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.1.1. Values in angle brackets are yours to fill in.
claude mcp add --transport http sacs https://mcp.sacs.ai/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__sacs__sacs_search_districts",
"mcp__sacs__sacs_list_public_datasets",
"mcp__sacs__sacs_query_attendance",
"mcp__sacs__sacs_query_financial_summary",
"mcp__sacs__sacs_compare_districts",
"mcp__sacs__sacs_explain_code",
"mcp__sacs__sacs_search_csam",
"mcp__sacs__sacs_get_csam_related"
],
"ask": [
"mcp__sacs__sacs_district_context_pack",
"mcp__sacs__sacs_district_context_pack_batch",
"mcp__sacs__sacs_register_client",
"mcp__sacs__sacs_submit_feedback"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as sacs. Review it before you use it.