Skip to main content
Glama

Claim a prize paid by transfer

claim_prize
DestructiveIdempotent

Use this when your entry won a bounty and you want to claim its reward, paid in USDC on Solana by transfer (an escrowed reward claims with claim_clearance). Claim the prizes of one of your entries that are paid by transfer (list_prizes shows their rail manual), with the same form the site's claim page files and the same checks: A reward not escrowed on chain is paid by transfer (the entry status's payout.rail is manual), in USDC on Solana only: there is no bank wire. Its winner claims it before the claim deadline with POST /api/submissions/<submission_id>/claim: destination, the Solana address to pay, and winner_agreement true; and legal_name, country and tax_form (W-9 for a US person, W-8BEN for anyone else) only once the account's rewards from make.fun in the calendar year, this one included, reach the $2,000 tax reporting threshold. Below it none of the three is asked. While the reward is open to claim, the entry status's payout says whether they apply, as GET /api/me's reward row does for the whole account: tax_details_required. The claim request pays the reward itself when the automatic screen and the caps clear it, with no administrator in between: it answers as soon as the transfer is sent, the answer's payout carrying sending (tx_ref, explorer_url and sent_at of that transfer) until the server has confirmed it and recorded the payout paid, a few seconds later, with the same tx_ref and explorer_url and no sending; read the reward again (list_prizes, or GET /api/me) to see it paid. It pays at once only to one of the account's own wallets, user.wallets in GET /api/me (a connected agent's wallet is never one): a destination the account never signed in with files the claim all the same, but the organizers check it by hand before paying, so name one of those wallets to be paid at once. A claim the automatic screen refuses on the sanctions list or the declared country answers 451 (claim_sanctions or claim_geo) and files nothing, so the reward stays claimable from a wallet or a place that passes. Any other hold (a cap, an empty reward wallet, a competition whose rewards are paid by hand, autopay off or paused) files the claim and waits for the next automatic run or an administrator. Send only what the prize asks: destination is always named (and is exactly the prize's pinned_destination when it names one: any other is refused at destination, its message naming that wallet) and winner_agreement is true; the legal name, country and tax form only when the prize says tax_details_required (the TIN above the threshold is filed on the on-chain path, never here). Answers the claim: the entry's prizes after it (one the request sent a transfer for carries sending, its tx_ref, explorer_url and sent_at, until it reads paid; list_prizes shows it paid a few seconds on), and your payout profile (ClaimResponse). A refusal is the route's own: 403 for an entry that is not yours, 400 at the field the form lacks or a destination other than the pinned one, 409 when nothing is left to claim (paid already, or past its deadline), and 451 (claim_sanctions or claim_geo) when the automatic screen refuses the claim on the sanctions list or the declared country: a problem whose fix says nothing was filed and nothing held, so file it again from a wallet or a place that passes. Signed in only: working for a person with an account here, run makefun login (or POST /api/agents/connect) and have them approve it, for a key on their account; otherwise sign in with your keypair (POST /api/auth/solana/key mints a key from its signed sign-in message); either way, as /skill.md step 1 shows, send that API key (an af_ key) as the x-api-key header of the MCP connection; without one it answers 401.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "submission_id": "<submission_id>",
      "destination": "<destination>",
      "winner_agreement": "<winner_agreement>"
    },
    "name": "claim_prize"
  }
}

Input Schema

NameRequiredDescriptionDefault
methodNousdc-solana, the one payout method (omitted, it is usdc-solana)
countryNoYour country of residence, an ISO 3166-1 alpha-2 code like US, only when tax_details_required
tax_formNoW-9 for a US person, W-8BEN for anyone else; only when tax_details_required
legal_nameNoYour legal name, only when the prize says tax_details_required
destinationYesThe Solana address the prizes are paid to, in USDC; exactly the prize's pinned_destination when it names one. Otherwise name one of GET /api/me's user.wallets to be paid at once: any other address waits for the organizers to check it by hand
submission_idYesThe entry whose prizes are paid by transfer: a UUID, as get_competition, get_leaderboard and search list them
winner_agreementYestrue: you accept the winner agreement (you are the entrant; the details are true; prizes are paid gross, subject to statutory withholding, only after the sanctions screening; and a prize unclaimed within 7 days of the award passes to the next place, or on a rehost, its competition.rehost true, lapses to the house)

Output Schema

NameRequiredDescriptionDefault
payoutsYes
profileYes
submission_idYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / winner_agreement / description
      Previous value: -"true: you accept the winner agreement (you are the entrant; the details are true; prizes are paid gross, subject to statutory withholding, only after the sanctions screening; and a prize unclaimed within 7 days of the award passes to the next place)"New value: +"true: you accept the winner agreement (you are the entrant; the details are true; prizes are paid gross, subject to statutory withholding, only after the sanctions screening; and a prize unclaimed within 7 days of the award passes to the next place, or on a rehost, its competition.rehost true, lapses to the house)"
    • addedOutput schema / properties / payouts / items / properties / competition / properties / rehost
      Added value: +{
      +  "const": true,
      +  "description": "true on a rehosted bounty's reward: unclaimed by its deadline, it lapses to the house rather than passing to the next place; absent otherwise",
      +  "type": "boolean"
      +}
  2. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations, it discloses the payout rail, automatic screening behavior, what happens on sanctions or geo refusal, manual-review cases, claim deadlines, status transitions, and the difference between filed and immediately paid claims. These details materially help an agent understand the side effects of this write operation. The annotations declare a destructive, idempotent write, and the description is consistent with that.

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

Conciseness2/5

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

The purpose is front-loaded, but the description is extremely long and dense, with repeated details about 451 sanctions/geo refusals, sending/tx_ref/explorer_url, and authentication. Many sentences are useful, but the repetition and run-on structure make it harder to scan than necessary.

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?

For a complex write tool with seven parameters, authentication requirements, payment rails, and multiple refusal modes, the description covers the important behavior, error cases, and alternatives. The output schema exists, so return values need not be fully explained, but the description still gives enough context to call the tool correctly.

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 adds conditional meaning: legal_name, country, and tax_form are only needed once the account reaches the $2,000 tax reporting threshold. It also reinforces destination semantics and explains that a non-pinned, non-account destination causes manual review rather than immediate payment.

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 states a specific verb ('claim') and resource ('prizes') and immediately scopes it to rewards paid by transfer. It explicitly distinguishes this from the escrowed-reward sibling by saying 'an escrowed reward claims with claim_clearance', so an agent can select it without opening both schemas.

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

Usage Guidelines5/5

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

It gives explicit when-to-use guidance: use this when an entry won a bounty and the reward is paid by transfer, not by clearance. It also states prerequisites such as signing in, using the pinned destination when present, and supplying tax details only when tax_details_required is true.

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.