Skip to main content
Glama

Election Index

When is the result final?

when_final
Read-only

When will a race's final (certified) result exist? Returns the expected window, its confidence (announced / precedent / estimate) and basis, how many days the final took last time, and the final count itself once we hold it. Use this before asking or settling any "final result" question.

Input Schema

NameRequiredDescriptionDefault
raceNoRace id, e.g. "president"; optional when the election has one race
electionYesElection id, e.g. "brazil-general-2026"; list ids with upcoming_elections

Output Schema

NameRequiredDescriptionDefault
metaYesWhat this answer was built from; cite dataset_version
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / meta / properties / doi
      Added value: +{
      +  "description": "Zenodo concept DOI: the latest archived release",
      +  "type": "string"
      +}
  2. Changed1 schema field changed
    • addedOutput schema / properties / meta / properties / copyright
      Added value: +{
      +  "description": "Rights holder",
      +  "type": "string"
      +}
  3. Changed1 schema field changed
    • addedOutput schema / properties / result / properties / final_result / properties / rows / items / properties / ballot_name
      Added value: +{
      +  "description": "Name on the ballot, as the authority's file writes it",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  4. Changed5 schema fields changed
    • addedOutput schema / properties / result / properties / final_result / properties / electorate
      Added value: +{
      +  "description": "Registered voters",
      +  "type": [
      +    "integer",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / result / properties / final_result / properties / rows / items / properties / colour
      Added value: +{
      +  "description": "Party colour (#RRGGBB, from Wikidata)",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / result / properties / final_result / properties / rows / items / properties / party_id
      Added value: +{
      +  "description": "Wikidata QID of the party",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / result / properties / final_result / properties / turnout
      Added value: +{
      +  "description": "Percent of registered voters who cast a ballot",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / result / properties / last_time
      Added value: +{
      +  "description": "How long the final result took the last time this kind of race was held here",
      +  "properties": {
      +    "act": {
      +      "description": "What the final act was",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "days": {
      +      "description": "Days from polling day to the final act",
      +      "type": "integer"
      +    },
      +    "election": {
      +      "description": "That election, e.g. \"Bundestag 2025\"",
      +      "type": "string"
      +    },
      +    "final_on": {
      +      "description": "Day of its official final act",
      +      "type": "string"
      +    },
      +    "polling_day": {
      +      "description": "Its polling day",
      +      "type": "string"
      +    },
      +    "source": {
      +      "description": "Page showing the date",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "source_kind": {
      +      "description": "authority or press",
      +      "type": "string"
      +    }
      +  },
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
  5. Changed1 schema field changed
    • addedOutput schema / properties / result / properties / final_result
      Added value: +{
      +  "description": "The final count, when we hold it",
      +  "properties": {
      +    "licence": {
      +      "description": "Licence of the numbers",
      +      "type": "string"
      +    },
      +    "published_at": {
      +      "description": "When the publisher released it",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "publisher": {
      +      "description": "Who published the count",
      +      "type": "string"
      +    },
      +    "rows": {
      +      "items": {
      +        "properties": {
      +          "candidate": {
      +            "description": "Candidate or list",
      +            "type": "string"
      +          },
      +          "party": {
      +            "description": "Party, where recorded",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "seats": {
      +            "description": "Seats or electoral votes won",
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "share": {
      +            "description": "Percent of total votes",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "votes": {
      +            "description": "Votes",
      +            "type": "integer"
      +          },
      +          "winner": {
      +            "description": "Most votes in this count",
      +            "type": "boolean"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "source": {
      +      "description": "File or page the numbers were copied from",
      +      "type": "string"
      +    },
      +    "stage": {
      +      "description": "Count stage of this version, e.g. final-result",
      +      "type": "string"
      +    },
      +    "total_votes": {
      +      "description": "Total votes cast in the race",
      +      "type": "integer"
      +    }
      +  },
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
  6. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. Beyond that, the description discloses the epistemic character of the answer — the window may be based on an announcement, precedent, or an estimate — and warns that the final count is only present "once we hold it." That tells the agent how much to trust and how to handle an absent count, which is real value not present in the annotations.

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

Conciseness4/5

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

Three sentences, front-loaded with the core question before the return-value detail and the usage directive. The middle sentence is dense but its list maps cleanly to distinct outputs. No filler wording; the only mild redundancy is re-listing returns when an output schema exists.

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

Completeness4/5

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

The tool is low-complexity (one required string parameter) and an output schema exists, so the description need not spell out the response shape — yet it usefully characterizes the confidence tiers. It stops short of saying what happens when no estimate is available at all or how far out the window can be, which an agent preparing a fallback would want.

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

Parameters3/5

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

Schema coverage is 100%, so both parameters (election, race) are already documented with examples and the optionality rule for race. The description adds no syntax, format, or disambiguation guidance for these parameters. Baseline 3 is correct when the schema carries the full parameter burden.

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

Purpose4/5

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

The description opens with a specific question the tool answers — when a race's certified final result will exist — and then enumerates what comes back (expected window, confidence tier, precedent duration, final count). That is a clear verb+resource statement an agent can act on. It does not name a sibling such as election_status, so the boundary with adjacent tools is implied rather than stated.

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?

"Use this before asking or settling any 'final result' question" gives a concrete trigger condition, which is more than most definitions offer. However, it provides no exclusions — it never says when to prefer election_status or resolution_sources instead, leaving the agent to infer the split between timing questions and status questions.

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.

Resources