Liberty Ratings for every New Hampshire state legislator since 2006, and who represents a town.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
What each grade means for a given year, the percentage band it covered, and how many legislators received it. The bands change from year to year.
the rating year; defaults to the most recent session
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http liberty-ratings https://api.nhliberty.org/mcp
What each grade means for a given year, the percentage band it covered, and how many legislators received it. The bands change from year to year.
| Argument | Type | Description |
|---|---|---|
| year | integer | the rating year; defaults to the most recent session |
{
"type": "object",
"properties": {
"year": {
"type": "integer",
"description": "the rating year; defaults to the most recent session"
}
},
"additionalProperties": false
}One legislator's Liberty Rating in every session they served, found by name, slug, personId or employeeNo. Joins the two employee numbers a member holds if they moved between the House and the Senate.
| Argument | Type | Description |
|---|---|---|
| toYear | integer | latest session to report |
| fromYear | integer | earliest session to report |
| legislator* | string | a name, slug, personId or employeeNo |
{
"type": "object",
"required": [
"legislator"
],
"properties": {
"toYear": {
"type": "integer",
"description": "latest session to report"
},
"fromYear": {
"type": "integer",
"description": "earliest session to report"
},
"legislator": {
"type": "string",
"description": "a name, slug, personId or employeeNo"
}
},
"additionalProperties": false
}The roll calls NHLA scored in one session, how a legislator voted on each, and whether that matched NHLA's position. Optionally filtered to one bill.
| Argument | Type | Description |
|---|---|---|
| bill | string | limit to one bill, e.g. HB609 |
| year | integer | the session; defaults to the most recent one they served |
| limit | integer | how many roll calls to return; default 50, maximum 200 |
| legislator* | string | a name, slug, personId or employeeNo |
{
"type": "object",
"required": [
"legislator"
],
"properties": {
"bill": {
"type": "string",
"description": "limit to one bill, e.g. HB609"
},
"year": {
"type": "integer",
"description": "the session; defaults to the most recent one they served"
},
"limit": {
"type": "integer",
"description": "how many roll calls to return; default 50, maximum 200"
},
"legislator": {
"type": "string",
"description": "a name, slug, personId or employeeNo"
}
},
"additionalProperties": false
}Every state representative and senator for a New Hampshire town, with their Liberty Rating. Use this for "who represents me". A town is usually in more than one district; report all of them. For a city divided into wards, pass the ward. Given only a ZIP code, pass zip; a ZIP code covering several towns comes back asking which one.
| Argument | Type | Description |
|---|---|---|
| zip | string | a five-digit ZIP code, when the person gave that instead of a town |
| town | string | the town or city, spelled as a person would type it; pass this or zip |
| ward | integer | the ward number, in a city divided into wards |
| year | integer | the rating year; defaults to the most recent session |
{
"type": "object",
"properties": {
"zip": {
"type": "string",
"description": "a five-digit ZIP code, when the person gave that instead of a town"
},
"town": {
"type": "string",
"description": "the town or city, spelled as a person would type it; pass this or zip"
},
"ward": {
"type": "integer",
"description": "the ward number, in a city divided into wards"
},
"year": {
"type": "integer",
"description": "the rating year; defaults to the most recent session"
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 11, 2026.