Skip to main content
Glama

Get job details

get_bounty
Read-onlyIdempotent

Retrieves one of your jobs with its submissions and payouts. Each submission carries temporary photo URLs, the distance from the job spot, the location check, the worker's answers and that worker's track record. This is the review screen for a job; act on it with review_submission. Read-only.

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": {
      "bounty_id": "<bounty_id>"
    },
    "name": "get_bounty"
  }
}

Input Schema

NameRequiredDescriptionDefault
bounty_idYesJob id

Output Schema

NameRequiredDescriptionDefault
bountyNoA job listing and its live state.
payoutsNoAny payout or refund for this job, refreshed against the chain.
submissionsNoAll submissions, newest first, each with photo URLs and the worker's record.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / bounty_id / description
      Added value: +"Job id"
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "description": "One job with everything known about it.",
      +  "properties": {
      +    "bounty": {
      +      "additionalProperties": true,
      +      "description": "A job listing and its live state.",
      +      "properties": {
      +        "amount": {
      +          "description": "Pay in decimal form, e.g. \"5.00\".",
      +          "type": "string"
      +        },
      +        "amount_units": {
      +          "description": "Pay in the token's smallest units.",
      +          "type": "string"
      +        },
      +        "chain": {
      +          "description": "Network key, e.g. bsc.",
      +          "type": "string"
      +        },
      +        "claim_expires_at": {
      +          "description": "ISO time an unsubmitted claim lapses and the job reopens.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "claimed_at": {
      +          "description": "ISO time the job was claimed.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "claimed_by": {
      +          "description": "Wallet of the worker holding the claim, or null.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "created_at": {
      +          "description": "ISO creation time.",
      +          "type": "string"
      +        },
      +        "deadline": {
      +          "description": "ISO time when the job expires and becomes refundable.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "description": {
      +          "description": "Full instructions for the worker.",
      +          "type": "string"
      +        },
      +        "escrow_contract": {
      +          "description": "Contract holding the funds, or null if not contract-funded.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "funding_tx": {
      +          "description": "0x hash of the deposit that funded this job, or null until funded.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "id": {
      +          "description": "Job id (uuid). Pass to fund_bounty, get_bounty and cancel_bounty.",
      +          "type": "string"
      +        },
      +        "lat": {
      +          "description": "Job latitude, or null if the job has no map pin.",
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "lng": {
      +          "description": "Job longitude, or null if the job has no map pin.",
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "location_text": {
      +          "description": "Human-readable place, e.g. \"123 Main St, Denver\".",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "min_completed": {
      +          "description": "Completed jobs a worker needs before they can claim this one.",
      +          "type": "number"
      +        },
      +        "moderation_summary": {
      +          "description": "Short reason from the safety screen.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "moderation_verdict": {
      +          "description": "Safety screen result: ok, caution, or pending.",
      +          "type": "string"
      +        },
      +        "nearby_until": {
      +          "description": "ISO time until only nearby workers can claim, or null if not set.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "photo_steps": {
      +          "description": "Proof steps the worker must satisfy.",
      +          "type": "array"
      +        },
      +        "radius_m": {
      +          "description": "Metres from lat/lng a worker may be to claim or to submit.",
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "status": {
      +          "description": "awaiting_funding | open | claimed | submitted | paying | completed | payout_failed | cancelled | expired.",
      +          "type": "string"
      +        },
      +        "title": {
      +          "description": "Job title shown to workers.",
      +          "type": "string"
      +        },
      +        "token_address": {
      +          "description": "Token contract address, or null when paid in native BNB.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "token_decimals": {
      +          "description": "Decimals used to convert amount into amount_units.",
      +          "type": "number"
      +        },
      +        "token_symbol": {
      +          "description": "Payment token: USDT, USDC, or BNB for native.",
      +          "type": "string"
      +        },
      +        "updated_at": {
      +          "description": "ISO time of the last change.",
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "payouts": {
      +      "description": "Any payout or refund for this job, refreshed against the chain.",
      +      "items": {
      +        "additionalProperties": true,
      +        "description": "An outbound transfer: a worker payout or a refund back to the funding wallet.",
      +        "properties": {
      +          "amount_units": {
      +            "description": "Amount in the token's smallest units.",
      +            "type": "string"
      +          },
      +          "attempts": {
      +            "description": "Broadcast attempts so far.",
      +            "type": "number"
      +          },
      +          "bounty_id": {
      +            "description": "The job this payout belongs to.",
      +            "type": "string"
      +          },
      +          "chain": {
      +            "description": "Network the transfer was sent on.",
      +            "type": "string"
      +          },
      +          "created_at": {
      +            "description": "ISO creation time.",
      +            "type": "string"
      +          },
      +          "id": {
      +            "description": "Payout id (uuid).",
      +            "type": "string"
      +          },
      +          "kind": {
      +            "description": "payout pays a worker; refund returns the money to the funding wallet.",
      +            "type": "string"
      +          },
      +          "last_error": {
      +            "description": "Why the last attempt failed, or null.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "status": {
      +            "description": "pending | sent | confirmed | failed. failed can be retried with retry_payout.",
      +            "type": "string"
      +          },
      +          "submission_id": {
      +            "description": "The submission that triggered it, or null for a refund.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "to_address": {
      +            "description": "Wallet that receives the money.",
      +            "type": "string"
      +          },
      +          "tx_hash": {
      +            "description": "0x hash of the on-chain transfer, or null until broadcast.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "submissions": {
      +      "description": "All submissions, newest first, each with photo URLs and the worker's record.",
      +      "items": {
      +        "additionalProperties": true,
      +        "description": "A worker's proof of completion for a job.",
      +        "properties": {
      +          "answers": {
      +            "description": "Answers to text and checkbox steps.",
      +            "type": "array"
      +          },
      +          "bounty_id": {
      +            "description": "The job this submission belongs to.",
      +            "type": "string"
      +          },
      +          "created_at": {
      +            "description": "ISO submission time.",
      +            "type": "string"
      +          },
      +          "distance_m": {
      +            "description": "Metres from the job spot when submitted, or null if no location was sent.",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "id": {
      +            "description": "Submission id (uuid). Pass to review_submission.",
      +            "type": "string"
      +          },
      +          "lat": {
      +            "description": "Where the worker reported being.",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "lng": {
      +            "description": "Where the worker reported being.",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "location_check": {
      +            "description": "inside when within the job radius, outside when further, unknown when no location was sent.",
      +            "type": "string"
      +          },
      +          "note": {
      +            "description": "The worker's own note.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "photo_paths": {
      +            "description": "Storage paths of the uploaded photos.",
      +            "type": "array"
      +          },
      +          "photo_urls": {
      +            "description": "Temporary https URLs for the photos (present in get_bounty, expire in about an hour).",
      +            "type": "array"
      +          },
      +          "review_note": {
      +            "description": "The note you sent back with the decision.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "reviewed_at": {
      +            "description": "ISO time you reviewed it.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "status": {
      +            "description": "pending | approved | rejected.",
      +            "type": "string"
      +          },
      +          "worker": {
      +            "additionalProperties": true,
      +            "description": "A worker's on-chain track record.",
      +            "properties": {
      +              "address": {
      +                "description": "Worker wallet address (lowercase 0x...).",
      +                "type": "string"
      +              },
      +              "approval_rate": {
      +                "description": "Percent of reviewed submissions that were approved, or null if nothing has been reviewed yet.",
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "completed": {
      +                "description": "Submissions approved.",
      +                "type": "number"
      +              },
      +              "pending": {
      +                "description": "Submissions still awaiting review.",
      +                "type": "number"
      +              },
      +              "rejected": {
      +                "description": "Submissions rejected.",
      +                "type": "number"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "worker_address": {
      +            "description": "Wallet of the worker who submitted.",
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive, so the trailing "Read-only" adds nothing. However, the description discloses real behavioral detail the annotations cannot: submissions carry temporary photo URLs (i.e. they expire), plus distance and location-check fields, which shapes how an agent should consume the response.

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 purpose and ending with the forward-routing hint. The one weak sentence is the redundant "Read-only." which duplicates the annotation block rather than earning 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?

An output schema exists, so return-value enumeration is not strictly required, yet the description usefully flags the temporary nature of photo URLs. Combined with the review_submission hand-off, an agent has everything needed to call and act on this tool.

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?

There is a single required bounty_id with 100% schema description coverage, so the schema already carries the semantics. The description adds no format, source, or constraint guidance for the id beyond what is in the schema, making the baseline 3 appropriate.

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 (retrieve one of your jobs) and enumerates the payload an agent will get back: submissions, payouts, photos, distance, location check, answers, track record. It is clearly distinguishable from list_bounties (plural) and review_submission (the mutation counterpart).

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?

"This is the review screen for a job; act on it with review_submission" gives a clear use context and names the follow-on tool explicitly. It stops short of saying when NOT to use it (e.g. vs list_bounties for browsing many jobs), so it is strong but not exhaustive.

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