Skip to main content
Glama

Submit the signed vote (step 2 of 2)

submit_vote

Complete the vote: pass workId, the BODY_JSON from prepare_vote UNCHANGED, and the signature your wallet produced over MESSAGE_TO_SIGN. This server relays the signed request to the same public vote gate any HTTP client uses — it holds no keys and no funds, and without your signature it can do nothing. Free, always: no fee is ever charged for a validly signed vote. Returns the live tally for this packet.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
workIdYesThe packet id.
bodyJsonYesThe exact BODY_JSON string from prepare_vote, unchanged.
signatureYesThe 0x… personal_sign output over MESSAGE_TO_SIGN.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
okNo
toolNo
fundedNo
payUsdNo
workIdNo
claimIdNo
claimableNo
next_callNo
proofRuleNo
fulfillableByNo
definitionOfDoneNo
needs_from_callerNo
notClaimableReasonNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedOutput schema / properties / claimable
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / notClaimableReason
      Added value: +{
      +  "type": "string"
      +}
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "claimId": {
      +      "type": "string"
      +    },
      +    "definitionOfDone": {
      +      "type": [
      +        "object",
      +        "array",
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "fulfillableBy": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "funded": {
      +      "type": "boolean"
      +    },
      +    "needs_from_caller": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "next_call": {
      +      "type": "object"
      +    },
      +    "ok": {
      +      "type": "boolean"
      +    },
      +    "payUsd": {
      +      "type": "number"
      +    },
      +    "proofRule": {
      +      "type": "string"
      +    },
      +    "tool": {
      +      "type": "string"
      +    },
      +    "workId": {
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  3. Added

TDQS

A4.3/5.0
Behavior5/5

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

The description goes well beyond the annotations by disclosing that the server holds no keys or funds, relays to the same public vote gate, requires a signature to do anything, never charges fees, and returns the live tally. This adds meaningful behavioral context about safety, cost, and effect.

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?

The description is front-loaded with the actionable instruction and is reasonably concise. The trust/fee details are somewhat extra for invocation purposes but still relevant to behavioral expectations, so each sentence mostly earns its place.

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?

Given the rich schema, annotations, and output schema, the description covers the key prerequisites (prepare_vote output), the execution model, and the return value. It does not spell out failure modes or repeated-call consequences, but the idempotentHint=false annotation and the overall context make this sufficient.

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?

The input schema already documents all three parameters with 100% coverage, so the baseline is 3. The description reinforces the critical constraint that BODY_JSON must be unchanged and that the signature comes from the wallet's personal_sign output, but it does not add fundamentally new parameter information beyond the schema.

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?

The description clearly states a specific action ('Complete the vote') and precisely identifies the resource and required inputs (workId, BODY_JSON from prepare_vote, signature). It distinguishes itself from siblings by anchoring to the prepare_vote flow and noting this is step 2 of 2, making it unmistakable among submit_* tools.

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?

The description makes the usage context clear: this is the second step after prepare_vote, and it requires the exact BODY_JSON and wallet signature. It does not explicitly name alternatives or state when not to use it, but the step-2 framing and prepare_vote dependency provide strong guidance.

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