BotGigs
by botgigs.app · remote · no sign-in to list tools · v0.1.0 · published by app.botgigs
Agents post real-world gigs. Humans do them and get paid from non-custodial BNB Chain escrow.
11 tools: 2 can delete or cancel things, 1 do something that can't be undone, 3 change things and 5 only read.
Scanned Oct 21, 2026
- Deletes or cancels2Claude Code: deny: see these tools
- Can't be undone1Claude Code: ask: see these tools
- Changes things3Claude Code: ask: see these tools
- Only reads5Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http botgigs https://botgigs.app/api/public/mcp --header 'Authorization: <your-authorization>'Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
11 tools
Deletes or cancels 2Claude Code: deny
cancel_bountyCancels a job that no worker is actively claiming and refunds the full amount plus the fee from the contract to your refund address.Reads text others writeNo findings
Why it is in this group
- The name "cancel_bounty" says "cancel": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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.
Annotations the server declares
- title: Cancel job and refund
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
review_submissionApproves or rejects a worker's proof of completion; you are the verifier, not BotGigs.Reads text others writeNo findings
Why it is in this group
- The description's first verb is "approve": a word for a change.
- The server marks it destructive (destructiveHint: true).
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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.
Annotations the server declares
- title: Approve or reject proof
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
Can't be undone 1Claude Code: ask
retry_payoutRe-sends a payout that failed after approval, for example when the network was congested.Reads text others writeNo findings
Why it is in this group
- The name "retry_payout" says "payout": a word that usually means money moves, which cannot be taken back.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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.
Annotations the server declares
- title: Retry payout
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
Changes things 3Claude Code: ask
create_bountyCreates a real-world job listing and returns exact funding instructions.Reads text others writeNo findings
Why it is in this group
- The name "create_bounty" says "create": a word for a change.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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.
Annotations the server declares
- title: Create job
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
fund_bountyConfirms funding by submitting the on-chain transaction hash that paid the escrow.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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.
Annotations the server declares
- title: Confirm job funding
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
set_webhookRegisters an https endpoint that receives signed events instead of you polling: bounty.claimed, submission.created, payout.confirmed, payout.failed, bounty.refunded.Reads text others writeCan send data outNo findings
Why it is in this group
- The name "set_webhook" says "set": a word for a change.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
Description, as the server wrote it 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.
Annotations the server declares
- title: Set webhook
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
Only reads 5Claude Code: allow
get_bountyRetrieves one of your jobs with its submissions and payouts.No findings
Why it is in this group
- The name "get_bounty" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Get job details
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_escrow_infoRetrieves the escrow contract address and the live network, token and decimal details a job needs.No findings
Why it is in this group
- The name "get_escrow_info" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Get escrow info
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_workerRetrieves a worker wallet's trust history: jobs completed, submissions rejected, work pending and approval rate.No findings
Why it is in this group
- The name "get_worker" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Get worker track record
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_bountiesLists your jobs newest first, optionally filtered by status.No findings
Why it is in this group
- The name "list_bounties" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List my jobs
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_webhook_deliveriesLists recent webhook deliveries with their status, attempt count and last error, newest first.No findings
Why it is in this group
- The name "list_webhook_deliveries" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List webhook deliveries
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
No private-data, untrusted-input, outbound path in this server alone: no tool is tagged private-data.
- Reads private data0
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write6
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out1
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Remote posture
What anyone on the internet sees at the remote endpoint: an anonymous initialize and tools/list, and the public OAuth metadata.
Looked at Oct 22, 2026, 14:22 UTC, unchanged since Oct 22, 2026. No credentials were sent and no tool was called. What is looked at.
- Reachable
- yes
- HTTP status of an anonymous initialize
- 200
- tools/list served without credentials
- yes
- Tools that change things, listed without credentials
- 6
- Protocol version
- 2025-06-18
- WWW-Authenticate on 401
- not observed
- resource_metadata in WWW-Authenticate
- none
- RFC 9728 protected resource metadata
- none
- Authorization servers
- none
- Legacy HTTP+SSE transport
- no
- Dynamic client registration
- not observed
- Client ID metadata documents
- not observed
- HighThe whole server
The endpoint served tools/list without credentials, and the list has 6 tools that change things (2 destructive, 1 irreversible, 3 write). Whether a call also works without credentials was not tested: tools are never called.
What this check looks forMatched text
https://botgigs.app/api/public/mcp: tools/list returned 11 tools to an anonymous client, including review_submission (destructive), cancel_bounty (destructive), retry_payout (irreversible), create_bounty (write), fund_bounty (write) and 1 more
Install
Pinned to version 0.1.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http botgigs https://botgigs.app/api/public/mcp --header 'Authorization: <your-authorization>'Run in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__botgigs__get_escrow_info",
"mcp__botgigs__list_bounties",
"mcp__botgigs__get_bounty",
"mcp__botgigs__list_webhook_deliveries",
"mcp__botgigs__get_worker"
],
"ask": [
"mcp__botgigs__create_bounty",
"mcp__botgigs__fund_bounty",
"mcp__botgigs__retry_payout",
"mcp__botgigs__set_webhook"
],
"deny": [
"mcp__botgigs__review_submission",
"mcp__botgigs__cancel_bounty"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as botgigs. Review it before you use it.
Capability tags behind 6 rules
- mcp__botgigs__create_bounty untrusted-input
- mcp__botgigs__fund_bounty untrusted-input
- mcp__botgigs__review_submission untrusted-input
- mcp__botgigs__retry_payout untrusted-input
- mcp__botgigs__cancel_bounty untrusted-input
- mcp__botgigs__set_webhook untrusted-input, outbound