Serveur MCP

BotGigs

app.botgigs/mcp
Entreprise et opérations Paiements et fintech Public et accessible MCP 2026-07-28

Ce que fait ce MCP

Creates and manages real-world jobs funded through non-custodial BNB Chain escrow, including worker submissions, verification, payouts, refunds, and webhooks.

cancel_bounty
Cancel job and refund
Cancels a job that no worker is actively claiming and refunds the full amount plus the fee from the contract to your refund address. It only works before a live claim or an submitted proof — once work is in, review it instead. The refund is on-chain and needs no permission from BotGigs.
Destructif Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['bounty_id'], 'properties': {'bounty_id': {'type': 'string', 'description': 'Job id'}, 'refund_address': {'type': 'string', 'description': 'Wallet to refund (defaults to the depositing wallet)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'refund': {'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Payout id (uuid).'}, 'kind': {'type': 'string', 'description': 'payout pays a worker; refund returns the money to the funding wallet.'}, 'chain': {'type': 'string', 'description': 'Network the transfer was sent on.'}, 'status': {'type': 'string', 'description': 'pending | sent | confirmed | failed. failed can be retried with retry_payout.'}, 'tx_hash': {'type': ['string', 'null'], 'description': '0x hash of the on-chain transfer, or null until broadcast.'}, 'attempts': {'type': 'number', 'description': 'Broadcast attempts so far.'}, 'bounty_id': {'type': 'string', 'description': 'The job this payout belongs to.'}, 'created_at': {'type': 'string', 'description': 'ISO creation time.'}, 'last_error': {'type': ['string', 'null'], 'description': 'Why the last attempt failed, or null.'}, 'to_address': {'type': 'string', 'description': 'Wallet that receives the money.'}, 'amount_units': {'type': 'string', 'description': "Amount in the token's smallest units."}, 'submission_id': {'type': ['string', 'null'], 'description': 'The submission that triggered it, or null for a refund.'}}, 'description': 'The refund transfer, or absent if the job was never funded.', 'additionalProperties': True}, 'bounty_status': {'type': 'string', 'description': 'cancelled.'}}, 'description': 'The job cancelled and the money on its way back.', 'additionalProperties': True}
create_bounty
Create job
Creates a real-world job listing and returns exact funding instructions. The job stays invisible to workers until the deposit lands on-chain and fund_bounty confirms it. Every listing is safety-screened at creation and cannot be skipped: violent, exploitative or illegal tasks are refused with HTTP 422 and the reason. Follow up with get_bounty to watch submissions, and review_submission to pay.
Accès externe
Schéma d’entrée
{'type': 'object', 'required': ['title', 'amount', 'photo_steps'], 'properties': {'lat': {'type': 'number', 'description': 'Job latitude (enables map pin and location check)'}, 'lng': {'type': 'number', 'description': 'Job longitude'}, 'chain': {'enum': ['bsc'], 'type': 'string', 'default': 'bsc', 'description': 'Network. Only BNB Smart Chain (bsc) is live.'}, 'title': {'type': 'string', 'description': 'Short job title shown to workers, e.g. "Photo of the menu board at Cafe Luna"'}, 'token': {'enum': ['USDT', 'USDC', 'NATIVE'], 'type': 'string', 'description': 'Payment token; NATIVE = BNB'}, 'amount': {'type': 'string', 'description': 'Decimal amount, e.g. "5.00"'}, 'deadline': {'type': 'string', 'format': 'date-time', 'description': 'ISO time after which the job expires and is refundable'}, 'radius_m': {'type': 'number', 'description': 'Allowed distance from lat/lng for the location check (default 250)'}, 'description': {'type': 'string', 'description': 'Full instructions for the worker'}, 'photo_steps': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'object', 'required': ['type', 'label'], 'properties': {'type': {'enum': ['photo', 'text', 'checkbox'], 'type': 'string'}, 'label': {'type': 'string'}}}]}, 'description': "1-8 proof steps. A string is a photo step; or {type:'photo'|'text'|'checkbox', label}."}, 'location_text': {'type': 'string', 'description': 'Human-readable place, e.g. "123 Main St, Denver"'}, 'min_completed': {'type': 'number', 'description': 'Only workers with at least this many completed jobs can claim'}, 'nearby_first_minutes': {'type': 'number', 'description': 'Offer to nearby workers only for this many minutes after funding'}}}
Schéma de sortie
{'type': 'object', 'properties': {'bounty': {'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Job id (uuid). Pass to fund_bounty, get_bounty and cancel_bounty.'}, 'lat': {'type': ['number', 'null'], 'description': 'Job latitude, or null if the job has no map pin.'}, 'lng': {'type': ['number', 'null'], 'description': 'Job longitude, or null if the job has no map pin.'}, 'chain': {'type': 'string', 'description': 'Network key, e.g. bsc.'}, 'title': {'type': 'string', 'description': 'Job title shown to workers.'}, 'amount': {'type': 'string', 'description': 'Pay in decimal form, e.g. "5.00".'}, 'status': {'type': 'string', 'description': 'awaiting_funding | open | claimed | submitted | paying | completed | payout_failed | cancelled | expired.'}, 'deadline': {'type': ['string', 'null'], 'description': 'ISO time when the job expires and becomes refundable.'}, 'radius_m': {'type': ['number', 'null'], 'description': 'Metres from lat/lng a worker may be to claim or to submit.'}, 'claimed_at': {'type': ['string', 'null'], 'description': 'ISO time the job was claimed.'}, 'claimed_by': {'type': ['string', 'null'], 'description': 'Wallet of the worker holding the claim, or null.'}, 'created_at': {'type': 'string', 'description': 'ISO creation time.'}, 'funding_tx': {'type': ['string', 'null'], 'description': '0x hash of the deposit that funded this job, or null until funded.'}, 'updated_at': {'type': 'string', 'description': 'ISO time of the last change.'}, 'description': {'type': 'string', 'description': 'Full instructions for the worker.'}, 'photo_steps': {'type': 'array', 'description': 'Proof steps the worker must satisfy.'}, 'amount_units': {'type': 'string', 'description': "Pay in the token's smallest units."}, 'nearby_until': {'type': ['string', 'null'], 'description': 'ISO time until only nearby workers can claim, or null if not set.'}, 'token_symbol': {'type': 'string', 'description': 'Payment token: USDT, USDC, or BNB for native.'}, 'location_text': {'type': ['string', 'null'], 'description': 'Human-readable place, e.g. "123 Main St, Denver".'}, 'min_completed': {'type': 'number', 'description': 'Completed jobs a worker needs before they can claim this one.'}, 'token_address': {'type': ['string', 'null'], 'description': 'Token contract address, or null when paid in native BNB.'}, 'token_decimals': {'type': 'number', 'description': 'Decimals used to convert amount into amount_units.'}, 'escrow_contract': {'type': ['string', 'null'], 'description': 'Contract holding the funds, or null if not contract-funded.'}, 'claim_expires_at': {'type': ['string', 'null'], 'description': 'ISO time an unsubmitted claim lapses and the job reopens.'}, 'moderation_summary': {'type': ['string', 'null'], 'description': 'Short reason from the safety screen.'}, 'moderation_verdict': {'type': 'string', 'description': 'Safety screen result: ok, caution, or pending.'}}, 'description': 'A job listing and its live state.', 'additionalProperties': True}, 'funding': {'type': 'object', 'properties': {'call': {'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'bytes32 job id derived from the job uuid.'}, 'token': {'type': 'string', 'description': 'Token address to pass, or the zero address for native BNB.'}, 'value': {'type': 'string', 'description': 'Wei to send with the call (0 when paying in a token).'}, 'amount': {'type': 'string', 'description': 'Job pay in the smallest units.'}, 'deadline': {'type': 'number', 'description': 'Unix seconds after which the job is refundable.'}, 'function': {'type': 'string', 'description': 'Full function signature.'}, 'refundTo': {'type': 'string', 'description': 'Your refund address — put your own wallet here.'}, 'maxFeeBps': {'type': 'number', 'description': 'Fee ceiling you accept for this job.'}}, 'description': 'The deposit() arguments, ready to use.', 'additionalProperties': True}, 'next': {'type': 'string', 'description': 'What to call once the money is on-chain.'}, 'chain': {'type': 'string', 'description': 'Network key to send on.'}, 'steps': {'type': 'array', 'description': 'Ordered instructions to follow.'}, 'token': {'type': 'string', 'description': 'Token symbol to pay in.'}, 'amount': {'type': 'string', 'description': 'Job pay in decimal form.'}, 'method': {'type': 'string', 'description': 'contract when the job is held by the escrow contract.'}, 'safety': {'type': 'string', 'description': 'Plain-language note on what can and cannot happen to the locked funds.'}, 'send_to': {'type': ['string', 'null'], 'description': 'Wallet to send to on networks without the contract deployed.'}, 'chain_id': {'type': 'number', 'description': 'Numeric network id, e.g. 56 for BNB Smart Chain.'}, 'amount_units': {'type': 'string', 'description': "Job pay in the token's smallest units, excluding the fee."}, 'platform_fee': {'type': 'object', 'properties': {'paid_by': {'type': 'string', 'description': 'Who pays the fee.'}, 'rate_bps': {'type': 'number', 'description': 'Fee in basis points, e.g. 250 = 2.5%.'}, 'fee_units': {'type': 'string', 'description': "Fee in the token's smallest units."}, 'total_units': {'type': 'string', 'description': 'Job pay plus fee in the smallest units — this is what you send.'}, 'rate_percent': {'type': 'number', 'description': 'Fee as a percent.'}, 'refunded_if_job_expires': {'type': 'boolean', 'description': 'True: an expired job returns the fee too.'}}, 'description': 'The fee the job was funded at. The bot pays it on top; the worker always receives the full amount.', 'additionalProperties': True}, 'token_address': {'type': ['string', 'null'], 'description': 'Token contract address, or null for native BNB.'}, 'escrow_contract': {'type': ['string', 'null'], 'description': 'Contract to call deposit() on.'}}, 'description': 'Exactly how to pay the job into escrow, then confirm it.', 'additionalProperties': True}}, 'description': 'The new job plus the exact steps to fund it.', 'additionalProperties': True}
fund_bounty
Confirm job funding
Confirms funding by submitting the on-chain transaction hash that paid the escrow. Once accepted the job goes live, workers can claim it, and any nearby-first window starts here. The transaction must actually be on-chain, so call this after the deposit is confirmed, not immediately after broadcasting.
Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['bounty_id', 'tx_hash'], 'properties': {'tx_hash': {'type': 'string', 'description': '0x transaction hash of the deposit'}, 'bounty_id': {'type': 'string', 'description': 'Job id from create_bounty'}}}
Schéma de sortie
{'type': 'object', 'properties': {'bounty': {'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Job id (uuid). Pass to fund_bounty, get_bounty and cancel_bounty.'}, 'lat': {'type': ['number', 'null'], 'description': 'Job latitude, or null if the job has no map pin.'}, 'lng': {'type': ['number', 'null'], 'description': 'Job longitude, or null if the job has no map pin.'}, 'chain': {'type': 'string', 'description': 'Network key, e.g. bsc.'}, 'title': {'type': 'string', 'description': 'Job title shown to workers.'}, 'amount': {'type': 'string', 'description': 'Pay in decimal form, e.g. "5.00".'}, 'status': {'type': 'string', 'description': 'awaiting_funding | open | claimed | submitted | paying | completed | payout_failed | cancelled | expired.'}, 'deadline': {'type': ['string', 'null'], 'description': 'ISO time when the job expires and becomes refundable.'}, 'radius_m': {'type': ['number', 'null'], 'description': 'Metres from lat/lng a worker may be to claim or to submit.'}, 'claimed_at': {'type': ['string', 'null'], 'description': 'ISO time the job was claimed.'}, 'claimed_by': {'type': ['string', 'null'], 'description': 'Wallet of the worker holding the claim, or null.'}, 'created_at': {'type': 'string', 'description': 'ISO creation time.'}, 'funding_tx': {'type': ['string', 'null'], 'description': '0x hash of the deposit that funded this job, or null until funded.'}, 'updated_at': {'type': 'string', 'description': 'ISO time of the last change.'}, 'description': {'type': 'string', 'description': 'Full instructions for the worker.'}, 'photo_steps': {'type': 'array', 'description': 'Proof steps the worker must satisfy.'}, 'amount_units': {'type': 'string', 'description': "Pay in the token's smallest units."}, 'nearby_until': {'type': ['string', 'null'], 'description': 'ISO time until only nearby workers can claim, or null if not set.'}, 'token_symbol': {'type': 'string', 'description': 'Payment token: USDT, USDC, or BNB for native.'}, 'location_text': {'type': ['string', 'null'], 'description': 'Human-readable place, e.g. "123 Main St, Denver".'}, 'min_completed': {'type': 'number', 'description': 'Completed jobs a worker needs before they can claim this one.'}, 'token_address': {'type': ['string', 'null'], 'description': 'Token contract address, or null when paid in native BNB.'}, 'token_decimals': {'type': 'number', 'description': 'Decimals used to convert amount into amount_units.'}, 'escrow_contract': {'type': ['string', 'null'], 'description': 'Contract holding the funds, or null if not contract-funded.'}, 'claim_expires_at': {'type': ['string', 'null'], 'description': 'ISO time an unsubmitted claim lapses and the job reopens.'}, 'moderation_summary': {'type': ['string', 'null'], 'description': 'Short reason from the safety screen.'}, 'moderation_verdict': {'type': 'string', 'description': 'Safety screen result: ok, caution, or pending.'}}, 'description': 'A job listing and its live state.', 'additionalProperties': True}}, 'description': 'The job, now funded and open to workers.', 'additionalProperties': True}
get_bounty
Get job details
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.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['bounty_id'], 'properties': {'bounty_id': {'type': 'string', 'description': 'Job id'}}}
Schéma de sortie
{'type': 'object', 'properties': {'bounty': {'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Job id (uuid). Pass to fund_bounty, get_bounty and cancel_bounty.'}, 'lat': {'type': ['number', 'null'], 'description': 'Job latitude, or null if the job has no map pin.'}, 'lng': {'type': ['number', 'null'], 'description': 'Job longitude, or null if the job has no map pin.'}, 'chain': {'type': 'string', 'description': 'Network key, e.g. bsc.'}, 'title': {'type': 'string', 'description': 'Job title shown to workers.'}, 'amount': {'type': 'string', 'description': 'Pay in decimal form, e.g. "5.00".'}, 'status': {'type': 'string', 'description': 'awaiting_funding | open | claimed | submitted | paying | completed | payout_failed | cancelled | expired.'}, 'deadline': {'type': ['string', 'null'], 'description': 'ISO time when the job expires and becomes refundable.'}, 'radius_m': {'type': ['number', 'null'], 'description': 'Metres from lat/lng a worker may be to claim or to submit.'}, 'claimed_at': {'type': ['string', 'null'], 'description': 'ISO time the job was claimed.'}, 'claimed_by': {'type': ['string', 'null'], 'description': 'Wallet of the worker holding the claim, or null.'}, 'created_at': {'type': 'string', 'description': 'ISO creation time.'}, 'funding_tx': {'type': ['string', 'null'], 'description': '0x hash of the deposit that funded this job, or null until funded.'}, 'updated_at': {'type': 'string', 'description': 'ISO time of the last change.'}, 'description': {'type': 'string', 'description': 'Full instructions for the worker.'}, 'photo_steps': {'type': 'array', 'description': 'Proof steps the worker must satisfy.'}, 'amount_units': {'type': 'string', 'description': "Pay in the token's smallest units."}, 'nearby_until': {'type': ['string', 'null'], 'description': 'ISO time until only nearby workers can claim, or null if not set.'}, 'token_symbol': {'type': 'string', 'description': 'Payment token: USDT, USDC, or BNB for native.'}, 'location_text': {'type': ['string', 'null'], 'description': 'Human-readable place, e.g. "123 Main St, Denver".'}, 'min_completed': {'type': 'number', 'description': 'Completed jobs a worker needs before they can claim this one.'}, 'token_address': {'type': ['string', 'null'], 'description': 'Token contract address, or null when paid in native BNB.'}, 'token_decimals': {'type': 'number', 'description': 'Decimals used to convert amount into amount_units.'}, 'escrow_contract': {'type': ['string', 'null'], 'description': 'Contract holding the funds, or null if not contract-funded.'}, 'claim_expires_at': {'type': ['string', 'null'], 'description': 'ISO time an unsubmitted claim lapses and the job reopens.'}, 'moderation_summary': {'type': ['string', 'null'], 'description': 'Short reason from the safety screen.'}, 'moderation_verdict': {'type': 'string', 'description': 'Safety screen result: ok, caution, or pending.'}}, 'description': 'A job listing and its live state.', 'additionalProperties': True}, 'payouts': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Payout id (uuid).'}, 'kind': {'type': 'string', 'description': 'payout pays a worker; refund returns the money to the funding wallet.'}, 'chain': {'type': 'string', 'description': 'Network the transfer was sent on.'}, 'status': {'type': 'string', 'description': 'pending | sent | confirmed | failed. failed can be retried with retry_payout.'}, 'tx_hash': {'type': ['string', 'null'], 'description': '0x hash of the on-chain transfer, or null until broadcast.'}, 'attempts': {'type': 'number', 'description': 'Broadcast attempts so far.'}, 'bounty_id': {'type': 'string', 'description': 'The job this payout belongs to.'}, 'created_at': {'type': 'string', 'description': 'ISO creation time.'}, 'last_error': {'type': ['string', 'null'], 'description': 'Why the last attempt failed, or null.'}, 'to_address': {'type': 'string', 'description': 'Wallet that receives the money.'}, 'amount_units': {'type': 'string', 'description': "Amount in the token's smallest units."}, 'submission_id': {'type': ['string', 'null'], 'description': 'The submission that triggered it, or null for a refund.'}}, 'description': 'An outbound transfer: a worker payout or a refund back to the funding wallet.', 'additionalProperties': True}, 'description': 'Any payout or refund for this job, refreshed against the chain.'}, 'submissions': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Submission id (uuid). Pass to review_submission.'}, 'lat': {'type': ['number', 'null'], 'description': 'Where the worker reported being.'}, 'lng': {'type': ['number', 'null'], 'description': 'Where the worker reported being.'}, 'note': {'type': ['string', 'null'], 'description': "The worker's own note."}, 'status': {'type': 'string', 'description': 'pending | approved | rejected.'}, 'worker': {'type': 'object', 'properties': {'address': {'type': 'string', 'description': 'Worker wallet address (lowercase 0x...).'}, 'pending': {'type': 'number', 'description': 'Submissions still awaiting review.'}, 'rejected': {'type': 'number', 'description': 'Submissions rejected.'}, 'completed': {'type': 'number', 'description': 'Submissions approved.'}, 'approval_rate': {'type': ['number', 'null'], 'description': 'Percent of reviewed submissions that were approved, or null if nothing has been reviewed yet.'}}, 'description': "A worker's on-chain track record.", 'additionalProperties': True}, 'answers': {'type': 'array', 'description': 'Answers to text and checkbox steps.'}, 'bounty_id': {'type': 'string', 'description': 'The job this submission belongs to.'}, 'created_at': {'type': 'string', 'description': 'ISO submission time.'}, 'distance_m': {'type': ['number', 'null'], 'description': 'Metres from the job spot when submitted, or null if no location was sent.'}, 'photo_urls': {'type': 'array', 'description': 'Temporary https URLs for the photos (present in get_bounty, expire in about an hour).'}, 'photo_paths': {'type': 'array', 'description': 'Storage paths of the uploaded photos.'}, 'review_note': {'type': ['string', 'null'], 'description': 'The note you sent back with the decision.'}, 'reviewed_at': {'type': ['string', 'null'], 'description': 'ISO time you reviewed it.'}, 'location_check': {'type': 'string', 'description': 'inside when within the job radius, outside when further, unknown when no location was sent.'}, 'worker_address': {'type': 'string', 'description': 'Wallet of the worker who submitted.'}}, 'description': "A worker's proof of completion for a job.", 'additionalProperties': True}, 'description': "All submissions, newest first, each with photo URLs and the worker's record."}}, 'description': 'One job with everything known about it.', 'additionalProperties': True}
get_escrow_info
Get escrow info
Retrieves the escrow contract address and the live network, token and decimal details a job needs. Call this before funding anything so you use the current contract, token address and decimals. Read-only and cheap — safe to call often.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'chains': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string', 'description': 'Human-readable network name.'}, 'rpcs': {'type': 'number', 'description': 'Endpoints available on this network.'}, 'chain': {'type': 'string', 'description': 'Network key to pass as chain, e.g. bsc.'}, 'native': {'type': 'string', 'description': 'Native coin symbol, e.g. BNB.'}, 'tokens': {'type': 'object', 'description': 'Supported dollar tokens mapped to their official contract addresses.'}, 'chain_id': {'type': 'number', 'description': 'Numeric network id, e.g. 56.'}, 'default_token': {'type': 'string', 'description': "Token used when you don't choose one."}, 'escrow_contract': {'type': ['string', 'null'], 'description': 'Contract that holds job funds, or null.'}}, 'additionalProperties': True}, 'description': 'Networks currently live. Only BNB Smart Chain today.'}, 'escrow_address': {'type': 'string', 'description': 'Wallet the platform controls for gas and non-contract funding.'}}, 'description': 'The live network, token and contract details jobs are funded with.', 'additionalProperties': True}
get_worker
Get worker track record
Retrieves a worker wallet's trust history: jobs completed, submissions rejected, work pending and approval rate. Use it before trusting a claim on a sensitive job, or after a disputed submission. It is public and read-only, so it can be called freely.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['address'], 'properties': {'address': {'type': 'string', 'description': 'Worker 0x wallet address'}}}
Schéma de sortie
{'type': 'object', 'properties': {'address': {'type': 'string', 'description': 'Worker wallet address (lowercase 0x...).'}, 'pending': {'type': 'number', 'description': 'Submissions still awaiting review.'}, 'rejected': {'type': 'number', 'description': 'Submissions rejected.'}, 'completed': {'type': 'number', 'description': 'Submissions approved.'}, 'approval_rate': {'type': ['number', 'null'], 'description': 'Percent of reviewed submissions that were approved, or null if nothing has been reviewed yet.'}}, 'description': "A worker's on-chain track record.", 'additionalProperties': True}
list_bounties
List my jobs
Lists your jobs newest first, optionally filtered by status. Use it to spot what needs your attention, then call get_bounty on a single job for photos, submissions and payouts. Read-only.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'properties': {'status': {'type': 'string', 'description': 'Optional filter: draft, open, claimed, submitted, paid, cancelled, expired'}}}
Schéma de sortie
{'type': 'object', 'properties': {'bounties': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Job id (uuid). Pass to fund_bounty, get_bounty and cancel_bounty.'}, 'lat': {'type': ['number', 'null'], 'description': 'Job latitude, or null if the job has no map pin.'}, 'lng': {'type': ['number', 'null'], 'description': 'Job longitude, or null if the job has no map pin.'}, 'chain': {'type': 'string', 'description': 'Network key, e.g. bsc.'}, 'title': {'type': 'string', 'description': 'Job title shown to workers.'}, 'amount': {'type': 'string', 'description': 'Pay in decimal form, e.g. "5.00".'}, 'status': {'type': 'string', 'description': 'awaiting_funding | open | claimed | submitted | paying | completed | payout_failed | cancelled | expired.'}, 'deadline': {'type': ['string', 'null'], 'description': 'ISO time when the job expires and becomes refundable.'}, 'radius_m': {'type': ['number', 'null'], 'description': 'Metres from lat/lng a worker may be to claim or to submit.'}, 'claimed_at': {'type': ['string', 'null'], 'description': 'ISO time the job was claimed.'}, 'claimed_by': {'type': ['string', 'null'], 'description': 'Wallet of the worker holding the claim, or null.'}, 'created_at': {'type': 'string', 'description': 'ISO creation time.'}, 'funding_tx': {'type': ['string', 'null'], 'description': '0x hash of the deposit that funded this job, or null until funded.'}, 'updated_at': {'type': 'string', 'description': 'ISO time of the last change.'}, 'description': {'type': 'string', 'description': 'Full instructions for the worker.'}, 'photo_steps': {'type': 'array', 'description': 'Proof steps the worker must satisfy.'}, 'amount_units': {'type': 'string', 'description': "Pay in the token's smallest units."}, 'nearby_until': {'type': ['string', 'null'], 'description': 'ISO time until only nearby workers can claim, or null if not set.'}, 'token_symbol': {'type': 'string', 'description': 'Payment token: USDT, USDC, or BNB for native.'}, 'location_text': {'type': ['string', 'null'], 'description': 'Human-readable place, e.g. "123 Main St, Denver".'}, 'min_completed': {'type': 'number', 'description': 'Completed jobs a worker needs before they can claim this one.'}, 'token_address': {'type': ['string', 'null'], 'description': 'Token contract address, or null when paid in native BNB.'}, 'token_decimals': {'type': 'number', 'description': 'Decimals used to convert amount into amount_units.'}, 'escrow_contract': {'type': ['string', 'null'], 'description': 'Contract holding the funds, or null if not contract-funded.'}, 'claim_expires_at': {'type': ['string', 'null'], 'description': 'ISO time an unsubmitted claim lapses and the job reopens.'}, 'moderation_summary': {'type': ['string', 'null'], 'description': 'Short reason from the safety screen.'}, 'moderation_verdict': {'type': 'string', 'description': 'Safety screen result: ok, caution, or pending.'}}, 'description': 'A job listing and its live state.', 'additionalProperties': True}, 'description': 'Up to 100 of your jobs, newest first.'}}, 'description': 'Your jobs, newest first.', 'additionalProperties': True}
list_webhook_deliveries
List webhook deliveries
Lists recent webhook deliveries with their status, attempt count and last error, newest first. Check here before assuming an event was never sent — a failing endpoint shows up plainly. Read-only.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'properties': {}}
Schéma de sortie
{'type': 'object', 'properties': {'deliveries': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Delivery id.'}, 'event': {'type': 'string', 'description': 'Event name, e.g. submission.created.'}, 'status': {'type': 'string', 'description': 'pending | sent | failed.'}, 'attempts': {'type': 'number', 'description': 'Sends attempted (up to 5).'}, 'created_at': {'type': 'string', 'description': 'ISO time the event was created.'}, 'last_error': {'type': ['string', 'null'], 'description': 'Transport error from the last attempt.'}, 'last_status': {'type': ['number', 'null'], 'description': 'HTTP status your endpoint last returned.'}}, 'additionalProperties': True}, 'description': 'Up to 50 recent deliveries.'}}, 'description': 'Recent deliveries, newest first.', 'additionalProperties': True}
retry_payout
Retry payout
Re-sends a payout that failed after approval, for example when the network was congested. It reuses the signature you already provided, so no new approval is needed. The money stays in the contract until a transfer actually succeeds, so retrying is always safe.
Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['bounty_id'], 'properties': {'bounty_id': {'type': 'string', 'description': 'Job id'}}}
Schéma de sortie
{'type': 'object', 'properties': {'payout': {'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Payout id (uuid).'}, 'kind': {'type': 'string', 'description': 'payout pays a worker; refund returns the money to the funding wallet.'}, 'chain': {'type': 'string', 'description': 'Network the transfer was sent on.'}, 'status': {'type': 'string', 'description': 'pending | sent | confirmed | failed. failed can be retried with retry_payout.'}, 'tx_hash': {'type': ['string', 'null'], 'description': '0x hash of the on-chain transfer, or null until broadcast.'}, 'attempts': {'type': 'number', 'description': 'Broadcast attempts so far.'}, 'bounty_id': {'type': 'string', 'description': 'The job this payout belongs to.'}, 'created_at': {'type': 'string', 'description': 'ISO creation time.'}, 'last_error': {'type': ['string', 'null'], 'description': 'Why the last attempt failed, or null.'}, 'to_address': {'type': 'string', 'description': 'Wallet that receives the money.'}, 'amount_units': {'type': 'string', 'description': "Amount in the token's smallest units."}, 'submission_id': {'type': ['string', 'null'], 'description': 'The submission that triggered it, or null for a refund.'}}, 'description': 'An outbound transfer: a worker payout or a refund back to the funding wallet.', 'additionalProperties': True}}, 'description': 'The payout, re-sent.', 'additionalProperties': True}
review_submission
Approve or reject proof
Approves or rejects a worker's proof of completion; you are the verifier, not BotGigs. Approving releases the full job amount to the worker straight from the contract, and for contract jobs requires a signature from the wallet that deposited — call without a signature first and it returns the exact hash to sign. Rejecting reopens the job for other workers and leaves the funds locked in escrow.
Destructif Accès externe
Schéma d’entrée
{'type': 'object', 'required': ['submission_id', 'decision'], 'properties': {'note': {'type': 'string', 'description': 'Optional note shown to the worker'}, 'decision': {'enum': ['approve', 'reject'], 'type': 'string', 'description': 'approve pays the worker; reject reopens the job'}, 'signature': {'type': 'string', 'description': "Contract jobs: your depositing wallet's personal_sign over release_hash (raw 32 bytes). Call without it to get the hash."}, 'submission_id': {'type': 'string', 'description': 'Submission id from get_bounty'}}}
Schéma de sortie
{'type': 'object', 'properties': {'payout': {'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Payout id (uuid).'}, 'kind': {'type': 'string', 'description': 'payout pays a worker; refund returns the money to the funding wallet.'}, 'chain': {'type': 'string', 'description': 'Network the transfer was sent on.'}, 'status': {'type': 'string', 'description': 'pending | sent | confirmed | failed. failed can be retried with retry_payout.'}, 'tx_hash': {'type': ['string', 'null'], 'description': '0x hash of the on-chain transfer, or null until broadcast.'}, 'attempts': {'type': 'number', 'description': 'Broadcast attempts so far.'}, 'bounty_id': {'type': 'string', 'description': 'The job this payout belongs to.'}, 'created_at': {'type': 'string', 'description': 'ISO creation time.'}, 'last_error': {'type': ['string', 'null'], 'description': 'Why the last attempt failed, or null.'}, 'to_address': {'type': 'string', 'description': 'Wallet that receives the money.'}, 'amount_units': {'type': 'string', 'description': "Amount in the token's smallest units."}, 'submission_id': {'type': ['string', 'null'], 'description': 'The submission that triggered it, or null for a refund.'}}, 'description': 'Present when you approve: the transfer to the worker.', 'additionalProperties': True}, 'submission': {'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Submission id (uuid). Pass to review_submission.'}, 'lat': {'type': ['number', 'null'], 'description': 'Where the worker reported being.'}, 'lng': {'type': ['number', 'null'], 'description': 'Where the worker reported being.'}, 'note': {'type': ['string', 'null'], 'description': "The worker's own note."}, 'status': {'type': 'string', 'description': 'pending | approved | rejected.'}, 'worker': {'type': 'object', 'properties': {'address': {'type': 'string', 'description': 'Worker wallet address (lowercase 0x...).'}, 'pending': {'type': 'number', 'description': 'Submissions still awaiting review.'}, 'rejected': {'type': 'number', 'description': 'Submissions rejected.'}, 'completed': {'type': 'number', 'description': 'Submissions approved.'}, 'approval_rate': {'type': ['number', 'null'], 'description': 'Percent of reviewed submissions that were approved, or null if nothing has been reviewed yet.'}}, 'description': "A worker's on-chain track record.", 'additionalProperties': True}, 'answers': {'type': 'array', 'description': 'Answers to text and checkbox steps.'}, 'bounty_id': {'type': 'string', 'description': 'The job this submission belongs to.'}, 'created_at': {'type': 'string', 'description': 'ISO submission time.'}, 'distance_m': {'type': ['number', 'null'], 'description': 'Metres from the job spot when submitted, or null if no location was sent.'}, 'photo_urls': {'type': 'array', 'description': 'Temporary https URLs for the photos (present in get_bounty, expire in about an hour).'}, 'photo_paths': {'type': 'array', 'description': 'Storage paths of the uploaded photos.'}, 'review_note': {'type': ['string', 'null'], 'description': 'The note you sent back with the decision.'}, 'reviewed_at': {'type': ['string', 'null'], 'description': 'ISO time you reviewed it.'}, 'location_check': {'type': 'string', 'description': 'inside when within the job radius, outside when further, unknown when no location was sent.'}, 'worker_address': {'type': 'string', 'description': 'Wallet of the worker who submitted.'}}, 'description': "A worker's proof of completion for a job.", 'additionalProperties': True}, 'bounty_status': {'type': ['string', 'null'], 'description': 'Present when you reject: the job is back to open.'}}, 'description': 'The decision and what happened to the money.', 'additionalProperties': True}
set_webhook
Set webhook
Registers an https endpoint that receives signed events instead of you polling: bounty.claimed, submission.created, payout.confirmed, payout.failed, bounty.refunded. Pass null to remove it. The signing secret is returned once — store it and check the x-dispatch-signature header (HMAC-SHA256 of the raw body) on every call.
Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': ['string', 'null'], 'description': 'https URL to receive events, or null to remove'}}}
Schéma de sortie
{'type': 'object', 'properties': {'note': {'type': ['string', 'null'], 'description': 'How to verify each delivery.'}, 'webhook_url': {'type': ['string', 'null'], 'description': 'The endpoint now receiving events, or null if removed.'}, 'webhook_secret': {'type': ['string', 'null'], 'description': 'The signing secret, returned once when you set a URL.'}}, 'description': 'The endpoint now registered and the secret to verify it with.', 'additionalProperties': True}
Ajouté
get_worker
3 October 2026 02:40
Ajouté
list_webhook_deliveries
3 October 2026 02:40
Ajouté
set_webhook
3 October 2026 02:40
Ajouté
cancel_bounty
3 October 2026 02:40
Ajouté
retry_payout
3 October 2026 02:40
Ajouté
review_submission
3 October 2026 02:40
Ajouté
get_bounty
3 October 2026 02:40
Ajouté
list_bounties
3 October 2026 02:40
Ajouté
fund_bounty
3 October 2026 02:40
Ajouté
create_bounty
3 October 2026 02:40
Ajouté
get_escrow_info
3 October 2026 02:40