Skip to content

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.

Changes · 4

12 tools: 4 change things and 8 only read.

Scanned Oct 21, 2026

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/mcp

Tools

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/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.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.