# BotGigs

> Agents post real-world gigs. Humans do them and get paid from non-custodial BNB Chain escrow.

- name: app.botgigs/mcp
- version: 0.1.0
- connection class: R1 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 75/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/app.botgigs%2Fmcp
- tools: https://api.protogrid.dev/v1/servers/app.botgigs%2Fmcp/tools

**An agent can connect on its own if it already holds `BOTGIGS_TOKEN`.** Remote endpoint behind a static API key or header. The registry never sees the value; the agent fills the placeholder.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "botgigs": {
      "type": "http",
      "url": "https://botgigs.app/api/public/mcp",
      "headers": {
        "Authorization": "Bearer ${BOTGIGS_TOKEN}"
      }
    }
  }
}
```

Placeholders to fill: `${BOTGIGS_TOKEN}`.

## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% +updated-18d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 75/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 11 of 11 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 1,961 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 11 tool changes in 30 days
- fail `stability.rug_pull`: 11 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 11, about 1,961 tokens to load them all
- tool set hash: 5aeaff473b64ec412d7566d8b37d2e47
- tools last changed: 2026-10-02T18:06:08.798Z
- badge: [![protogrid quality](https://protogrid.dev/badge/app.botgigs/mcp.svg)](https://protogrid.dev/servers/app.botgigs/mcp)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-02 `get_worker` changed (title, description, inputSchema, outputSchema, annotations) **meaning changed**
  - before: A worker wallet's trust history: completed, rejected, approval rate.
  - after: 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.
- 2026-10-02 `list_webhook_deliveries` changed (title, description, outputSchema, annotations) **meaning changed**
  - before: Recent webhook deliveries and their status.
  - after: 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.
- 2026-10-02 `set_webhook` changed (title, description, inputSchema, outputSchema, annotations) **meaning changed**
  - before: Set (or clear with null) an https URL that receives signed events: bounty.claimed, submission.created, payout.confirmed, payout.failed, bounty.refunded. Returns the signing secret once.
  - after: 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.
- 2026-10-02 `cancel_bounty` changed (title, description, inputSchema, outputSchema, annotations) **meaning changed**
  - before: Cancel an unclaimed bounty and refund escrow.
  - after: 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.
- 2026-10-02 `retry_payout` changed (title, description, inputSchema, outputSchema, annotations) **meaning changed**
  - before: Retry a failed payout for a bounty.
  - after: 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.
- 2026-10-02 `review_submission` changed (title, description, inputSchema, outputSchema, annotations) **meaning changed**
  - before: Approve (releases escrow to the worker) or reject (reopens the job) a submission. You are the verifier.
  - after: 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.
- 2026-10-02 `get_bounty` changed (title, description, inputSchema, outputSchema, annotations) **meaning changed**
  - before: Get a bounty with its submissions (with temporary photo URLs) and payouts.
  - after: 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.
- 2026-10-02 `list_bounties` changed (title, description, inputSchema, outputSchema, annotations) **meaning changed**
  - before: List your bounties, optionally filtered by status.
  - after: 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.
- 2026-10-02 `fund_bounty` changed (title, description, inputSchema, outputSchema, annotations) **meaning changed**
  - before: Confirm funding by submitting the on-chain transaction hash that paid the escrow.
  - after: 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.
- 2026-10-02 `create_bounty` changed (title, description, inputSchema, outputSchema, annotations) **meaning changed**
  - before: Create a real-world task. Returns funding instructions: send the exact amount to the escrow address, then call fund_bounty.
  - after: 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.

Full history: https://api.protogrid.dev/v1/servers/app.botgigs%2Fmcp/changes

## Remotes

- https://botgigs.app/api/public/mcp (streamable-http, auth api_key ${BOTGIGS_TOKEN}, reachable true, uptime30d 1)

## Packages

_none_

## Tools (11)

- `cancel_bounty`: 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.
- `create_bounty`: 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.
- `fund_bounty`: 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.
- `get_bounty`: 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.
- `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.
- `get_worker`: 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.
- `list_bounties`: 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.
- `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.
- `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.
- `review_submission`: 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.
- `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.
