Indiana Code

Search unofficial Indiana Code, IGA companions, and appellate cases. Not legal advice.

Should I use this

Quality & Safety

B
Description quality
90%
Schema completeness
68%
Naming quality
80%
Poisoning risk
100%
Permission match
60%
Protocol compliance
100%

Findings (7)

  • LOWTool 'ic_get_versions' description lacks action verbin ic_get_versions
  • LOWTool 'ic_get_companion' description lacks action verbin ic_get_companion
  • LOWTool 'ic_cases_citing' description lacks action verbin ic_cases_citing
  • LOWTool 'ic_browse' suggests web access but openWorldHint=falsein ic_browse
  • LOWTool 'iac_browse' suggests web access but openWorldHint=falsein iac_browse
  • LOWTool 'local_rules_browse' suggests web access but openWorldHint=falsein local_rules_browse
  • LOWTool 'judicial_officers_browse' suggests web access but openWorldHint=falsein judicial_officers_browse

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~5,108Tokens (tool definitions)
~1.1 KBTypical response size
Significant attention impact (3.99% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "indiana-code": {
      "url": "https://mcp.openindianalaw.org/mcp"
    }
  }
}

Remote endpoints

https://mcp.openindianalaw.org/mcpstreamable-http

What it can do

Tool inventory

Tools (24)

๐ŸŸข Read-only๐ŸŸก Write๐Ÿ”ด Deleteโšช Unknown
๐ŸŸขic_search(query, as_of, title, limit)

Full-text search of Indiana Code sections. Returns section ids, headings and short snippets (one hit per section); fetch the text with ic_get_section. `as_of` (YYYY-MM-DD) picks the year's snapshot; `title` limits to one title number such as '31' or '7.1'.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "title": "Query",
      "type": "string"
    },
    "as_of": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "As Of"
    },
    "title": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Title"
    },
    "limit": {
      "default": 10,
      "title": "Limit",
      "type": "integer"
    }
  },
  "required": [
    "query"
  ],
  "title": "ic_searchArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "ic_searchDictOutput"
}
๐ŸŸขic_resolve_citation(text)

Find Indiana Code citations in free text ('IC 31-16-15-25', 'I.C. ยง 7.1-1-1-1', 'Ind. Code ยง 35-42-1-1 (2024)') and return canonical section ids, headings, and nearby sections when an id does not exist.

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "title": "Text",
      "type": "string"
    }
  },
  "required": [
    "text"
  ],
  "title": "ic_resolve_citationArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "ic_resolve_citationDictOutput"
}
๐ŸŸขic_get_section(section_id, as_of)

Text of one section, e.g. section_id '31-16-15-25', as of a date (YYYY-MM-DD, default today). Returns the version in force with effective dates, amending acts, acts that take effect later (pending_acts), a confidence level and flags. Check `flags` and `confidence` before relying on a date between January and June.

Input Schema

{
  "type": "object",
  "properties": {
    "section_id": {
      "title": "Section Id",
      "type": "string"
    },
    "as_of": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "As Of"
    }
  },
  "required": [
    "section_id"
  ],
  "title": "ic_get_sectionArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "ic_get_sectionDictOutput"
}
๐ŸŸขic_get_versions(section_id)

All distinct versions of a section across 2017 to 2026 with effective dates, the years each appeared in, and the act clauses that touch it.

Input Schema

{
  "type": "object",
  "properties": {
    "section_id": {
      "title": "Section Id",
      "type": "string"
    }
  },
  "required": [
    "section_id"
  ],
  "title": "ic_get_versionsArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "ic_get_versionsDictOutput"
}
๐ŸŸขic_browse(node_id)

Outline of the Code. With no node_id, list titles; with '31' list articles; with '31-16' chapters; with '31-16-15' sections (latest snapshot).

Input Schema

{
  "type": "object",
  "properties": {
    "node_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Node Id"
    }
  },
  "title": "ic_browseArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "ic_browseDictOutput"
}
๐ŸŸขic_get_act(act_id, limit, offset)

The Code sections an act amended, added or repealed, with effective dates. act_id like 'P.L.98-2026' (loaded for 2017 and 2019 to 2026). Long acts are paged with limit and offset.

Input Schema

{
  "type": "object",
  "properties": {
    "act_id": {
      "title": "Act Id",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "title": "Limit",
      "type": "integer"
    },
    "offset": {
      "default": 0,
      "title": "Offset",
      "type": "integer"
    }
  },
  "required": [
    "act_id"
  ],
  "title": "ic_get_actArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "ic_get_actDictOutput"
}
๐ŸŸขic_list_companion(kind, year)

List Constitution, Non-code, full Acts, and archive-title PDFs loaded from the IGA downloads page. kind is constitution, noncode, acts, or archive_title.

Input Schema

{
  "type": "object",
  "properties": {
    "kind": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Kind"
    },
    "year": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Year"
    }
  },
  "title": "ic_list_companionArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "ic_list_companionDictOutput"
}
๐ŸŸขic_search_companion(query, kind, year, limit)

Full-text search of companion PDFs (Constitution, Non-code statutes, full Acts text, archive titles). Use ic_get_companion for a page.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "title": "Query",
      "type": "string"
    },
    "kind": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Kind"
    },
    "year": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Year"
    },
    "limit": {
      "default": 10,
      "title": "Limit",
      "type": "integer"
    }
  },
  "required": [
    "query"
  ],
  "title": "ic_search_companionArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "ic_search_companionDictOutput"
}
๐ŸŸขic_get_companion(doc_id, page)

One page of a companion document (doc_id like 'constitution-2026' or 'acts-2026'). Pages are 1-based.

Input Schema

{
  "type": "object",
  "properties": {
    "doc_id": {
      "title": "Doc Id",
      "type": "string"
    },
    "page": {
      "default": 1,
      "title": "Page",
      "type": "integer"
    }
  },
  "required": [
    "doc_id"
  ],
  "title": "ic_get_companionArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "ic_get_companionDictOutput"
}
๐ŸŸขcase_search(query, court, after, before, form, ...)

Search Indiana Supreme Court, Court of Appeals, and Tax Court clusters from a CourtListener extract. court is ind, indctapp, or indtc. form is memorandum or opinion when decision forms are indexed (text classification, not official status). disposition is affirmed, reversed, remanded, vacated, dismissed, mixed, or unlabeled when that index is loaded. A single label also matches a mixed closing that includes it. The label is a rule read of the closing line, not an official judgment. standard is de_novo, abuse_of_discretion, clearly_erroneous, sufficiency, prima_facie_error, substantial_evidence, or arbitrary_or_capricious when that index is loaded. Plain words such as 'de novo' are accepted. A standard is a rule read of a sentence that states it, not a ruling on which standard governs. separate is concurs, dissents, concurs_in_part, dissents_in_part, concurs_in_result, transfer_dissent, or joins when that index is loaded. That label is the slip's own "with separate opinion" vote line, not a holding. author is the slip byline name, or per_curiam, when that index is loaded. Most hits are metadata only.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "title": "Query",
      "type": "string"
    },
    "court": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Court"
    },
    "after": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "After"
    },
    "before": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Before"
    },
    "form": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Form"
    },
    "limit": {
      "default": 10,
      "title": "Limit",
      "type": "integer"
    },
    "disposition": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Disposition"
    },
    "standard": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Standard"
    },
    "separate": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Separate"
    },
    "author": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Author"
    }
  },
  "required": [
    "query"
  ],
  "title": "case_searchArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "case_searchDictOutput"
}
๐ŸŸขcase_get(cluster_id)

One Indiana opinion cluster by CourtListener cluster id. Includes opinion text only when the extract has a body. Includes author when that index is loaded: the slip byline, not the trial judge and not a holding. version_signal is a caution (yellow / red / year banner), never a green certified mark.

Input Schema

{
  "type": "object",
  "properties": {
    "cluster_id": {
      "title": "Cluster Id",
      "type": "string"
    }
  },
  "required": [
    "cluster_id"
  ],
  "title": "case_getArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "case_getDictOutput"
}
๐ŸŸขic_cases_citing(section_id, court, after, before, limit)

Opinions whose text mentions this Code section (IC / Ind. Code citations). section_id like '35-42-1-1'. This is a text-mention index, not a citator: it does not say the case construed, applied, or followed the statute, and it is not a good-law signal. court is ind, indctapp, or indtc.

Input Schema

{
  "type": "object",
  "properties": {
    "section_id": {
      "title": "Section Id",
      "type": "string"
    },
    "court": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Court"
    },
    "after": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "After"
    },
    "before": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Before"
    },
    "limit": {
      "default": 25,
      "title": "Limit",
      "type": "integer"
    }
  },
  "required": [
    "section_id"
  ],
  "title": "ic_cases_citingArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "ic_cases_citingDictOutput"
}
๐ŸŸขcases_construing(section_id, relation, court, after, before, ...)

Opinions with a citation-sentence signal for this Code section. relation is construes or applies. section_id like '35-42-1-1'. Status is rule_unreviewed: not a holding, not a citator, not good law. court is ind, indctapp, or indtc.

Input Schema

{
  "type": "object",
  "properties": {
    "section_id": {
      "title": "Section Id",
      "type": "string"
    },
    "relation": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Relation"
    },
    "court": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Court"
    },
    "after": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "After"
    },
    "before": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Before"
    },
    "limit": {
      "default": 25,
      "title": "Limit",
      "type": "integer"
    }
  },
  "required": [
    "section_id"
  ],
  "title": "cases_construingArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "cases_construingDictOutput"
}
๐ŸŸขcases_citing_case(query, court, after, before, limit)

Opinions whose text cites this case. query is a CourtListener cluster id, a reporter cite such as '848 N.E.2d 341', or an Indiana case number such as '22A-CT-925'. Text-mention index only: not a citator, not treatment, not good law. court is ind, indctapp, or indtc.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "title": "Query",
      "type": "string"
    },
    "court": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Court"
    },
    "after": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "After"
    },
    "before": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Before"
    },
    "limit": {
      "default": 25,
      "title": "Limit",
      "type": "integer"
    }
  },
  "required": [
    "query"
  ],
  "title": "cases_citing_caseArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "cases_citing_caseDictOutput"
}
๐ŸŸขcases_cited_in(query, limit)

Cases this opinion's text cites, resolved against Harvard reporter identifiers and Rule 22 case numbers. query is a cluster id, reporter cite, or case number. Unresolved federal and sister-state reporter mentions are listed separately. Text-mention index only: not a citator, not treatment, not good law.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "title": "Query",
      "type": "string"
    },
    "limit": {
      "default": 25,
      "title": "Limit",
      "type": "integer"
    }
  },
  "required": [
    "query"
  ],
  "title": "cases_cited_inArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "cases_cited_inDictOutput"
}
๐ŸŸขcases_citing_court(court, year, citing_court, after, before, ...)

Indiana opinions whose text has a (court year) parenthetical. court is an Indigo-style abbreviation such as '7th Cir.', 'N.D. Ind.', 'S.D. Ind.', or 'Ill.'. year is optional (2021). citing_court filters the citing Indiana court (ind, indctapp, indtc). Text-mention index only: not a citator, not treatment, not good law.

Input Schema

{
  "type": "object",
  "properties": {
    "court": {
      "title": "Court",
      "type": "string"
    },
    "year": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Year"
    },
    "citing_court": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Citing Court"
    },
    "after": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "After"
    },
    "before": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Before"
    },
    "limit": {
      "default": 25,
      "title": "Limit",
      "type": "integer"
    }
  },
  "required": [
    "court"
  ],
  "title": "cases_citing_courtArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "cases_citing_courtDictOutput"
}
๐ŸŸขiac_search(query, title, limit, year)

Full-text search of the electronic Indiana Administrative Code. year is an edition year such as 2006; omit it to use the edition iar.iga.in.gov labels Current. Returns section ids, headings and snippets; fetch text with iac_get_section. title is an IAC title number such as '10' or '312'. Unofficial; not legal advice. Verify at iar.iga.in.gov.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "title": "Query",
      "type": "string"
    },
    "title": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Title"
    },
    "limit": {
      "default": 10,
      "title": "Limit",
      "type": "integer"
    },
    "year": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Year"
    }
  },
  "required": [
    "query"
  ],
  "title": "iac_searchArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "iac_searchDictOutput"
}
๐ŸŸขiac_resolve_citation(text, year)

Find IAC citations in free text ('10 IAC 1.5-1-1') and return canonical section ids. year selects a loaded edition; omit it for Current. This is not an Indiana Code (IC) resolver.

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "title": "Text",
      "type": "string"
    },
    "year": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Year"
    }
  },
  "required": [
    "text"
  ],
  "title": "iac_resolve_citationArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "iac_resolve_citationDictOutput"
}
๐ŸŸขiac_get_section(section_id, year)

Text of one IAC section, e.g. section_id '10-1.5-1-1' or '10 IAC 1.5-1-1'. year selects a loaded edition; omit it for the edition iar.iga.in.gov labels Current. Unofficial; not legal advice.

Input Schema

{
  "type": "object",
  "properties": {
    "section_id": {
      "title": "Section Id",
      "type": "string"
    },
    "year": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Year"
    }
  },
  "required": [
    "section_id"
  ],
  "title": "iac_get_sectionArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "iac_get_sectionDictOutput"
}
๐ŸŸขiac_browse(node_id, year)

Outline of the IAC. With no node_id, list titles; with '10' list articles; with '10-1.5' rules; with '10-1.5-1' sections. year selects a loaded edition; omit it for Current.

Input Schema

{
  "type": "object",
  "properties": {
    "node_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Node Id"
    },
    "year": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Year"
    }
  },
  "title": "iac_browseArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "iac_browseDictOutput"
}
๐ŸŸขlocal_rules_browse(county)

Posted current local-rule compilations for Indiana counties. No county lists all 92 with posted/missing status. county is a slug such as 'lake-county' or a name such as 'Lake'. Missing counties name Trial Rule 81(G); this tool does not contact clerks. Unofficial; not legal advice.

Input Schema

{
  "type": "object",
  "properties": {
    "county": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "County"
    }
  },
  "title": "local_rules_browseArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "local_rules_browseDictOutput"
}
๐ŸŸขlocal_rules_search(query, county, limit)

Full-text search of posted current county local-rule PDFs. county optionally narrows to one county name or slug. Proposed rules are not indexed. Fetch a page with ic_get_companion using the returned doc_id. Unofficial; not legal advice.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "title": "Query",
      "type": "string"
    },
    "county": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "County"
    },
    "limit": {
      "default": 10,
      "title": "Limit",
      "type": "integer"
    }
  },
  "required": [
    "query"
  ],
  "title": "local_rules_searchArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "local_rules_searchDictOutput"
}
๐ŸŸขjudicial_officers_browse(county, court, role)

Pre-election roster of Indiana judicial officers from the official Directory of Courts and Clerks (trial, 2026-10-21) and appellate bios (2026-10-27). county is a name such as 'Adams'. court is 'Circuit Court' or 'Indiana Supreme Court'. role is judge, magistrate, justice, or chief_justice. Not a post-canvass list. Not salaries. Unofficial; not legal advice.

Input Schema

{
  "type": "object",
  "properties": {
    "county": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "County"
    },
    "court": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Court"
    },
    "role": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Role"
    }
  },
  "title": "judicial_officers_browseArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "judicial_officers_browseDictOutput"
}
๐ŸŸขjudicial_officers_search(query, limit)

Name search of the pre-election judicial officer roster. query is a surname or part of a name. Not a post-canvass list. Not salaries. Unofficial; not legal advice.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "title": "Query",
      "type": "string"
    },
    "limit": {
      "default": 25,
      "title": "Limit",
      "type": "integer"
    }
  },
  "required": [
    "query"
  ],
  "title": "judicial_officers_searchArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "judicial_officers_searchDictOutput"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded24 tools