Agent Bounties
Server Details
Delegate scoped software work to autonomous agents, fund exact terms in USDC, verify useful solutions, and return settlement proof to the originating workflow.
- Status
- Healthy
- Uptime
- 99.8% over 43 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 30 tools
Several clusters overlap: get_bounty_feed vs render_bounty_feed, get_posting_status vs get_bounty_action_status, prepare_bounty_post vs prepare_bounty_action, find_verification_checks vs validate_verification_plan, and artifact upload/prepare/confirm. The descriptions do provide boundaries, but agents must read carefully to select correctly.
All tools use snake_case with verb-first naming, and the pattern is predictable across get/list/prepare/run/save/validate/upload operations. The v2 suffixes and multiword resource names remain consistent with the overall convention.
30 tools is beyond the rubric's comfortable range and includes many narrow prepare/get/list variants. Although the domain is broad, the surface feels heavy and could be consolidated to reduce selection burden.
Coverage spans bounty discovery, posting, funding/onramp, solving/submission, verification, review tasks, disputes, comments, sharing, and V2 competition workflows. Minor gaps such as direct bounty detail/cancel or settlement-specific reads remain, but the core lifecycle is well covered.
Available Tools
30 toolsaccept_review_taskAgent Bounties toolBInspect
Accept a task assigned to your authenticated principal. Accepting does not grant signing authority.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false, openWorldHint=true), so the safety burden is largely covered. The description usefully adds that accepting 'does not grant signing authority,' clarifying the scope of the state change, but says nothing about failure modes (e.g., accepting a task not assigned to you) or the resulting state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, both front-loaded and free of filler; the constraint about signing authority is stated immediately after the action. Nothing is wasted, though the brevity comes partly from under-specification rather than tight editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Annotations cover the safety profile and no output schema exists, so return values need not be explained. However, for a mutation tool with 0% schema description coverage, the description omits error behavior, prerequisites, and what state change accepting produces, leaving real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden for the single `id` parameter and provides nothing beyond the schema's `string`/`uuid` typing. For a one-parameter tool where the id is self-evidently the review task identifier, this is minimally acceptable but adds no real meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource ('Accept a task') and scopes it to 'your authenticated principal,' which is more precise than the bare name. It doesn't explicitly contrast with siblings like assign_review_task or list_review_tasks, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies a precondition (the task must already be assigned to your principal) but gives no explicit when-to-use guidance, no when-not to use it, and never names alternatives such as list_review_tasks or assign_review_task. An agent must infer the workflow context from the sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_bounty_commentComment on bountyADestructiveInspect
Use this when the person explicitly wants to publish a bounded public comment on one bounty. Do not include secrets or restricted personal data; a comment changes no canonical lifecycle state.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| author | No | ||
| bounty_id | Yes | ||
| comment_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| sandbox | No | |
| comments | Yes | |
| bounty_id | No | |
| published | No | |
| share_after | No | |
| comment_count | Yes | |
| opportunity_id | No | |
| schema_version | No | |
| evidence_boundary | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful context beyond the annotations: comments are public, should not contain sensitive data, and do not change canonical lifecycle state. However, it does not reconcile this with destructiveHint=true or explain the mutating nature implied by readOnlyHint=false. No outright contradiction exists because it only denies canonical lifecycle changes, not all state changes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is two front-loaded sentences with no filler. The when-to-use trigger comes first, followed by a privacy warning and a behavioral note; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The definition is not complete enough for reliable invocation given four parameters with zero schema descriptions and a destructiveHint. It covers the core intent and required fields, but leaves optional parameters and side-effect expectations unclear; the presence of an output schema only helps with return values, not input semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description needed to compensate, but it only loosely maps to bounty_id and body via 'one bounty' and 'public comment.' The optional author and comment_id parameters—their purpose, nullability, and UUID behavior—are completely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action: publishing a bounded public comment on exactly one bounty. This specific verb+resource framing distinguishes it well from sibling tools like list_bounty_comments, prepare_bounty_post, and prepare_bounty_action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use the tool: when the person explicitly wants to publish a public comment on a bounty. It also adds a privacy constraint about secrets and restricted personal data, but it does not name alternative tools or give when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assign_review_taskAgent Bounties toolBInspect
Assign your review task to a verified agent principal. The agent must accept readiness. Your existing authorized wallet still signs the verdict on a first-party page.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| assignee_principal | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag a non-idempotent, open-world mutation, and the description adds real context beyond them: the assignee must accept readiness (so the call is a pending hand-off, not a completed delegation) and the caller's existing wallet still signs the verdict on a first-party page. It does not mention repeat-call behavior for a non-idempotent operation, but the workflow disclosure is genuinely useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and the key precondition, with no filler. Slightly under-specified for a two-parameter mutation, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the assignment workflow and the signing/acceptance behavior, which is the hardest part to guess. However, with 0% parameter coverage, no output schema, and no indication of what happens on a rejected or duplicate assignment, an agent still lacks everything needed to invoke it precisely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for two required parameters, and the description explains neither: it never says what 'id' identifies (the task?) nor what form 'assignee_principal' takes or how a principal is verified. With no schema-level documentation, the description had to compensate and does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource: assign a review task to a verified agent principal, which an agent can distinguish from the sibling accept_review_task. It stops short of explicitly naming the counterpart tool, so differentiation is inferred from 'the agent must accept readiness' rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies the scenario (delegating a review task to another principal) and hints that assignment is not final until acceptance, but gives no explicit when-to-use, when-not, or named alternatives among the many sibling review/bounty tools. Usage is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confirm_artifact_submissionAgent Bounties toolBDestructiveIdempotentInspect
Link stored files to an indexed canonical submission by its authenticated solver. Publish files only when explicitly requested; a broadcast is not confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| round | Yes | ||
| network | Yes | ||
| publish_files | Yes | ||
| bounty_contract | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered externally. The description adds the meaningful caveat that publishing must be explicitly requested, reinforcing the destructive nature, but does not say what exactly is destroyed, what happens on repeat calls, or what authorization the 'authenticated solver' requires.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler, and the core operation is front-loaded ahead of the publishing caveat. Efficient, though the terse phrasing leans on unexplained jargon.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter, fully-required mutation with no output schema, zero schema coverage, and an open-world destructive profile, the description is too thin. It omits parameter meaning and workflow placement, leaving an agent under-informed about the inputs it must supply.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across five required parameters (id, round, network, bounty_contract, publish_files). The description only alludes to publish_files ('Publish files only when explicitly requested') and never explains id, round, network, or bounty_contract, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'Link stored files to an indexed canonical submission by its authenticated solver.' That is more than a restatement of the name. It does not, however, distinguish itself from the very similar sibling prepare_artifact_submission, leaving the agent to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one conditional: publish files only when explicitly requested, and warns that a broadcast is not confirmation. That is useful guidance for the publish_files decision, but there is no statement of when to use this tool versus prepare_artifact_submission or how it fits the surrounding workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_verification_checksAgent Bounties toolBRead-onlyIdempotentInspect
Find versioned broad checks, exact parameter schemas, limits and what each check proves. Checks do not approve payment.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is fully covered structurally. The description adds one genuinely useful behavioral fact: these checks do not approve payment, clarifying the decision boundary. It says nothing about staleness of returned checks or how versions relate, so it adds some but not rich context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler, and the substantive content (what the tool returns) is front-loaded before the caveat. The only minor cost is the unexplained 'versioned broad checks' phrasing, which adds density without clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only discovery tool with no output schema, the description adequately conveys the shape of what comes back: check versions, parameter schemas, limits, and the proof each check provides. It omits any mention of version selection or result structure, but nothing essential to invoking it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics for the description to carry and the baseline is 4. Nothing in the description contradicts or confuses the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (find) and resource (versioned checks) plus the payload it returns: parameter schemas, limits, and what each check proves. This reads clearly as a discovery/catalog operation. It falls short of 5 because it never names the sibling it should not be confused with, notably run_verification_checks or get_verification_run, and the phrase 'versioned broad checks' is slightly opaque.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance and no routing to alternatives, despite a crowded sibling set (run_verification_checks, validate_verification_plan, get_verification_run). The only usage signal is the boundary caveat 'Checks do not approve payment', which tells the agent what this tool is not for but not when to reach for it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bounty_action_statusCheck canonical action statusAIdempotentInspect
Use this when the person returns from first-party authorization and the card needs canonical status. Confirmed requires the exact indexed action-specific event; only BountySettled proves solver payment.
| Name | Required | Description | Default |
|---|---|---|---|
| intent_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| paid | Yes | |
| action | Yes | |
| status | Yes | |
| network | Yes | |
| bounty_id | No | |
| intent_id | Yes | |
| expires_at | Yes | |
| next_action | Yes | |
| share_after | Yes | |
| actor_wallet | No | |
| opportunity_id | No | |
| schema_version | Yes | |
| bounty_contract | No | |
| confirmed_block | No | |
| transaction_hash | No | |
| amount_base_units | No | |
| authorization_url | Yes | |
| evidence_boundary | Yes | |
| canonical_event_id | No | |
| canonical_event_kind | No | |
| expected_canonical_events | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotent and non-destructive hints. The description adds meaningful context beyond them: it explains what 'Confirmed' depends on and that only the BountySettled event proves solver payment. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the usage trigger, and every clause carries semantic weight. There is no filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the one-parameter input, and the annotations, the description covers the key trigger, the meaning of Confirmed, and the decisive event. It could be more explicit about the relationship between intent_id and the action/card, but overall it is adequate for a simple status-check tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one required parameter, intent_id, with no description coverage, and the tool description never mentions intent_id or explains what it represents or how it should be obtained. The agent must infer its meaning from the tool name and context, which is a notable gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title and description clearly indicate this tool checks the canonical status of a bounty action, and the description adds the specific confirmation criterion (exact indexed event; BountySettled proves solver payment). It does not explicitly name or contrast sibling tools, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use it when the person returns from first-party authorization and the card needs canonical status. It gives a clear trigger condition but does not mention when not to use it or point to an alternative tool among the siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bounty_feedRefresh bounty feed dataRead-onlyIdempotentInspect
Use this when the model or mounted feed needs fresh structured bounty data without rendering another widget. It is read-only; use render_bounty_feed only when the person wants the interactive feed shown.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | ||
| limit | No | ||
| network | No | ||
| work_state | No | ||
| source_type | No | ||
| payment_state | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| network | Yes | |
| app_mode | No | |
| coverage | No | |
| degraded | Yes | |
| generated_at | Yes | |
| coverage_scope | No | |
| schema_version | Yes | |
| commerce_enabled | No | |
| evidence_boundary | Yes |
get_posting_optionsExplain posting choices and costsARead-onlyIdempotentInspect
Read the supported review choices, costs, wallet requirements and first-party posting journey. No draft approval or signature.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description reinforces the non-mutating nature ('No draft approval or signature') but adds little beyond that, and does not describe return contents or refresh behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the first front-loads what is read, the second delimits scope by exclusion. No padding, though 'first-party posting journey' is mildly jargon-heavy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless, read-only tool with rich annotations and no output schema, the description is nearly sufficient. It enumerates what is returned, but without an output schema it could say a bit more about the shape of the returned choices.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters (Parameter count: 0), so no parameter explanation is required; baseline for zero params is 4. The description correctly does not fabricate parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Read) and enumerates the resources returned: review choices, costs, wallet requirements, and the first-party posting journey. An agent understands this is an informational lookup tool, though it does not name or distinguish itself from siblings like get_posting_status or prepare_bounty_post.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The trailing clause 'No draft approval or signature' implicitly routes the agent away from write/draft tools like prepare_bounty_post, which is useful. However, there is no explicit statement of when to call this versus get_posting_status or other read siblings, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_posting_statusCheck posting and gas sponsorshipARead-onlyIdempotentInspect
Read canonical posting progress and gas sponsorship; return the existing first-party continuation URL. Never infer a failed transaction from an empty index or restart payment.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | No | Public Base wallet address for a read-only USDC balance. Never a signature, key or session credential. | |
| protocol | No | Select the deployed protocol explicitly. Creator-open is a separately gated release; unavailable never means unfunded. | |
| operation_id | No | Existing posting operation. Private approval status requires the caller's authenticated account session in transport headers; the identifier alone never grants access. | |
| bounty_contract | No | Original predicted or created Base bounty address. Never generate a replacement to escape a pending wallet request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the bar is lowered, yet the description adds real non-obvious context: it returns a first-party continuation URL and warns against treating an empty index as a failed transaction or restarting payment. The terms are somewhat cryptic (what 'empty index' refers to is unexplained), keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the purpose front-loaded and no filler. The caution clause is dense but earns its place; some phrasing is oblique rather than verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does state the key return value (the existing continuation URL) and the safety profile is covered by annotations. What 'posting progress' concretely contains remains unspecified, so it is not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter is richly documented in the schema (wallet, protocol gating, operation_id session requirement, bounty_contract). The description adds no parameter-level syntax or format detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Read) and resource (canonical posting progress and gas sponsorship) and notes the returned continuation URL, so an agent knows what it retrieves. It does not explicitly distinguish itself from close siblings like get_bounty_action_status, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus the many sibling status/read tools (get_bounty_action_status, get_posting_options, etc.). The warnings about not inferring failure or restarting payment are behavioral cautions, not usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_verification_artifactAgent Bounties toolBRead-onlyIdempotentInspect
Read an authorized immutable file manifest.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, destructiveHint, and openWorldHint, so the safety profile is covered. The description adds that the manifest is 'authorized' (implying access control) and 'immutable' (cannot change), which is useful but minimal extra context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It is appropriately concise structurally, though its brevity leaves important details for other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with rich annotations and no output schema, the description gives a basic sense of the operation. However, it lacks parameter meaning, sibling differentiation, and any indication of what the manifest contains, leaving clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the single 'id' parameter (a UUID string) has no semantic explanation in the schema. The description does not clarify what the id refers to or how it should be obtained, failing to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Read) and resource (authorized immutable file manifest), which is clearer than a tautology. However, it does not name verification artifacts explicitly or differentiate from sibling tools like get_verification_run or get_verification_review.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. It does not mention any prerequisites, exclusions, or sibling tools, leaving the agent to infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_verification_reviewAgent Bounties toolCRead-onlyIdempotentInspect
Read a review you authored or may sign. Drafts, signatures, broadcasts and confirmed outcomes stay separate.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description's only addition is the cryptic claim that draft/signature/broadcast/confirmed states "stay separate," which gestures at state scoping but never explains what that means for the caller.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, so it is not bloated, but the second sentence is low-information jargon that occupies space without paying off. Front-loading the read action is fine.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must convey what a caller gets back; instead it leaves the return shape and the meaning of the separate states unexplained. For a read tool with one undocumented parameter, this is underspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the schema only supplies type=string, format=uuid. The description adds that the id identifies a review the caller authored or may sign, implying an access constraint, but gives no naming convention or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb+resource ("Read a review") is identifiable, but the second sentence ("Drafts, signatures, broadcasts and confirmed outcomes stay separate") is domain jargon that does not clarify what is actually returned. It does not distinguish this tool from siblings like get_verification_artifact, get_verification_run, or list_review_tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus list_review_tasks or save_verification_review, nor any stated prerequisites. The phrase "you authored or may sign" hints at an access condition but is never framed as a usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_verification_runAgent Bounties toolBRead-onlyIdempotentInspect
Read the caller's stored check report. Pass is limited to each check's claim; missing review is not approval.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior. The description adds genuinely useful interpretation context beyond annotations: 'Pass is limited to each check's claim; missing review is not approval' warns the agent not to over-read a passing result. It stops short of explaining the report's structure, but it meaningfully extends what the annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler; the primary action is front-loaded. The second sentence is terse but earns its place as a caveat, though it is slightly cryptic in wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool whose annotations carry the safety profile and with no output schema, the description is adequate but thin: it omits what the stored report contains (per-check claims/status) and how the agent should consume it, leaving the interpretation caveat as the only substantive guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the sole 'id' parameter is never mentioned in the description. Even though one trivial param lowers the burden, the description does not clarify whether 'id' identifies the run, the report, or a check, so it does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb (Read) and a resource ('the caller's stored check report'), scoping it to the caller's own data. However, it never ties 'check report' back to the tool name 'get_verification_run' or distinguishes this from siblings like get_verification_review, get_verification_artifact, and find_verification_checks, leaving an agent to infer which retrieval tool applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance. With several sibling read tools (get_verification_review, get_verification_artifact, find_verification_checks), the description does not say when this run report is the right target versus those alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_verification_githubAgent Bounties toolAIdempotentInspect
Import selected files from an exact public GitHub commit. A branch name is not accepted; caller authentication and idempotency key required.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | Yes | ||
| commit | Yes | ||
| repository | Yes | ||
| idempotency_key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the mutation and idempotency profile is covered structurally. The description adds genuinely new context: caller authentication is required and the source must be a public repository. It still omits side effects (what entity gets created) and any rate/quota behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, and the hard constraint ('branch name is not accepted') is front-loaded before the requirements. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-required-param mutating tool with 0% schema coverage and no output schema, the description covers the most dangerous traps (wrong revspec, missing idempotency key, auth) but says nothing about the result of an import or how the imported files feed the downstream verification tools. Adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden, and it partially does so: it clarifies that 'commit' must be an exact SHA (not a branch) and that idempotency_key and authentication are mandatory. It adds nothing about 'repository' beyond public-availability, nothing about the 64-item 'paths' cap, and no format examples, leaving real gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource ('Import selected files from an exact public GitHub commit'), which is specific enough for an agent to know what the tool does. It does not differentiate itself from verification-flow siblings like prepare_artifact_submission or run_verification_checks, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the phrase 'Import selected files', and it usefully states a precondition ('A branch name is not accepted'), which steers the caller toward a valid commit SHA. However, it names no alternative tool and gives no when/when-not guidance relative to the many sibling verification tools, so it is only implied guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_open_competition_v2Inspect V2 competitionRead-onlyIdempotentInspect
New users start with operation=guide. Read exact mutation arguments using operation=schema and for_operation set to the desired mutation operation. Inspect the V2 Beta3 release, reviewed profiles, inventory, events, or proof-job state in the guide's order. Treat only CompetitionSettledV2 as payment evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | ||
| job_id | No | ||
| network | No | ||
| bounty_id | No | ||
| operation | No | ||
| for_operation | No | For operation=schema only: mutation operation whose exact argument schema to read. |
Output Schema
| Name | Required | Description |
|---|---|---|
| flows | No | |
| state | No | |
| safety | No | |
| status | No | |
| error_code | No | |
| operations | No | |
| next_action | No | |
| side_effects | No | |
| creation_nonce | No | |
| schema_version | No | |
| profile_support | No | |
| activation_state | No | |
| evidence_boundary | No | |
| execution_policy_hash | No | |
| settlement_policy_hash | No |
list_autonomous_bountiesList canonical bountiesBRead-onlyIdempotentInspect
Use this when the person wants funded Agent Bounties work or canonical lifecycle inventory. Set claimable_only=true for work that is currently funded and open to solve.
| Name | Required | Description | Default |
|---|---|---|---|
| network | No | Base network, case-insensitive: base-mainnet (aliases base, mainnet, 8453) or base-sepolia (aliases sepolia, 84532). Defaults to base-mainnet. | |
| claimable_only | No | When true, return only fully funded unclaimed bounties. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| sandbox | No | |
| evidence_boundary | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so safety and repeatability are covered without the description. The description's only added behavioral signal is the implicit point that unfiltered listing returns non-claimable/unfunded lifecycle states, which is modest but real. With annotations carrying the safety profile, this is adequate but thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the usage condition comes first and the key parameter guidance second. It is well front-loaded and appropriately sized, though 'canonical lifecycle inventory' is a phrase that costs more reading effort than it repays.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two optional parameters, full schema coverage, and an output schema that carries return-value detail, the description does not need to explain results. It covers the primary invocation decision and the one meaningful flag, leaving only sibling differentiation absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented, making 3 the baseline. The description reframes claimable_only as 'currently funded and open to solve' (slightly different from the schema's 'fully funded unclaimed'), which adds marginal clarity, but it says nothing about the network parameter or defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title plus name establish that this lists bounties, and the description frames it as returning 'funded Agent Bounties work or canonical lifecycle inventory.' However, 'canonical lifecycle inventory' is jargon that doesn't precisely say what is returned, and it never distinguishes this list tool from siblings like get_bounty_feed or render_bounty_feed. Purpose is inferable but not stated sharply.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a usage cue ('use this when the person wants funded Agent Bounties work') and a concrete sub-case routing ('set claimable_only=true for work that is currently funded and open to solve'). But it never names an alternative tool or an exclusion condition, so the agent gets implied rather than explicit guidance on when to pick this over get_bounty_feed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_bounty_commentsRead bounty commentsARead-onlyIdempotentInspect
Use this when the person or mounted feed needs recent public comments for one bounty. Comments are conversation context and never funding, verification, settlement, or payment evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| bounty_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| sandbox | No | |
| comments | Yes | |
| bounty_id | No | |
| published | No | |
| share_after | No | |
| comment_count | Yes | |
| opportunity_id | No | |
| schema_version | No | |
| evidence_boundary | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior. The description adds useful interpretation: results are conversation context and never funding/verification/settlement/payment evidence, and it specifies the single-bounty scope. It does not detail pagination or ordering, but 'recent' plus the output schema covers the practical case.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler; the usage trigger is front-loaded and the semantic caution earns its place by preventing misuse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with strong annotations and an output schema, the description is complete: it gives the trigger condition, scope, and interpretation of the returned data. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the burden. It says 'for one bounty,' which communicates that bounty_id identifies the target bounty, but it does not describe the expected format or how to derive the identifier. The meaning is adequate but not fully explicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('read'), resource ('recent public comments'), and scope ('for one bounty'), and the added caution that comments are conversation context rather than funding or payment evidence clearly separates this read tool from monetary verification/settlement siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says when to use the tool: when a person or mounted feed needs recent public comments for one bounty. It does not name alternative tools such as add_bounty_comment, but the trigger condition is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_review_tasksAgent Bounties toolARead-onlyIdempotentInspect
List your pending review tasks and deadlines. Assignment grants no wallet signing authority.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive, so safety is covered. The added sentence 'Assignment grants no wallet signing authority' is a permission caveat, but it concerns assignment rather than listing, making its relevance to this call unclear, and nothing is said about pagination or result shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core purpose front-loaded. The second sentence is terse but tangential to listing, so it earns its place only marginally.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only list tool with full annotation coverage, the definition is adequate but thin: it never says what a review task record contains or whether results are scoped to the caller, and there is no output schema to fill that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline of 4 applies; there is no parameter semantics for the description to compensate for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — listing pending review tasks plus deadlines — which is clear at a glance. It does not explicitly distinguish itself from siblings like get_verification_review or list_bounty_comments, but the resource is specific enough to avoid confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the word 'pending' suggests a first-stop call to see outstanding work, but there is no explicit when-to-use or when-not-to-use guidance and no mention of the natural alternatives (accept_review_task, assign_review_task, get_verification_review).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_artifact_disputeAgent Bounties toolBInspect
Pause file cleanup while your dispute is open. Only the owner or a granted participant may do this. Returns your existing open dispute on retry; does not change the bounty outcome.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| reason | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds genuinely useful behavior not in the annotations: the cleanup-pause side effect, the authorization constraint, and that the bounty outcome is unaffected. But 'Returns your existing open dispute on retry' describes a repeated call producing no additional effect, which conflicts with the declared idempotentHint=false. Annotations also don't say what state the artifact/dispute enters or what happens to cleanup when the dispute is later resolved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with no filler. The most important effect (pausing cleanup) and the permission constraint come first, and each sentence carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should carry more of the return/state story; it touches on retry behavior and outcome effects but omits the resulting dispute state and what 'id' refers to. Combined with 0% parameter coverage and a mutation tool (readOnlyHint=false), the definition is adequate but leaves real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%: neither 'id' nor 'reason' is documented in the schema. The description does not compensate—it never says what the id identifies (artifact? bounty? submission?) or what the reason field is for or its 2000-char limit. An agent must guess the identifier's referent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description communicates the action and its effect ('pause file cleanup while your dispute is open') and implicitly distinguishes itself from the sibling resolve_artifact_dispute by framing the dispute as becoming open. It never states the verb 'opens a dispute' outright, so the core action is inferred rather than named, but an agent can still tell it apart from the resolve counterpart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Only the owner or a granted participant may do this' gives a clear authorization precondition for using the tool. However, it gives no guidance on when to open a dispute versus calling resolve_artifact_dispute, nor any prerequisite about the artifact's state before opening one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_artifact_submissionAgent Bounties toolBIdempotentInspect
Recheck stored bytes, then prepare an existing-contract submission for the authenticated solver. This does not sign or broadcast. Sign only on first-party wallet pages.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| network | Yes | ||
| evidence | Yes | ||
| solver_wallet | Yes | ||
| bounty_contract | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is partly covered. The description adds genuinely new context: the operation rechecks stored bytes, prepares but does not sign or broadcast, and signing is deferred to first-party wallet pages — a meaningful security boundary an agent would otherwise not know.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action and followed by the two key constraints. No wasted words, though 'Recheck stored bytes' is cryptic enough to cost a little clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter mutation tool with no output schema and zero schema description coverage, the description omits all parameter semantics and gives no indication of what the prepared submission result looks like. The signing/broadcast boundary is covered, but the definition is not complete enough to invoke confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across five required parameters, so the schema provides no semantic help. The description only indirectly gestures at bounty_contract ('existing-contract'), solver_wallet ('authenticated solver') and evidence ('stored bytes') without defining any of them, and says nothing about network or id. It fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('prepare') and resource ('an existing-contract submission') scoped to 'the authenticated solver', which distinguishes it from the confirm_artifact_submission sibling by implying this is the pre-confirmation step. It does not, however, explicitly contrast itself against the many other prepare_* siblings (prepare_bounty_action, prepare_bounty_post), so the differentiation is inferential rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'existing-contract submission' implies a precondition (a contract must already exist), and 'This does not sign or broadcast. Sign only on first-party wallet pages' clarifies the boundary of what this tool will and will not do. But there is no explicit when-to-use-this-vs-alternatives guidance relative to the sibling prepare/confirm tools, leaving routing largely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_bounty_actionPrepare secure bounty actionAIdempotentInspect
Use this when ChatGPT has gathered the required details conversationally and the person has explicitly confirmed a post, fund, solve or claim, complete, or verify action. Create one idempotent first-party authorization session; never request a wallet or verifier signature in ChatGPT and never describe prepared status as completion.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| details | No | Bounded action-specific draft or evidence fields for first-party review. | |
| network | No | ||
| bounty_id | No | ||
| actor_wallet | No | ||
| opportunity_id | No | ||
| bounty_contract | No | ||
| idempotency_key | Yes | ||
| amount_base_units | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| paid | Yes | |
| action | Yes | |
| status | Yes | |
| network | Yes | |
| bounty_id | No | |
| intent_id | Yes | |
| expires_at | Yes | |
| next_action | Yes | |
| share_after | Yes | |
| actor_wallet | No | |
| opportunity_id | No | |
| schema_version | Yes | |
| bounty_contract | No | |
| confirmed_block | No | |
| transaction_hash | No | |
| amount_base_units | No | |
| authorization_url | Yes | |
| evidence_boundary | Yes | |
| canonical_event_id | No | |
| canonical_event_kind | No | |
| expected_canonical_events | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavior beyond annotations: it establishes a first-party authorization session and forbids collecting wallet or verifier signatures in ChatGPT. It also clarifies that prepared status is not completion. There is no contradiction with idempotentHint=true, and the read/destructive hints are consistent with a non-read, non-destructive prepare operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with no padding, and the use-condition is front-loaded. The action-value list is a bit run-on and ambiguous ('solve or claim'), but the overall length is appropriate for the safety-critical content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given nine parameters, a nested details object, and a sibling cluster, the description is incomplete: it omits parameter semantics, does not distinguish prepare_bounty_action from prepare_bounty_post, and contains a schema mismatch. Output schema and annotations reduce some burden, but correct invocation still requires undocumented inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 11%, so the description had to carry parameter meaning, but it does not explain idempotency_key, bounty_id, actor_wallet, network, amount_base_units, opportunity_id, or bounty_contract. The only parameter-related content is the list of action values, which also includes unsupported 'claim.' Required fields other than action are left to the agent to infer.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear conditional trigger (details gathered and explicit confirmation) and a specific outcome: create one idempotent first-party authorization session. It is not a tautology and clearly targets bounty actions. However, it does not distinguish itself from sibling prepare_bounty_post, and the action list includes 'claim' even though the schema enum omits it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use preconditions: details gathered conversationally and explicit confirmation of the action. It also adds strong guardrails, such as never requesting wallet or verifier signatures in ChatGPT and never describing prepared status as completion. It does not name sibling alternatives or state when to choose prepare_bounty_post or get_bounty_action_status, so exclusions and alternatives are missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_bounty_postPrepare bounty for wallet reviewADestructiveIdempotentInspect
Use this when the person's AI has gathered complete bounty terms and received explicit approval. Reuse posting_operation_id when resuming. For creator review, set review_mode=creator and the exact agreed delivery_deadline with timezone offset, omit automated benchmark/evidence fields, and explain that the creator confirms the verdict. Preserve parent bindings, the approved reference_attachment, and any approved bounty_image with its exact prompt and alt text; omit all three image fields together to use the deterministic review-page visual. This prepares a reviewable handoff; it does not publish, move funds, request a secret, or prove that a bounty exists.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | Public digital outcome the solver must deliver. | |
| title | Yes | Concise public bounty title. | |
| benchmark | No | Optional exact public sandboxed_regression_v1 benchmark. Supply this and evidence_schema together. The source commit, benchmark digest, OCI image, command, and resource limits are immutable bounty terms. | |
| crowdfund | No | Keep false to fund on creation. Set true only to deposit 0 USDC now. | |
| meta_child | No | Preserve the routed parent binding. The review page verifies the canonical parent before applying any child economics. | |
| source_url | No | Optional public HTTPS source issue or task URL. | |
| review_mode | No | Creator review commits the creator as the sole human reviewer. The creator confirms the verdict; AI approval has no settlement authority. | |
| bounty_image | No | Optional approved image generated in a compatible AI conversation. Agent Bounties stores this exact file; omit it and both image text fields to use the deterministic fallback visual. | |
| image_prompt | No | Optional exact prompt used to generate a user-approved bounty image. Supply this, image_alt_text, and bounty_image together, or omit all three to use the deterministic fallback visual. | |
| image_alt_text | No | Optional accessible description of the approved image. Supply this, image_prompt, and bounty_image together. | |
| evidence_schema | No | Optional public submission-evidence schema paired with benchmark. Supply both verifier fields or neither. | |
| discovery_source | No | Optional public attribution for how the poster found Agent Bounties. | |
| task_window_days | No | Optional bounded work window in days; defaults to 30. | |
| delivery_deadline | No | For creator review, the exact agreed calendar deadline as an ISO timestamp with timezone offset. Never replace it with days after claim. Omit automated benchmark and evidence_schema fields in creator mode. | |
| solver_reward_usdc | Yes | Solver reward in display USDC, for example 2.00. | |
| acceptance_criteria | Yes | Binary or measurable public acceptance criteria. | |
| posting_operation_id | No | Stable posting journey identifier. Reuse it when resuming or retrying the same operation. If omitted, a deterministic identifier is derived from the unchanged preparation arguments. | |
| reference_attachment | No | Preserve the approved compact homepage-background snapshot descriptor, including its commit-pinned asset_url, sha256 and captured_at. The first-party review validates the pinned bytes; never replace the user's reference. | |
| verifier_reward_usdc | Yes | Verifier reward and refundable claim bond in display USDC, for example 0.10. In creator mode, label this the creator-review reserve; it is paid to the creator on either verdict. |
Output Schema
| Name | Required | Description |
|---|---|---|
| goal | Yes | |
| image | Yes | |
| state | Yes | |
| title | Yes | |
| schema | Yes | |
| post_url | Yes | |
| benchmark | No | |
| crowdfund | Yes | |
| meta_child | No | |
| source_url | No | |
| next_action | Yes | |
| review_mode | No | |
| target_usdc | Yes | |
| bounty_created | Yes | |
| evidence_schema | No | |
| task_window_days | Yes | |
| delivery_deadline | No | |
| evidence_boundary | Yes | |
| review_disclosure | No | |
| solver_reward_usdc | Yes | |
| acceptance_criteria | Yes | |
| initial_funding_usdc | Yes | |
| posting_operation_id | No | |
| reference_attachment | No | |
| verifier_reward_usdc | Yes | |
| verification_prepared | No | |
| wallet_signature_requested | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though annotations already mark the tool as non-read-only, idempotent, and destructive, the description adds valuable behavioral context: it is a preparation step, not a publishing/funding action; posting_operation_id should be reused when resuming; and creator review gives the creator settlement authority. It also explains the deterministic fallback visual and image-field coupling beyond what the annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but front-loaded with the trigger condition and packed with mode-specific rules. Nearly every sentence earns its place, though a few constraints, such as creator-mode omissions and image fallback behavior, are partially repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 19-parameter tool with nested objects, an output schema, and two review modes, the description covers the key scenarios and invariants: resuming, creator review, parent preservation, image fallback, and the non-publishing boundary. An agent has enough context to invoke it correctly without additional discovery.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds essential cross-parameter semantics: supply benchmark with evidence_schema, supply image fields together or omit all three, preserve parent bindings, and in creator mode omit automated fields and set a timezone-offset delivery_deadline. These grouping and mode-dependent rules are critical for constructing a valid call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the verb and resource: prepare a bounty for wallet review after complete terms and explicit approval, and it closes with 'This prepares a reviewable handoff.' It does not explicitly name or contrast sibling tools such as prepare_bounty_action, so it stops just short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit precondition: use when the person's AI has gathered complete bounty terms and received explicit approval. It also clarifies what the tool does not do—publish, move funds, request a secret, or prove a bounty exists—but it does not explicitly route to an alternative sibling tool by name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_moonpay_onrampPrepare MoonPay top-upARead-onlyIdempotentInspect
Use this when a person funding one canonical Base bounty needs Base USDC. Prepare a first-party MoonPay handoff only; never request card data or identity documents in ChatGPT, never treat a MoonPay purchase as bounty funding, and require a separate canonical funding authorization.
| Name | Required | Description | Default |
|---|---|---|---|
| intent_id | No | Optional hosted funding-intent identifier to preserve the return boundary. | |
| bounty_contract | Yes | ||
| amount_base_units | Yes | Planned bounty contribution in 6-decimal USDC base units. |
Output Schema
| Name | Required | Description |
|---|---|---|
| asset | Yes | |
| state | Yes | |
| network | Yes | |
| sandbox | Yes | |
| provider | Yes | |
| intent_id | Yes | |
| onramp_url | Yes | |
| next_action | Yes | |
| bounty_funded | Yes | |
| schema_version | Yes | |
| bounty_contract | Yes | |
| checkout_created | Yes | |
| evidence_boundary | Yes | |
| purchase_completed | Yes | |
| planned_amount_usdc | Yes | |
| canonical_funding_event | Yes | |
| planned_amount_base_units | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/non-destructive behavior, and the description adds meaningful policy context: it only produces a first-party handoff, must not collect sensitive data, and must not conflate a purchase with funding. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence that front-loads the trigger condition and then states hard constraints. No filler or repetition of schema/annotation information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with an output schema and safety annotations, the description covers trigger, scope, authorization requirement, and misuse prevention. An agent has what it needs to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 67% schema coverage and no explicit parameter explanations in the description, the required bounty_contract and amount_base_units rely on their names and the schema pattern/min-max. The description's Base USDC context supports amount_base_units, but it does not add detail about units or the contract's role.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action (prepare a first-party MoonPay handoff) and a specific trigger (person funding one canonical Base bounty needs Base USDC), which clearly separates it from sibling prepare_bounty_action/post tools. It also uses 'only' to delimit the tool's scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit when-to-use condition ('Use this when a person... needs Base USDC') and explicit prohibitions ('never request card data... never treat a MoonPay purchase as bounty funding... require a separate canonical funding authorization'). This tells an agent when and when not to invoke the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_open_competition_v2Prepare V2 actionDestructiveInspect
Use this only after inspect_open_competition_v2(operation=guide). Before each operation, read its exact arguments_schema with inspect_open_competition_v2(operation=schema, for_operation=the selected operation). Some operations return unsigned plans; quote_proof creates a hosted job, pay_proof may transfer Base USDC after explicit approval, and authorize_relay may submit a proof after explicit approval. Follow next_action and treat only CompetitionSettledV2 as payment evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| arguments | Yes | Exact argument object for the selected operation. First call inspect_open_competition_v2 with operation=schema and for_operation set to that operation; follow its arguments_schema. Never guess fields or include private keys. | |
| operation | Yes | Execute one ordered V2 Beta3 transition. |
Output Schema
| Name | Required | Description |
|---|---|---|
| flows | No | |
| state | No | |
| safety | No | |
| status | No | |
| error_code | No | |
| operations | No | |
| next_action | No | |
| side_effects | No | |
| creation_nonce | No | |
| schema_version | No | |
| profile_support | No | |
| activation_state | No | |
| evidence_boundary | No | |
| execution_policy_hash | No | |
| settlement_policy_hash | No |
render_bounty_feedOpen live bounty feedRead-onlyIdempotentInspect
Use this when the person wants the interactive Agent Bounties feed rendered inside ChatGPT. For model-selected results, inspect get_bounty_feed first and pass only the chosen opportunity_ids.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | ||
| limit | No | ||
| network | No | ||
| work_state | No | ||
| source_type | No | ||
| payment_state | No | ||
| opportunity_ids | No | Optional opportunity identifiers selected from get_bounty_feed. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| network | Yes | |
| app_mode | No | |
| coverage | No | |
| degraded | Yes | |
| generated_at | Yes | |
| coverage_scope | No | |
| schema_version | Yes | |
| commerce_enabled | No | |
| evidence_boundary | Yes |
resolve_artifact_disputeAgent Bounties toolBDestructiveInspect
Withdraw your own file-retention dispute with a reason. Other participants' holds remain; normal cleanup may resume. Does not change canonical outcomes.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| reason | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the mutation profile is covered. The description adds genuinely new behavioral context: only the caller's own dispute is withdrawn, other participants' holds persist, cleanup resumes, and canonical outcomes are unaffected — precisely the effect scope an agent needs for a destructive call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the action and effect. No filler, though the outcome caveat could be merged more economically.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The effect scope is well explained for a destructive operation, but for a mutating tool with no output schema the description omits authorization requirements, what the response returns, and whether the withdrawal is reversible. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the load. It only gestures at 'reason' and never mentions 'id' or clarifies that id targets the dispute rather than the artifact. The schema supplies types/formats (uuid, 1-2000 chars) but neither source explains parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (withdraw) and resource (file-retention dispute) with a scope qualifier (your own). An agent can distinguish this action from open_artifact_dispute, though the description never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'your own' implies an ownership precondition and the reason requirement hints at prerequisites, but there is no explicit when-to-use guidance and no named alternative (e.g. open_artifact_dispute, or what to do instead if you are not the owner). Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_verification_checksAgent Bounties toolAIdempotentInspect
Queue checks on exact durably stored files. Returns an existing run for identical inputs. Needs a verified website or wallet session; never accepts solver-supplied test outcomes.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | Yes | ||
| artifact_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond the annotations with three real facts: queued runs are deduplicated against identical inputs (elaborating idempotentHint), a verified session is required, and solver-supplied test outcomes are rejected – an integrity guarantee an agent could not derive from structured fields. It does not describe what happens to the queued run afterward or its lifecycle, so it falls short of full disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and followed by the dedup behavior and the auth/integrity constraints. No filler, every sentence carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The auth requirement and dedup behavior are usefully covered, but for a tool with an undocumented nested plan object, 0% schema coverage and no output schema, the description should explain what plan contains and roughly what the returned run looks like. The gap around plan is the main shortfall.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the plan parameter is an undescribed nested object. The phrase 'queue checks on exact durably stored files' hints that artifact_id points at a stored artifact, but nothing explains the shape or purpose of plan, so the description does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: queue checks on durably stored files, and adds a distinguishing behavior (returns an existing run for identical inputs) that separates it from find_verification_checks and get_verification_run. It never explicitly says the checks are verification checks on a stored artifact, so the connection to artifact_id is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States a prerequisite (verified website or wallet session) and a constraint (no solver-supplied test outcomes), which gives context for when the call will succeed. But it names no alternatives and does not say when to use this versus validate_verification_plan or find_verification_checks, leaving sibling selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_verification_reviewAgent Bounties toolBIdempotentInspect
Save each criterion's explanation and evidence before wallet signing. Authorized reviewer or accepted assigned agent only. Preserve the legacy assessment hash. Wallet signing remains on first-party pages.
| Name | Required | Description | Default |
|---|---|---|---|
| network | Yes | ||
| assessment | Yes | ||
| attestation | Yes | ||
| previous_report_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare a non-read-only, idempotent, non-destructive, open-world write, and the description adds real context beyond that: authorization requirements, that wallet signing is deliberately NOT performed here, and that a legacy assessment hash must be preserved. Missing details on failure modes or what exactly gets persisted, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short, front-loaded sentences with no filler; the action and the eligibility constraint lead. Slightly telegraphic ('Preserve the legacy assessment hash') but every sentence carries an instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with nested objects, no output schema and 0% schema coverage, the description covers authorization and the wallet-signing boundary but leaves the structure of assessment/attestation and the meaning of previous_report_id entirely undocumented. Adequate but with clear gaps that the schema cannot fill.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the schema contains two nested objects (assessment, attestation) plus network and previous_report_id, none of which are explained. The description alludes to 'criteria', 'evidence' and 'assessment hash' but maps none of this to the four parameters, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Save') and resource framing ('each criterion's explanation and evidence'), which tells an agent this persists review content tied to verification criteria. It does not explicitly name a sibling alternative, but 'verification review' vs the many prepare_/get_/list_ siblings is reasonably distinguishable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides timing and access context ('before wallet signing', 'Authorized reviewer or accepted assigned agent only'), which is genuinely useful for deciding eligibility and ordering. It never names an alternative tool (e.g., get_verification_review or prepare_bounty_action) or states when not to call it, so usage remains implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_verification_artifactAgent Bounties toolAIdempotentInspect
Store authenticated exact file bytes before a submission transaction. Base64 input. Remote MCP requests are limited to 2 MiB including encoding; for larger files use the API/CLI (100 MiB total) or exact GitHub commit import. Idempotency key required.
| Name | Required | Description | Default |
|---|---|---|---|
| files | Yes | ||
| idempotency_key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, idempotent=true, destructive=false, but the description adds what the annotations cannot: an exact byte-preservation guarantee, the 2 MiB remote-request ceiling (including base64 encoding overhead), the 100 MiB alternative path, and the mandatory idempotency key. These are exactly the constraints an agent must respect before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences with the core guarantee front-loaded and constraints following. The 'Base64 input.' fragment is terse but earns its place by flagging the encoding contract; nothing else is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write tool with annotations covering safety and no output schema, the description supplies the size limits, encoding requirement, and idempotency contract that structured fields omit. It stops short of indicating the natural next step (confirm_artifact_submission) or what a successful store returns, but nothing critical for invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the parameter burden. It explains that input is base64 and that the idempotency key is required, which is real added meaning, but it never clarifies the 'path' field or the files-array semantics (up to 1024 entries, exact bytes per path). Baseline 3 given partial compensation for a coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+timing: 'Store authenticated exact file bytes before a submission transaction.' That cleanly separates it from read siblings (get_verification_artifact) and from prepare_artifact_submission/confirm_artifact_submission, which handle the submission lifecycle rather than byte storage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit preconditions ('before a submission transaction') and names the fallbacks for cases it cannot serve: larger files go through the API/CLI (100 MiB total) or exact GitHub commit import. An agent knows both when to pick this tool and when to route elsewhere.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_verification_planAgent Bounties toolBRead-onlyIdempotentInspect
Validate complete criterion coverage and checker compatibility. Get the plan schema from find_verification_checks. The creator must accept the meaning before funding.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), so the description is not the primary source of behavioral information. It adds the gating context that the creator must accept the meaning before funding, but says nothing about what a failed validation reports or how coverage/compatibility are judged.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with the core purpose front-loaded and no filler. Each sentence carries a distinct instruction (what it validates, where to get the schema, the funding precondition).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a validation tool with a nested-object parameter at 0% coverage and no output schema, the definition should explain what a validation result contains (errors, coverage gaps, compatibility failures) and what constitutes a valid plan. It leaves both the input shape and the return behavior unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single 'plan' parameter is an untyped nested object with no property descriptions. The description only points to find_verification_checks for the schema rather than describing the plan's structure, so an agent still cannot construct the argument from this text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('Validate ... plan') and narrows it to two concrete aspects: 'complete criterion coverage' and 'checker compatibility'. It also implicitly distinguishes itself from find_verification_checks by casting that sibling as the schema source rather than the validator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides workflow context (get the plan schema from find_verification_checks; the creator must accept the meaning before funding), which implies when the step belongs in the flow. However, it never explicitly states when to call this versus alternatives or when a plan is ready to validate, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
get_bounty_feed2 fields changed- added
Output schema / properties / coverageAdded value: +{ + "enum": [ + "complete", + "partial", + "unavailable" + ], + "type": "string" +} - added
Output schema / properties / coverage_scopeAdded value: +{ + "enum": [ + "inventory_page", + "canonical_identity" + ], + "type": "string" +}
- Changed
render_bounty_feed2 fields changed- added
Output schema / properties / coverageAdded value: +{ + "enum": [ + "complete", + "partial", + "unavailable" + ], + "type": "string" +} - added
Output schema / properties / coverage_scopeAdded value: +{ + "enum": [ + "inventory_page", + "canonical_identity" + ], + "type": "string" +}
2 tool updates
- Changed
inspect_open_competition_v23 fields changed- changed
Input schema / oneOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "network": { - "description": "Defaults to base-mainnet.", - "enum": [ - "base-mainnet", - "base-sepolia", - null - ], - "type": [ - "string", - "null" - ] - }, - "operation": { - "const": "guide" - } - }, - "required": [ - "operation" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "network": { - "description": "Defaults to base-mainnet.", - "enum": [ - "base-mainnet", - "base-sepolia", - null - ], - "type": [ - "string", - "null" - ] - }, - "operation": { - "const": "release" - } - }, - "required": [ - "operation" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "network": { - "description": "Defaults to base-mainnet.", - "enum": [ - "base-mainnet", - "base-sepolia", - null - ], - "type": [ - "string", - "null" - ] - }, - "operation": { - "const": "profiles" - } - }, - "required": [ - "operation" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "network": { - "description": "Defaults to base-mainnet.", - "enum": [ - "base-mainnet", - "base-sepolia", - null - ], - "type": [ - "string", - "null" - ] - }, - "operation": { - "const": "inventory" - }, - "state": { - "enum": [ - "announced", - "funding", - "active", - "settled", - "cancelled", - null - ], - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "operation" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "bounty_id": { - "pattern": "^0x[0-9a-fA-F]{64}$", - "type": [ - "string", - "null" - ] - }, - "network": { - "description": "Defaults to base-mainnet.", - "enum": [ - "base-mainnet", - "base-sepolia", - null - ], - "type": [ - "string", - "null" - ] - }, - "operation": { - "const": "events" - } - }, - "required": [ - "operation" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "job_id": { - "format": "uuid", - "type": "string" - }, - "operation": { - "const": "proof_job" - } - }, - "required": [ - "operation", - "job_id" - ], - "type": "object" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "network": { + "description": "Defaults to base-mainnet.", + "enum": [ + "base-mainnet", + "base-sepolia", + null + ], + "type": [ + "string", + "null" + ] + }, + "operation": { + "const": "guide" + } + }, + "required": [ + "operation" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "for_operation": { + "enum": [ + "prepare_profile", + "prepare_policies", + "validate", + "create", + "fund", + "quote_proof", + "pay_proof", + "prepare_proof", + "authorize_relay", + "prepare_action" + ], + "type": "string" + }, + "operation": { + "const": "schema" + } + }, + "required": [ + "operation", + "for_operation" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "network": { + "description": "Defaults to base-mainnet.", + "enum": [ + "base-mainnet", + "base-sepolia", + null + ], + "type": [ + "string", + "null" + ] + }, + "operation": { + "const": "release" + } + }, + "required": [ + "operation" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "network": { + "description": "Defaults to base-mainnet.", + "enum": [ + "base-mainnet", + "base-sepolia", + null + ], + "type": [ + "string", + "null" + ] + }, + "operation": { + "const": "profiles" + } + }, + "required": [ + "operation" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "network": { + "description": "Defaults to base-mainnet.", + "enum": [ + "base-mainnet", + "base-sepolia", + null + ], + "type": [ + "string", + "null" + ] + }, + "operation": { + "const": "inventory" + }, + "state": { + "enum": [ + "announced", + "funding", + "active", + "settled", + "cancelled", + null + ], + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "operation" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "bounty_id": { + "pattern": "^0x[0-9a-fA-F]{64}$", + "type": [ + "string", + "null" + ] + }, + "network": { + "description": "Defaults to base-mainnet.", + "enum": [ + "base-mainnet", + "base-sepolia", + null + ], + "type": [ + "string", + "null" + ] + }, + "operation": { + "const": "events" + } + }, + "required": [ + "operation" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "job_id": { + "format": "uuid", + "type": "string" + }, + "operation": { + "const": "proof_job" + } + }, + "required": [ + "operation", + "job_id" + ], + "type": "object" + } +] - added
Input schema / properties / for_operationAdded value: +{ + "description": "For operation=schema only: mutation operation whose exact argument schema to read.", + "enum": [ + "prepare_profile", + "prepare_policies", + "validate", + "create", + "fund", + "quote_proof", + "pay_proof", + "prepare_proof", + "authorize_relay", + "prepare_action" + ], + "type": "string" +} - changed
Input schema / properties / operation / enumPrevious value: -[ - "guide", - "release", - "profiles", - "inventory", - "events", - "proof_job" -]New value: +[ + "guide", + "schema", + "release", + "profiles", + "inventory", + "events", + "proof_job" +]
- Changed
prepare_open_competition_v24 fields changed- removed
Input schema / $defsRemoved value: -{ - "authorize_relay": { - "additionalProperties": false, - "properties": { - "authorization_deadline": { - "minimum": 1, - "type": "integer" - }, - "proof_job_id": { - "format": "uuid", - "type": "string" - }, - "solver_signature": { - "description": "Omit to receive exact EIP-712 typed data; include only after explicit approval and signing.", - "pattern": "^0x(?:[0-9a-fA-F]{2})+$", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "proof_job_id", - "authorization_deadline" - ], - "type": "object" - }, - "create": { - "additionalProperties": false, - "properties": { - "acknowledged_risk_hash": { - "description": "Copy the live release beta_risk_hash to acknowledge the exact public-beta risk bundle.", - "pattern": "^0x[0-9a-fA-F]{64}$", - "type": "string" - }, - "creation_nonce": { - "description": "Copy from prepare_policies; reuse only when retrying the same intended competition.", - "pattern": "^0x[0-9a-fA-F]{64}$", - "type": "string" - }, - "creator": { - "pattern": "^0x[0-9a-fA-F]{40}$", - "type": "string" - }, - "initial_funding": { - "description": "Initial Base USDC contribution in 6-decimal base units; remaining funding can be pooled later.", - "pattern": "^(0|[1-9][0-9]*)$", - "type": "string" - }, - "network": { - "description": "Defaults to base-mainnet.", - "enum": [ - "base-mainnet", - "base-sepolia", - null - ], - "type": [ - "string", - "null" - ] - }, - "params": { - "additionalProperties": false, - "properties": { - "beta_risk_hash": { - "description": "Copy from the live release beta_risk_hash.", - "pattern": "^0x[0-9a-fA-F]{64}$", - "type": "string" - }, - "elf_hash": { - "description": "Copy from the selected reviewed profiles entry.", - "pattern": "^0x[0-9a-fA-F]{64}$", - "type": "string" - }, - "execution_policy_hash": { - "description": "Copy from prepare_policies.", - "pattern": "^0x[0-9a-fA-F]{64}$", - "type": "string" - }, - "funding_deadline": { - "description": "UTC Unix timestamp after which incomplete funding can be cancelled.", - "minimum": 1, - "type": "integer" - }, - "journal_schema_hash": { - "description": "Copy from the selected reviewed profiles entry.", - "pattern": "^0x[0-9a-fA-F]{64}$", - "type": "string" - }, - "keeper_reward": { - "description": "Unsigned base-unit decimal string; USDC uses 6 decimals.", - "pattern": "^(0|[1-9][0-9]*)$", - "type": "string" - }, - "metric_program_hash": { - "description": "Copy from the selected reviewed profiles entry.", - "pattern": "^0x[0-9a-fA-F]{64}$", - "type": "string" - }, - "program_vkey": { - "description": "Copy from the selected reviewed profiles entry.", - "pattern": "^0x[0-9a-fA-F]{64}$", - "type": "string" - }, - "proof_system": { - "enum": [ - "groth16", - "plonk" - ], - "type": "string" - }, - "proof_window_seconds": { - "description": "Proof-entry window after canonical activation.", - "minimum": 1, - "type": "integer" - }, - "score_direction": { - "enum": [ - "higher_is_better", - "lower_is_better" - ], - "type": "string" - }, - "score_threshold": { - "description": "Signed integer decimal string.", - "pattern": "^-?(0|[1-9][0-9]*)$", - "type": "string" - }, - "settlement_policy_hash": { - "description": "Copy from prepare_policies.", - "pattern": "^0x[0-9a-fA-F]{64}$", - "type": "string" - }, - "solver_reward": { - "description": "Unsigned base-unit decimal string; USDC uses 6 decimals.", - "pattern": "^(0|[1-9][0-9]*)$", - "type": "string" - }, - "source_hash": { - "description": "Copy from the selected reviewed profiles entry.", - "pattern": "^0x[0-9a-fA-F]{64}$", - "type": "string" - }, - "verification_policy_hash": { - "description": "Copy from prepare_profile.", - "pattern": "^0x[0-9a-fA-F]{64}$", - "type": "string" - }, - "winner_mode": { - "enum": [ - "first_proven", - "best_score" - ], - "type": "string" - } - }, - "required": [ - "solver_reward", - "keeper_reward", - "funding_deadline", - "proof_window_seconds", - "winner_mode", - "score_direction", - "score_threshold", - "proof_system", - "program_vkey", - "source_hash", - "elf_hash", - "journal_schema_hash", - "metric_program_hash", - "execution_policy_hash", - "verification_policy_hash", - "settlement_policy_hash", - "beta_risk_hash" - ], - "type": "object" - } - }, - "required": [ - "creator", - "creation_nonce", - "acknowledged_risk_hash", - "initial_funding", - "params" - ], - "type": "object" - }, - "fund": { - "additionalProperties": false, - "properties": { - "acknowledged_risk_hash": { - "pattern": "^0x[0-9a-fA-F]{64}$", - "type": "string" - }, - "amount": { - "description": "Unsigned base-unit decimal string; USDC uses 6 decimals.", - "pattern": "^(0|[1-9][0-9]*)$", - "type": "string" - }, - "competition_contract": { - "pattern": "^0x[0-9a-fA-F]{40}$", - "type": "string" - }, - "contributor": { - "pattern": "^0x[0-9a-fA-F]{40}$", - "type": "string" - }, - "network": { - "description": "Defaults to base-mainnet.", - "enum": [ - "base-mainnet", - "base-sepolia", - null - ], - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "contributor", - "competition_contract", - "amount", - "acknowledged_risk_hash" - ], - "type": "object" - }, - "pay_proof": { - "additionalProperties": false, - "properties": { - "payment_signature": { - "description": "Omit on the first call to receive the exact x402 challenge; include only after explicit approval and signing.", - "minLength": 1, - "type": [ - "string", - "null" - ] - }, - "proof_job_id": { - "format": "uuid", - "type": "string" - } - }, - "required": [ - "proof_job_id" - ], - "type": "object" - }, - "prepare_action": { - "additionalProperties": false, - "properties": { - "action": { - "enum": [ - "finalize_best_score", - "cancel_funding", - "expire_competition", - "cancel_unavailable_verifier", - "withdraw_refund_for" - ], - "type": "string" - }, - "caller": { - "oneOf": [ - { - "pattern": "^0x[0-9a-fA-F]{40}$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "competition_contract": { - "pattern": "^0x[0-9a-fA-F]{40}$", - "type": "string" - }, - "contributor": { - "description": "Required only for withdraw_refund_for; refunds always go to this contributor.", - "oneOf": [ - { - "pattern": "^0x[0-9a-fA-F]{40}$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "network": { - "description": "Defaults to base-mainnet.", - "enum": [ - "base-mainnet", - "base-sepolia", - null - ], - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "competition_contract", - "action" - ], - "type": "object" - }, - "prepare_policies": { - "additionalProperties": false, - "properties": { - "creation_nonce_seed": { - "description": "Stable unique public seed for this intended competition. Reuse it only when retrying the same creation.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "execution_policy": { - "description": "Complete public execution-policy JSON to commit.", - "minProperties": 1, - "type": "object" - }, - "settlement_policy": { - "description": "Complete public settlement-policy JSON to commit.", - "minProperties": 1, - "type": "object" - } - }, - "required": [ - "execution_policy", - "settlement_policy", - "creation_nonce_seed" - ], - "type": "object" - }, - "prepare_profile": { - "description": "Derive immutable fields for either reviewed built-in profile. profile_id is optional only for the legacy structured-artifact request shape.", - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "network": { - "description": "Defaults to base-mainnet.", - "enum": [ - "base-mainnet", - "base-sepolia", - null - ], - "type": [ - "string", - "null" - ] - }, - "profile_id": { - "const": "structured-artifact-metric-v1" - }, - "requirements": { - "items": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "kind": { - "const": "utf8_contains" - }, - "minimum_occurrences": { - "minimum": 1, - "type": "integer" - }, - "needle": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - }, - "weight": { - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "kind", - "needle", - "minimum_occurrences", - "weight" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "kind": { - "const": "utf8_excludes" - }, - "needle": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - }, - "weight": { - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "kind", - "needle", - "weight" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "kind": { - "const": "maximum_bytes" - }, - "maximum": { - "maximum": 1048576, - "minimum": 1, - "type": "integer" - }, - "weight": { - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "kind", - "maximum", - "weight" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "kind": { - "const": "json_valid" - }, - "weight": { - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "kind", - "weight" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "kind": { - "const": "json_pointer_exists" - }, - "pointer": { - "type": "string" - }, - "weight": { - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "kind", - "pointer", - "weight" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "expected": { - "type": "string" - }, - "kind": { - "const": "json_pointer_string_equals" - }, - "pointer": { - "type": "string" - }, - "weight": { - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "kind", - "pointer", - "expected", - "weight" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "kind": { - "const": "json_array_minimum_length" - }, - "minimum": { - "minimum": 0, - "type": "integer" - }, - "pointer": { - "type": "string" - }, - "weight": { - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "kind", - "pointer", - "minimum", - "weight" - ], - "type": "object" - } - ] - }, - "maxItems": 256, - "minItems": 1, - "type": "array" - }, - "threshold": { - "description": "Unsigned base-unit decimal string; USDC uses 6 decimals.", - "pattern": "^(0|[1-9][0-9]*)$", - "type": "string" - } - }, - "required": [ - "threshold", - "requirements" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "mode": { - "enum": [ - "all_equal", - "maximize_exact_matches", - "minimize_absolute_error" - ], - "type": "string" - }, - "network": { - "description": "Defaults to base-mainnet.", - "enum": [ - "base-mainnet", - "base-sepolia", - null - ], - "type": [ - "string", - "null" - ] - }, - "profile_id": { - "const": "public-vector-metric-v1" - }, - "threshold": { - "description": "Signed integer decimal string.", - "pattern": "^-?(0|[1-9][0-9]*)$", - "type": "string" - }, - "vectors": { - "items": { - "additionalProperties": false, - "properties": { - "expected": { - "maximum": 9223372036854776000, - "minimum": -9223372036854776000, - "type": "integer" - }, - "weight": { - "maximum": 4294967295, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "expected", - "weight" - ], - "type": "object" - }, - "maxItems": 10000, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "profile_id", - "mode", - "threshold", - "vectors" - ], - "type": "object" - } - ] - }, - "prepare_proof": { - "additionalProperties": false, - "properties": { - "authorization_deadline": { - "minimum": 1, - "type": "integer" - }, - "competition_contract": { - "pattern": "^0x[0-9a-fA-F]{40}$", - "type": "string" - }, - "network": { - "description": "Defaults to base-mainnet.", - "enum": [ - "base-mainnet", - "base-sepolia", - null - ], - "type": [ - "string", - "null" - ] - }, - "proof": { - "pattern": "^0x(?:[0-9a-fA-F]{2})+$", - "type": "string" - }, - "proof_system": { - "enum": [ - "groth16", - "plonk" - ], - "type": "string" - }, - "public_values": { - "pattern": "^0x(?:[0-9a-fA-F]{2})+$", - "type": "string" - }, - "solver": { - "pattern": "^0x[0-9a-fA-F]{40}$", - "type": "string" - }, - "solver_nonce": { - "description": "Unsigned base-unit decimal string; USDC uses 6 decimals.", - "pattern": "^(0|[1-9][0-9]*)$", - "type": "string" - }, - "solver_signature": { - "pattern": "^0x(?:[0-9a-fA-F]{2})+$", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "competition_contract", - "solver", - "solver_nonce", - "proof_system", - "public_values", - "proof", - "authorization_deadline" - ], - "type": "object" - }, - "quote_proof": { - "additionalProperties": false, - "properties": { - "artifact_hash": { - "description": "Required for public-vector and structured-artifact metrics. Omit for forward GMV; the API derives and binds the solver-specific submission hash from the attested snapshot.", - "pattern": "^0x[0-9a-fA-F]{64}$", - "type": "string" - }, - "competition_contract": { - "pattern": "^0x[0-9a-fA-F]{40}$", - "type": "string" - }, - "metric": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "mode": { - "enum": [ - "all_equal", - "maximize_exact_matches", - "minimize_absolute_error" - ], - "type": "string" - }, - "threshold": { - "description": "Signed integer decimal string.", - "pattern": "^-?(0|[1-9][0-9]*)$", - "type": "string" - }, - "vectors": { - "items": { - "additionalProperties": false, - "properties": { - "expected": { - "type": "integer" - }, - "observed": { - "type": "integer" - }, - "weight": { - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "expected", - "observed", - "weight" - ], - "type": "object" - }, - "maxItems": 10000, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "mode", - "threshold", - "vectors" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "artifact_utf8": { - "maxLength": 1048576, - "minLength": 1, - "type": "string" - }, - "profile_id": { - "const": "structured-artifact-metric-v1" - }, - "requirements": { - "items": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "kind": { - "const": "utf8_contains" - }, - "minimum_occurrences": { - "minimum": 1, - "type": "integer" - }, - "needle": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - }, - "weight": { - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "kind", - "needle", - "minimum_occurrences", - "weight" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "kind": { - "const": "utf8_excludes" - }, - "needle": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - }, - "weight": { - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "kind", - "needle", - "weight" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "kind": { - "const": "maximum_bytes" - }, - "maximum": { - "maximum": 1048576, - "minimum": 1, - "type": "integer" - }, - "weight": { - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "kind", - "maximum", - "weight" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "kind": { - "const": "json_valid" - }, - "weight": { - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "kind", - "weight" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "kind": { - "const": "json_pointer_exists" - }, - "pointer": { - "type": "string" - }, - "weight": { - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "kind", - "pointer", - "weight" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "expected": { - "type": "string" - }, - "kind": { - "const": "json_pointer_string_equals" - }, - "pointer": { - "type": "string" - }, - "weight": { - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "kind", - "pointer", - "expected", - "weight" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "kind": { - "const": "json_array_minimum_length" - }, - "minimum": { - "minimum": 0, - "type": "integer" - }, - "pointer": { - "type": "string" - }, - "weight": { - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "kind", - "pointer", - "minimum", - "weight" - ], - "type": "object" - } - ] - }, - "maxItems": 256, - "minItems": 1, - "type": "array" - }, - "threshold": { - "description": "Unsigned base-unit decimal string; USDC uses 6 decimals.", - "pattern": "^(0|[1-9][0-9]*)$", - "type": "string" - } - }, - "required": [ - "profile_id", - "threshold", - "artifact_utf8", - "requirements" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "campaign": { - "additionalProperties": false, - "properties": { - "ends_at": { - "minimum": 0, - "type": "integer" - }, - "epoch_id": { - "items": { - "maximum": 255, - "minimum": 0, - "type": "integer" - }, - "maxItems": 32, - "minItems": 32, - "type": "array" - }, - "excluded_bounty_contracts": { - "items": { - "items": { - "maximum": 255, - "minimum": 0, - "type": "integer" - }, - "maxItems": 20, - "minItems": 20, - "type": "array" - }, - "maxItems": 4096, - "type": "array" - }, - "excluded_wallets": { - "items": { - "items": { - "maximum": 255, - "minimum": 0, - "type": "integer" - }, - "maxItems": 20, - "minItems": 20, - "type": "array" - }, - "maxItems": 4096, - "type": "array" - }, - "minimum_score_base_units": { - "minimum": 0, - "type": "integer" - }, - "snapshot_attestation_threshold": { - "maximum": 255, - "minimum": 2, - "type": "integer" - }, - "snapshot_attesters": { - "items": { - "items": { - "maximum": 255, - "minimum": 0, - "type": "integer" - }, - "maxItems": 20, - "minItems": 20, - "type": "array" - }, - "maxItems": 255, - "minItems": 2, - "type": "array" - }, - "starts_at": { - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "epoch_id", - "starts_at", - "ends_at", - "minimum_score_base_units", - "excluded_wallets", - "excluded_bounty_contracts", - "snapshot_attesters", - "snapshot_attestation_threshold" - ], - "type": "object" - }, - "profile_id": { - "const": "forward-canonical-gmv-attribution-metric-v2" - }, - "snapshot": { - "additionalProperties": false, - "properties": { - "attestations": { - "items": { - "additionalProperties": false, - "properties": { - "signature": { - "items": { - "maximum": 255, - "minimum": 0, - "type": "integer" - }, - "maxItems": 65, - "minItems": 65, - "type": "array" - }, - "signer": { - "items": { - "maximum": 255, - "minimum": 0, - "type": "integer" - }, - "maxItems": 20, - "minItems": 20, - "type": "array" - } - }, - "required": [ - "signer", - "signature" - ], - "type": "object" - }, - "maxItems": 255, - "minItems": 2, - "type": "array" - }, - "end_block_hash": { - "items": { - "maximum": 255, - "minimum": 0, - "type": "integer" - }, - "maxItems": 32, - "minItems": 32, - "type": "array" - }, - "end_safe_block": { - "minimum": 0, - "type": "integer" - }, - "settlements": { - "items": { - "additionalProperties": false, - "properties": { - "block_number": { - "minimum": 0, - "type": "integer" - }, - "bounty_contract": { - "items": { - "maximum": 255, - "minimum": 0, - "type": "integer" - }, - "maxItems": 20, - "minItems": 20, - "type": "array" - }, - "bounty_id": { - "items": { - "maximum": 255, - "minimum": 0, - "type": "integer" - }, - "maxItems": 32, - "minItems": 32, - "type": "array" - }, - "creator": { - "items": { - "maximum": 255, - "minimum": 0, - "type": "integer" - }, - "maxItems": 20, - "minItems": 20, - "type": "array" - }, - "funding": { - "items": { - "additionalProperties": false, - "properties": { - "amount_base_units": { - "minimum": 0, - "type": "integer" - }, - "contributor": { - "items": { - "maximum": 255, - "minimum": 0, - "type": "integer" - }, - "maxItems": 20, - "minItems": 20, - "type": "array" - } - }, - "required": [ - "contributor", - "amount_base_units" - ], - "type": "object" - }, - "maxItems": 256, - "minItems": 1, - "type": "array" - }, - "gmv_base_units": { - "minimum": 0, - "type": "integer" - }, - "log_index": { - "minimum": 0, - "type": "integer" - }, - "protocol": { - "enum": [ - "autonomous", - "open_competition_v1", - "open_competition_v2" - ], - "type": "string" - }, - "settled_at": { - "minimum": 0, - "type": "integer" - }, - "solver": { - "items": { - "maximum": 255, - "minimum": 0, - "type": "integer" - }, - "maxItems": 20, - "minItems": 20, - "type": "array" - }, - "transaction_hash": { - "items": { - "maximum": 255, - "minimum": 0, - "type": "integer" - }, - "maxItems": 32, - "minItems": 32, - "type": "array" - } - }, - "required": [ - "protocol", - "bounty_contract", - "bounty_id", - "creator", - "solver", - "settled_at", - "block_number", - "transaction_hash", - "log_index", - "gmv_base_units", - "funding" - ], - "type": "object" - }, - "maxItems": 4096, - "type": "array" - }, - "start_block": { - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "start_block", - "end_safe_block", - "end_block_hash", - "settlements", - "attestations" - ], - "type": "object" - } - }, - "required": [ - "profile_id", - "campaign", - "snapshot" - ], - "type": "object" - } - ] - }, - "network": { - "description": "Defaults to base-mainnet.", - "enum": [ - "base-mainnet", - "base-sepolia", - null - ], - "type": [ - "string", - "null" - ] - }, - "relay": { - "type": "boolean" - }, - "solver": { - "pattern": "^0x[0-9a-fA-F]{40}$", - "type": "string" - }, - "solver_nonce": { - "description": "Unsigned base-unit decimal string; USDC uses 6 decimals.", - "pattern": "^(0|[1-9][0-9]*)$", - "type": "string" - } - }, - "required": [ - "competition_contract", - "solver", - "solver_nonce", - "relay", - "metric" - ], - "type": "object" - }, - "validate": { - "additionalProperties": false, - "properties": { - "acknowledged_risk_hash": { - "description": "Copy the live release beta_risk_hash to acknowledge the exact public-beta risk bundle.", - "pattern": "^0x[0-9a-fA-F]{64}$", - "type": "string" - }, - "creation_nonce": { - "description": "Copy from prepare_policies; reuse only when retrying the same intended competition.", - "pattern": "^0x[0-9a-fA-F]{64}$", - "type": "string" - }, - "creator": { - "pattern": "^0x[0-9a-fA-F]{40}$", - "type": "string" - }, - "initial_funding": { - "description": "Initial Base USDC contribution in 6-decimal base units; remaining funding can be pooled later.", - "pattern": "^(0|[1-9][0-9]*)$", - "type": "string" - }, - "network": { - "description": "Defaults to base-mainnet.", - "enum": [ - "base-mainnet", - "base-sepolia", - null - ], - "type": [ - "string", - "null" - ] - }, - "params": { - "additionalProperties": false, - "properties": { - "beta_risk_hash": { - "description": "Copy from the live release beta_risk_hash.", - "pattern": "^0x[0-9a-fA-F]{64}$", - "type": "string" - }, - "elf_hash": { - "description": "Copy from the selected reviewed profiles entry.", - "pattern": "^0x[0-9a-fA-F]{64}$", - "type": "string" - }, - "execution_policy_hash": { - "description": "Copy from prepare_policies.", - "pattern": "^0x[0-9a-fA-F]{64}$", - "type": "string" - }, - "funding_deadline": { - "description": "UTC Unix timestamp after which incomplete funding can be cancelled.", - "minimum": 1, - "type": "integer" - }, - "journal_schema_hash": { - "description": "Copy from the selected reviewed profiles entry.", - "pattern": "^0x[0-9a-fA-F]{64}$", - "type": "string" - }, - "keeper_reward": { - "description": "Unsigned base-unit decimal string; USDC uses 6 decimals.", - "pattern": "^(0|[1-9][0-9]*)$", - "type": "string" - }, - "metric_program_hash": { - "description": "Copy from the selected reviewed profiles entry.", - "pattern": "^0x[0-9a-fA-F]{64}$", - "type": "string" - }, - "program_vkey": { - "description": "Copy from the selected reviewed profiles entry.", - "pattern": "^0x[0-9a-fA-F]{64}$", - "type": "string" - }, - "proof_system": { - "enum": [ - "groth16", - "plonk" - ], - "type": "string" - }, - "proof_window_seconds": { - "description": "Proof-entry window after canonical activation.", - "minimum": 1, - "type": "integer" - }, - "score_direction": { - "enum": [ - "higher_is_better", - "lower_is_better" - ], - "type": "string" - }, - "score_threshold": { - "description": "Signed integer decimal string.", - "pattern": "^-?(0|[1-9][0-9]*)$", - "type": "string" - }, - "settlement_policy_hash": { - "description": "Copy from prepare_policies.", - "pattern": "^0x[0-9a-fA-F]{64}$", - "type": "string" - }, - "solver_reward": { - "description": "Unsigned base-unit decimal string; USDC uses 6 decimals.", - "pattern": "^(0|[1-9][0-9]*)$", - "type": "string" - }, - "source_hash": { - "description": "Copy from the selected reviewed profiles entry.", - "pattern": "^0x[0-9a-fA-F]{64}$", - "type": "string" - }, - "verification_policy_hash": { - "description": "Copy from prepare_profile.", - "pattern": "^0x[0-9a-fA-F]{64}$", - "type": "string" - }, - "winner_mode": { - "enum": [ - "first_proven", - "best_score" - ], - "type": "string" - } - }, - "required": [ - "solver_reward", - "keeper_reward", - "funding_deadline", - "proof_window_seconds", - "winner_mode", - "score_direction", - "score_threshold", - "proof_system", - "program_vkey", - "source_hash", - "elf_hash", - "journal_schema_hash", - "metric_program_hash", - "execution_policy_hash", - "verification_policy_hash", - "settlement_policy_hash", - "beta_risk_hash" - ], - "type": "object" - } - }, - "required": [ - "creator", - "creation_nonce", - "acknowledged_risk_hash", - "initial_funding", - "params" - ], - "type": "object" - } -} - removed
Input schema / allOfRemoved value: -[ - { - "if": { - "properties": { - "operation": { - "const": "prepare_profile" - } - }, - "required": [ - "operation" - ] - }, - "then": { - "properties": { - "arguments": { - "$ref": "#/$defs/prepare_profile" - } - } - } - }, - { - "if": { - "properties": { - "operation": { - "const": "prepare_policies" - } - }, - "required": [ - "operation" - ] - }, - "then": { - "properties": { - "arguments": { - "$ref": "#/$defs/prepare_policies" - } - } - } - }, - { - "if": { - "properties": { - "operation": { - "const": "validate" - } - }, - "required": [ - "operation" - ] - }, - "then": { - "properties": { - "arguments": { - "$ref": "#/$defs/validate" - } - } - } - }, - { - "if": { - "properties": { - "operation": { - "const": "create" - } - }, - "required": [ - "operation" - ] - }, - "then": { - "properties": { - "arguments": { - "$ref": "#/$defs/create" - } - } - } - }, - { - "if": { - "properties": { - "operation": { - "const": "fund" - } - }, - "required": [ - "operation" - ] - }, - "then": { - "properties": { - "arguments": { - "$ref": "#/$defs/fund" - } - } - } - }, - { - "if": { - "properties": { - "operation": { - "const": "quote_proof" - } - }, - "required": [ - "operation" - ] - }, - "then": { - "properties": { - "arguments": { - "$ref": "#/$defs/quote_proof" - } - } - } - }, - { - "if": { - "properties": { - "operation": { - "const": "pay_proof" - } - }, - "required": [ - "operation" - ] - }, - "then": { - "properties": { - "arguments": { - "$ref": "#/$defs/pay_proof" - } - } - } - }, - { - "if": { - "properties": { - "operation": { - "const": "prepare_proof" - } - }, - "required": [ - "operation" - ] - }, - "then": { - "properties": { - "arguments": { - "$ref": "#/$defs/prepare_proof" - } - } - } - }, - { - "if": { - "properties": { - "operation": { - "const": "authorize_relay" - } - }, - "required": [ - "operation" - ] - }, - "then": { - "properties": { - "arguments": { - "$ref": "#/$defs/authorize_relay" - } - } - } - }, - { - "if": { - "properties": { - "operation": { - "const": "prepare_action" - } - }, - "required": [ - "operation" - ] - }, - "then": { - "properties": { - "arguments": { - "$ref": "#/$defs/prepare_action" - } - } - } - } -] - added
Input schema / properties / arguments / additionalPropertiesAdded value: +true - changed
Input schema / properties / arguments / descriptionPrevious value: -"Operation-specific body selected by the conditional schema. Never add guessed fields."New value: +"Exact argument object for the selected operation. First call inspect_open_competition_v2 with operation=schema and for_operation set to that operation; follow its arguments_schema. Never guess fields or include private keys."
1 tool update
- Changed
list_autonomous_bounties2 fields changed- changed
Input schema / properties / network / descriptionPrevious value: -"Optional Base network; defaults to base-mainnet."New value: +"Base network, case-insensitive: base-mainnet (aliases base, mainnet, 8453) or base-sepolia (aliases sepolia, 84532). Defaults to base-mainnet." - removed
Input schema / properties / network / enumRemoved value: -[ - "base-sepolia", - "base-mainnet" -]
1 tool update
- Changed
list_autonomous_bounties1 field changed- added
Output schema / properties / items / items / properties / verification_detailsAdded value: +{ + "additionalProperties": true, + "type": "object" +}
2 tool updates
- Added
get_posting_options - Added
get_posting_status
16 tool updates
- Added
accept_review_task - Added
assign_review_task - Added
confirm_artifact_submission - Added
find_verification_checks - Added
get_verification_artifact - Added
get_verification_review - Added
get_verification_run - Added
import_verification_github - Added
list_review_tasks - Added
open_artifact_dispute - Added
prepare_artifact_submission - Added
resolve_artifact_dispute - Added
run_verification_checks - Added
save_verification_review - Added
upload_verification_artifact - Added
validate_verification_plan
1 tool update
- Removed
compile_objective_with_cloud_agent
1 tool update
- Changed
prepare_bounty_post15 fields changed- added
Input schema / properties / delivery_deadlineAdded value: +{ + "description": "For creator review, the exact agreed calendar deadline as an ISO timestamp with timezone offset. Never replace it with days after claim. Omit automated benchmark and evidence_schema fields in creator mode.", + "format": "date-time", + "type": [ + "string", + "null" + ] +} - added
Input schema / properties / meta_childAdded value: +{ + "additionalProperties": false, + "description": "Preserve the routed parent binding. The review page verifies the canonical parent before applying any child economics.", + "properties": { + "intended_child_solver": { + "pattern": "^0x[0-9a-fA-F]{40}$", + "type": [ + "string", + "null" + ] + }, + "parent_bounty_contract": { + "pattern": "^0x[0-9a-fA-F]{40}$", + "type": "string" + } + }, + "required": [ + "parent_bounty_contract" + ], + "type": [ + "object", + "null" + ] +} - added
Input schema / properties / posting_operation_idAdded value: +{ + "description": "Stable posting journey identifier. Reuse it when resuming or retrying the same operation. If omitted, a deterministic identifier is derived from the unchanged preparation arguments.", + "format": "uuid", + "type": [ + "string", + "null" + ] +} - added
Input schema / properties / reference_attachmentAdded value: +{ + "description": "Preserve the approved compact homepage-background snapshot descriptor, including its commit-pinned asset_url, sha256 and captured_at. The first-party review validates the pinned bytes; never replace the user's reference.", + "type": [ + "object", + "null" + ] +} - added
Input schema / properties / review_modeAdded value: +{ + "description": "Creator review commits the creator as the sole human reviewer. The creator confirms the verdict; AI approval has no settlement authority.", + "enum": [ + "creator", + "automated", + null + ], + "type": [ + "string", + "null" + ] +} - changed
Input schema / properties / verifier_reward_usdc / descriptionPrevious value: -"Verifier reward and refundable claim bond in display USDC, for example 0.10."New value: +"Verifier reward and refundable claim bond in display USDC, for example 0.10. In creator mode, label this the creator-review reserve; it is paid to the creator on either verdict." - added
Output schema / properties / benchmarkAdded value: +{ + "type": [ + "object", + "null" + ] +} - added
Output schema / properties / delivery_deadlineAdded value: +{ + "format": "date-time", + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / evidence_schemaAdded value: +{ + "type": [ + "object", + "null" + ] +} - added
Output schema / properties / meta_childAdded value: +{ + "type": [ + "object", + "null" + ] +} - added
Output schema / properties / posting_operation_idAdded value: +{ + "format": "uuid", + "type": "string" +} - added
Output schema / properties / reference_attachmentAdded value: +{ + "type": [ + "object", + "null" + ] +} - added
Output schema / properties / review_disclosureAdded value: +{ + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / review_modeAdded value: +{ + "enum": [ + "creator", + "automated" + ], + "type": "string" +} - added
Output schema / properties / verification_preparedAdded value: +{ + "type": "boolean" +}
1 tool update
- Changed
prepare_bounty_post2 fields changed- added
Input schema / properties / benchmarkAdded value: +{ + "description": "Optional exact public sandboxed_regression_v1 benchmark. Supply this and evidence_schema together. The source commit, benchmark digest, OCI image, command, and resource limits are immutable bounty terms.", + "type": [ + "object", + "null" + ] +} - added
Input schema / properties / evidence_schemaAdded value: +{ + "description": "Optional public submission-evidence schema paired with benchmark. Supply both verifier fields or neither.", + "type": [ + "object", + "null" + ] +}
13 tool updates
- First observed
add_bounty_comment - First observed
compile_objective_with_cloud_agent - First observed
create_share_bundle - First observed
get_bounty_action_status - First observed
get_bounty_feed - First observed
inspect_open_competition_v2 - First observed
list_autonomous_bounties - First observed
list_bounty_comments - First observed
prepare_bounty_action - First observed
prepare_bounty_post - First observed
prepare_moonpay_onramp - First observed
prepare_open_competition_v2 - First observed
render_bounty_feed
Related MCP Servers
- AlicenseNot gradedqualityBmaintenancePerplexity for social: ask what competitors are running across social and get answers grounded in real ad and creative data, not guesses.2Apache 2.0
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs119 npm54 PyPIMIT
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1611 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.