Skip to main content
Glama

Get Event

openstates_get_event
Read-onlyIdempotent

Fetch full event detail by OCD event ID. Returns agenda, participants, media links, and associated documents when requested via include. Experimental — event coverage is limited in Open States. Obtain the event_id from openstates_search_events.

Input Schema

NameRequiredDescriptionDefault
includeNoRelated data to inline. "agenda" and "participants" are most useful; "links", "media", and "documents" add related URLs, recordings, and files, and "sources" the provenance URLs behind the record.
event_idYesOCD event ID (from openstates_search_events results).

Output Schema

NameRequiredDescriptionDefault
idNoOCD event ID.
nameNoEvent name.
errorNoPresent when the call failed. Absent on success.
linksNoEvent links when include=links is requested.
mediaNoRecordings and other media when include=media is requested.
agendaNoAgenda items when include=agenda is requested.
statusNoEvent status.
sourcesNoProvenance sources when include=sources is requested.
end_dateNoEvent end datetime. Absent when not recorded.
locationNoEvent location when available.
documentsNoAttached documents when include=documents is requested.
start_dateNoEvent start datetime.
descriptionNoEvent description.
jurisdictionNoHosting jurisdiction.
participantsNoParticipants when include=participants is requested.
classificationNoEvent classification.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed17 schema fields changed
    • changedOutput schema / properties / documents / description
      Previous value: -"Document links when include=documents is requested."New value: +"Attached documents when include=documents is requested."
    • changedOutput schema / properties / documents / items / description
      Previous value: -"Document link record."New value: +"Document record."
    • addedOutput schema / properties / documents / items / properties / classification
      Added value: +{
      +  "description": "Document classification. Empty string when Open States recorded none.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / documents / items / properties / date
      Added value: +{
      +  "description": "Document date. Empty string when Open States recorded no date.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / documents / items / properties / links
      Added value: +{
      +  "description": "URLs for this document record — usually one, occasionally none.",
      +  "items": {
      +    "additionalProperties": false,
      +    "description": "One URL for this document record.",
      +    "properties": {
      +      "note": {
      +        "description": "Link description. Absent when Open States recorded none.",
      +        "type": "string"
      +      },
      +      "url": {
      +        "description": "Document URL.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "url"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • removedOutput schema / properties / documents / items / properties / url
      Removed value: -{
      -  "description": "Document URL.",
      -  "type": "string"
      -}
    • changedOutput schema / properties / documents / items / required
      Previous value: -[
      -  "url",
      -  "note"
      -]New value: +[
      +  "note",
      +  "date",
      +  "classification",
      +  "links"
      +]
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `not_found`: Event ID does not exist in Open States. `upstream_timeout`: Open States did not answer within the per-request timeout. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: Event ID does not exist in Open States. `upstream_timeout`: Open States did not answer within the per-request timeout. `rate_limited`: The shared Open States API key reached a request cap — Open States' per-minute or daily limit, or this server's own daily budget. Other values are possible when a failure originates below the handler."
    • changedOutput schema / properties / error / properties / data / properties / reason / examples
      Previous value: -[
      -  "not_found",
      -  "upstream_timeout"
      -]New value: +[
      +  "not_found",
      +  "upstream_timeout",
      +  "rate_limited"
      +]
    • changedOutput schema / properties / media / description
      Previous value: -"Media links when include=media is requested."New value: +"Recordings and other media when include=media is requested."
    • changedOutput schema / properties / media / items / description
      Previous value: -"Media link record."New value: +"Media record."
    • addedOutput schema / properties / media / items / properties / classification
      Added value: +{
      +  "description": "Media classification. Empty string when Open States recorded none.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / media / items / properties / date
      Added value: +{
      +  "description": "Media date. Empty string when Open States recorded no date.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / media / items / properties / links
      Added value: +{
      +  "description": "URLs for this media record — usually one, occasionally none.",
      +  "items": {
      +    "additionalProperties": false,
      +    "description": "One URL for this media record.",
      +    "properties": {
      +      "note": {
      +        "description": "Link description. Absent when Open States recorded none.",
      +        "type": "string"
      +      },
      +      "url": {
      +        "description": "Media URL.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "url"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / media / items / properties / offset
      Added value: +{
      +  "description": "Start offset into the recording as Open States recorded it. Absent when not recorded.",
      +  "type": "number"
      +}
    • removedOutput schema / properties / media / items / properties / url
      Removed value: -{
      -  "description": "Media URL.",
      -  "type": "string"
      -}
    • changedOutput schema / properties / media / items / required
      Previous value: -[
      -  "url",
      -  "note"
      -]New value: +[
      +  "note",
      +  "date",
      +  "classification",
      +  "links"
      +]
  2. Changed6 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedInput schema / additionalProperties
      Added value: +false
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "id",
      +      "name",
      +      "description",
      +      "classification",
      +      "start_date",
      +      "status",
      +      "jurisdiction"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / error
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "Present when the call failed. Absent on success.",
      +  "properties": {
      +    "code": {
      +      "description": "JSON-RPC error code for this failure.",
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "data": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "reason": {
      +          "description": "Machine-readable failure mode. Declared by this tool: `not_found`: Event ID does not exist in Open States. `upstream_timeout`: Open States did not answer within the per-request timeout. Other values are possible when a failure originates below the handler.",
      +          "examples": [
      +            "not_found",
      +            "upstream_timeout"
      +          ],
      +          "type": "string"
      +        },
      +        "recovery": {
      +          "additionalProperties": {},
      +          "description": "Actionable next step for the caller.",
      +          "properties": {
      +            "hint": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "hint"
      +          ],
      +          "type": "object"
      +        },
      +        "retryable": {
      +          "description": "Whether retrying may succeed.",
      +          "type": "boolean"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "message": {
      +      "description": "Human-readable description of what went wrong.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "code",
      +    "message"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / required
      Removed value: -[
      -  "id",
      -  "name",
      -  "description",
      -  "classification",
      -  "start_date",
      -  "status",
      -  "jurisdiction"
      -]
  3. Changed4 schema fields changed
    • changedOutput schema / properties / documents / items / properties / note / description
      Previous value: -"Document description."New value: +"Document description. Empty string when Open States recorded no description."
    • changedOutput schema / properties / links / items / properties / note / description
      Previous value: -"Link description."New value: +"Link description. Empty string when Open States recorded no description."
    • changedOutput schema / properties / media / items / properties / note / description
      Previous value: -"Media description."New value: +"Media description. Empty string when Open States recorded no description."
    • changedOutput schema / properties / sources / items / properties / note / description
      Previous value: -"Source note."New value: +"Source note. Empty string when Open States recorded no note."
  4. Changed4 schema fields changed
    • changedInput schema / properties / include / description
      Previous value: -"Related data to inline. \"agenda\" and \"participants\" are most useful."New value: +"Related data to inline. \"agenda\" and \"participants\" are most useful; \"links\", \"media\", and \"documents\" add related URLs, recordings, and files, and \"sources\" the provenance URLs behind the record."
    • changedOutput schema / properties / participants / items / properties / role / description
      Previous value: -"Participant role."New value: +"Participant role. Absent when upstream omits it."
    • changedOutput schema / properties / participants / items / required
      Previous value: -[
      -  "name",
      -  "entity_type",
      -  "role"
      -]New value: +[
      +  "name",
      +  "entity_type"
      +]
    • addedOutput schema / properties / sources
      Added value: +{
      +  "description": "Provenance sources when include=sources is requested.",
      +  "items": {
      +    "additionalProperties": false,
      +    "description": "Source record.",
      +    "properties": {
      +      "note": {
      +        "description": "Source note.",
      +        "type": "string"
      +      },
      +      "url": {
      +        "description": "Source URL.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "url",
      +      "note"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  5. First observed

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/openWorld, so the safety profile is covered; the description adds genuinely non-structured context by disclosing that related data is only inlined on request via include and that event coverage is limited/experimental. Missing only rate-limit or pagination-style operational notes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: purpose and return shape first, the include-gating second, the experimental caveat and ID source last. No filler and nothing buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description doesn't need to detail return structure, and it covers the remaining agent-critical points: where the ID comes from, how to expand results, and the coverage limitation. Nothing needed to call it correctly is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description goes further by explaining that agenda, participants, media, and documents are conditional on the include argument. This clarifies the cause-and-effect of the optional parameter rather than restating its type.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Fetch full event detail by OCD event ID") and immediately enumerates the payload (agenda, participants, media links, documents), which separates it cleanly from openstates_search_events. An agent knows exactly what this returns without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent to openstates_search_events to obtain the required event_id, and flags "Experimental — event coverage is limited in Open States" as a caveat on when results may be thin. It stops short of naming a true alternative tool or when-not-to-call condition, but the prerequisite path is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.