Skip to main content
Glama

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.

Ownership verified
Status
Healthy
Uptime
99.8% over 43 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL

TDQS

B3.3/5.0

Scored across 30 tools

Disambiguation3/5

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.

Naming Consistency5/5

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.

Tool Count2/5

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.

Completeness4/5

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 tools
accept_review_taskAgent Bounties toolBInspect

Accept a task assigned to your authenticated principal. Accepting does not grant signing authority.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 bountyA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
authorNo
bounty_idYes
comment_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
sandboxNo
commentsYes
bounty_idNo
publishedNo
share_afterNo
comment_countYes
opportunity_idNo
schema_versionNo
evidence_boundaryYes

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
assignee_principalYes

TDQS

B3.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 toolB
DestructiveIdempotent
Inspect

Link stored files to an indexed canonical submission by its authenticated solver. Publish files only when explicitly requested; a broadcast is not confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
roundYes
networkYes
publish_filesYes
bounty_contractYes

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

create_share_bundlePrepare share cardA
Read-onlyIdempotent
Inspect

Use this when the person wants a factual social-ready caption and card intent after a bounty step. Pass the selected projection's first-party bounty_image_url when available so the original approved image remains attached to the share package. Sharing is optional and changes no funding, claim, verification, settlement, or payment state.

ParametersJSON Schema
NameRequiredDescriptionDefault
stageYesShort factual stage label such as terms prepared, funding requested, solving, completed, verified, or commented.
titleYes
rewardNo
statusYes
bounty_idYes
bounty_urlYes
payment_stateNo
bounty_image_urlNoOptional first-party image URL from the selected bounty projection.

Output Schema

ParametersJSON Schema
NameRequiredDescription
stageYes
schemaYes
captionYes
intentsYes
sandboxNo
hashtagsYes
bounty_idYes
share_urlYes
next_actionYes
bounty_image_urlYes
evidence_boundaryYes
instagram_captionYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds relevant behavioral context by stating that sharing 'changes no funding, claim, verification, settlement, or payment state' and by explaining how the original image remains attached when bounty_image_url is passed. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact at three sentences, front-loads the main use case, and avoids generic filler. Each sentence adds meaningful guidance, though the parameter guidance is limited.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers when to use the tool, the no-side-effect guarantee, and the key image parameter. However, with 8 parameters and only 25% schema coverage, more context about how to populate required fields or how the share card relates to sibling tools would make it more complete. The presence of an output schema mitigates some of this gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 25%, with only stage and bounty_image_url described in the schema. The description adds guidance for bounty_image_url but does little to explain the meaning or expected format of the other parameters, such as title, status, bounty_url, reward, and payment_state. Since coverage is low, the description needed to compensate more.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific purpose: producing a factual social-ready caption and card intent after a bounty step. It clearly identifies the tool's resource (share bundle/card) and the user goal, though it does not explicitly differentiate it from sibling tools like prepare_bounty_post or 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit trigger: 'Use this when the person wants a factual social-ready caption and card intent after a bounty step.' It also clarifies that sharing is optional and has no state-changing effects. However, it does not mention when not to use it or name alternative tools for related intents.

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 toolB
Read-onlyIdempotent
Inspect

Find versioned broad checks, exact parameter schemas, limits and what each check proves. Checks do not approve payment.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 statusA
Idempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
intent_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
paidYes
actionYes
statusYes
networkYes
bounty_idNo
intent_idYes
expires_atYes
next_actionYes
share_afterYes
actor_walletNo
opportunity_idNo
schema_versionYes
bounty_contractNo
confirmed_blockNo
transaction_hashNo
amount_base_unitsNo
authorization_urlYes
evidence_boundaryYes
canonical_event_idNo
canonical_event_kindNo
expected_canonical_eventsYes

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 data
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNo
limitNo
networkNo
work_stateNo
source_typeNo
payment_stateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes
networkYes
app_modeNo
coverageNo
degradedYes
generated_atYes
coverage_scopeNo
schema_versionYes
commerce_enabledNo
evidence_boundaryYes
get_posting_optionsExplain posting choices and costsA
Read-onlyIdempotent
Inspect

Read the supported review choices, costs, wallet requirements and first-party posting journey. No draft approval or signature.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 sponsorshipA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletNoPublic Base wallet address for a read-only USDC balance. Never a signature, key or session credential.
protocolNoSelect the deployed protocol explicitly. Creator-open is a separately gated release; unavailable never means unfunded.
operation_idNoExisting posting operation. Private approval status requires the caller's authenticated account session in transport headers; the identifier alone never grants access.
bounty_contractNoOriginal predicted or created Base bounty address. Never generate a replacement to escape a pending wallet request.

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 toolB
Read-onlyIdempotent
Inspect

Read an authorized immutable file manifest.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 toolC
Read-onlyIdempotent
Inspect

Read a review you authored or may sign. Drafts, signatures, broadcasts and confirmed outcomes stay separate.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

C2.7/5.0
Behavior3/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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 toolB
Read-onlyIdempotent
Inspect

Read the caller's stored check report. Pass is limited to each check's claim; missing review is not approval.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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 toolA
Idempotent
Inspect

Import selected files from an exact public GitHub commit. A branch name is not accepted; caller authentication and idempotency key required.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathsYes
commitYes
repositoryYes
idempotency_keyYes

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 competition
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNo
job_idNo
networkNo
bounty_idNo
operationNo
for_operationNoFor operation=schema only: mutation operation whose exact argument schema to read.

Output Schema

ParametersJSON Schema
NameRequiredDescription
flowsNo
stateNo
safetyNo
statusNo
error_codeNo
operationsNo
next_actionNo
side_effectsNo
creation_nonceNo
schema_versionNo
profile_supportNo
activation_stateNo
evidence_boundaryNo
execution_policy_hashNo
settlement_policy_hashNo
list_autonomous_bountiesList canonical bountiesB
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
networkNoBase network, case-insensitive: base-mainnet (aliases base, mainnet, 8453) or base-sepolia (aliases sepolia, 84532). Defaults to base-mainnet.
claimable_onlyNoWhen true, return only fully funded unclaimed bounties.

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes
sandboxNo
evidence_boundaryNo

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines3/5

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 commentsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bounty_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
sandboxNo
commentsYes
bounty_idNo
publishedNo
share_afterNo
comment_countYes
opportunity_idNo
schema_versionNo
evidence_boundaryYes

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 toolA
Read-onlyIdempotent
Inspect

List your pending review tasks and deadlines. Assignment grants no wallet signing authority.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
reasonYes

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 toolB
Idempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
networkYes
evidenceYes
solver_walletYes
bounty_contractYes

TDQS

B3.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 actionA
Idempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes
detailsNoBounded action-specific draft or evidence fields for first-party review.
networkNo
bounty_idNo
actor_walletNo
opportunity_idNo
bounty_contractNo
idempotency_keyYes
amount_base_unitsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
paidYes
actionYes
statusYes
networkYes
bounty_idNo
intent_idYes
expires_atYes
next_actionYes
share_afterYes
actor_walletNo
opportunity_idNo
schema_versionYes
bounty_contractNo
confirmed_blockNo
transaction_hashNo
amount_base_unitsNo
authorization_urlYes
evidence_boundaryYes
canonical_event_idNo
canonical_event_kindNo
expected_canonical_eventsYes

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 reviewA
DestructiveIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalYesPublic digital outcome the solver must deliver.
titleYesConcise public bounty title.
benchmarkNoOptional 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.
crowdfundNoKeep false to fund on creation. Set true only to deposit 0 USDC now.
meta_childNoPreserve the routed parent binding. The review page verifies the canonical parent before applying any child economics.
source_urlNoOptional public HTTPS source issue or task URL.
review_modeNoCreator review commits the creator as the sole human reviewer. The creator confirms the verdict; AI approval has no settlement authority.
bounty_imageNoOptional 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_promptNoOptional 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_textNoOptional accessible description of the approved image. Supply this, image_prompt, and bounty_image together.
evidence_schemaNoOptional public submission-evidence schema paired with benchmark. Supply both verifier fields or neither.
discovery_sourceNoOptional public attribution for how the poster found Agent Bounties.
task_window_daysNoOptional bounded work window in days; defaults to 30.
delivery_deadlineNoFor 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_usdcYesSolver reward in display USDC, for example 2.00.
acceptance_criteriaYesBinary or measurable public acceptance criteria.
posting_operation_idNoStable 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_attachmentNoPreserve 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_usdcYesVerifier 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

ParametersJSON Schema
NameRequiredDescription
goalYes
imageYes
stateYes
titleYes
schemaYes
post_urlYes
benchmarkNo
crowdfundYes
meta_childNo
source_urlNo
next_actionYes
review_modeNo
target_usdcYes
bounty_createdYes
evidence_schemaNo
task_window_daysYes
delivery_deadlineNo
evidence_boundaryYes
review_disclosureNo
solver_reward_usdcYes
acceptance_criteriaYes
initial_funding_usdcYes
posting_operation_idNo
reference_attachmentNo
verifier_reward_usdcYes
verification_preparedNo
wallet_signature_requestedYes

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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-upA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
intent_idNoOptional hosted funding-intent identifier to preserve the return boundary.
bounty_contractYes
amount_base_unitsYesPlanned bounty contribution in 6-decimal USDC base units.

Output Schema

ParametersJSON Schema
NameRequiredDescription
assetYes
stateYes
networkYes
sandboxYes
providerYes
intent_idYes
onramp_urlYes
next_actionYes
bounty_fundedYes
schema_versionYes
bounty_contractYes
checkout_createdYes
evidence_boundaryYes
purchase_completedYes
planned_amount_usdcYes
canonical_funding_eventYes
planned_amount_base_unitsYes

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 action
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
argumentsYesExact 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.
operationYesExecute one ordered V2 Beta3 transition.

Output Schema

ParametersJSON Schema
NameRequiredDescription
flowsNo
stateNo
safetyNo
statusNo
error_codeNo
operationsNo
next_actionNo
side_effectsNo
creation_nonceNo
schema_versionNo
profile_supportNo
activation_stateNo
evidence_boundaryNo
execution_policy_hashNo
settlement_policy_hashNo
render_bounty_feedOpen live bounty feed
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNo
limitNo
networkNo
work_stateNo
source_typeNo
payment_stateNo
opportunity_idsNoOptional opportunity identifiers selected from get_bounty_feed.

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes
networkYes
app_modeNo
coverageNo
degradedYes
generated_atYes
coverage_scopeNo
schema_versionYes
commerce_enabledNo
evidence_boundaryYes
resolve_artifact_disputeAgent Bounties toolB
Destructive
Inspect

Withdraw your own file-retention dispute with a reason. Other participants' holds remain; normal cleanup may resume. Does not change canonical outcomes.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
reasonYes

TDQS

B3.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 toolA
Idempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
planYes
artifact_idYes

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 toolB
Idempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
networkYes
assessmentYes
attestationYes
previous_report_idNo

TDQS

B3.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 toolA
Idempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
filesYes
idempotency_keyYes

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 toolB
Read-onlyIdempotent
Inspect

Validate complete criterion coverage and checker compatibility. Get the plan schema from find_verification_checks. The creator must accept the meaning before funding.

ParametersJSON Schema
NameRequiredDescriptionDefault
planYes

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

  1. 2 tool updates
    • Changedget_bounty_feed2 fields changed
      • addedOutput schema / properties / coverage
        Added value: +{
        +  "enum": [
        +    "complete",
        +    "partial",
        +    "unavailable"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / coverage_scope
        Added value: +{
        +  "enum": [
        +    "inventory_page",
        +    "canonical_identity"
        +  ],
        +  "type": "string"
        +}
    • Changedrender_bounty_feed2 fields changed
      • addedOutput schema / properties / coverage
        Added value: +{
        +  "enum": [
        +    "complete",
        +    "partial",
        +    "unavailable"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / coverage_scope
        Added value: +{
        +  "enum": [
        +    "inventory_page",
        +    "canonical_identity"
        +  ],
        +  "type": "string"
        +}
  2. 2 tool updates
    • Changedinspect_open_competition_v23 fields changed
      • changedInput schema / oneOf
        Previous 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"
        +  }
        +]
      • addedInput schema / properties / for_operation
        Added 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"
        +}
      • changedInput schema / properties / operation / enum
        Previous value: -[
        -  "guide",
        -  "release",
        -  "profiles",
        -  "inventory",
        -  "events",
        -  "proof_job"
        -]New value: +[
        +  "guide",
        +  "schema",
        +  "release",
        +  "profiles",
        +  "inventory",
        +  "events",
        +  "proof_job"
        +]
    • Changedprepare_open_competition_v24 fields changed
      • removedInput schema / $defs
        Removed 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"
        -  }
        -}
      • removedInput schema / allOf
        Removed 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"
        -        }
        -      }
        -    }
        -  }
        -]
      • addedInput schema / properties / arguments / additionalProperties
        Added value: +true
      • changedInput schema / properties / arguments / description
        Previous 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."
  3. 1 tool update
    • Changedlist_autonomous_bounties2 fields changed
      • changedInput schema / properties / network / description
        Previous 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."
      • removedInput schema / properties / network / enum
        Removed value: -[
        -  "base-sepolia",
        -  "base-mainnet"
        -]
  4. 1 tool update
    • Changedlist_autonomous_bounties1 field changed
      • addedOutput schema / properties / items / items / properties / verification_details
        Added value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
  5. 2 tool updates
    • Addedget_posting_options
    • Addedget_posting_status
  6. 16 tool updates
    • Addedaccept_review_task
    • Addedassign_review_task
    • Addedconfirm_artifact_submission
    • Addedfind_verification_checks
    • Addedget_verification_artifact
    • Addedget_verification_review
    • Addedget_verification_run
    • Addedimport_verification_github
    • Addedlist_review_tasks
    • Addedopen_artifact_dispute
    • Addedprepare_artifact_submission
    • Addedresolve_artifact_dispute
    • Addedrun_verification_checks
    • Addedsave_verification_review
    • Addedupload_verification_artifact
    • Addedvalidate_verification_plan
  7. 1 tool update
    • Removedcompile_objective_with_cloud_agent
  8. 1 tool update
    • Changedprepare_bounty_post15 fields changed
      • addedInput schema / properties / delivery_deadline
        Added 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"
        +  ]
        +}
      • addedInput schema / properties / meta_child
        Added 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"
        +  ]
        +}
      • addedInput schema / properties / posting_operation_id
        Added 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"
        +  ]
        +}
      • addedInput schema / properties / reference_attachment
        Added 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"
        +  ]
        +}
      • addedInput schema / properties / review_mode
        Added 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"
        +  ]
        +}
      • changedInput schema / properties / verifier_reward_usdc / description
        Previous 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."
      • addedOutput schema / properties / benchmark
        Added value: +{
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / delivery_deadline
        Added value: +{
        +  "format": "date-time",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / evidence_schema
        Added value: +{
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / meta_child
        Added value: +{
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / posting_operation_id
        Added value: +{
        +  "format": "uuid",
        +  "type": "string"
        +}
      • addedOutput schema / properties / reference_attachment
        Added value: +{
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / review_disclosure
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / review_mode
        Added value: +{
        +  "enum": [
        +    "creator",
        +    "automated"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / verification_prepared
        Added value: +{
        +  "type": "boolean"
        +}
  9. 1 tool update
    • Changedprepare_bounty_post2 fields changed
      • addedInput schema / properties / benchmark
        Added 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"
        +  ]
        +}
      • addedInput schema / properties / evidence_schema
        Added value: +{
        +  "description": "Optional public submission-evidence schema paired with benchmark. Supply both verifier fields or neither.",
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
  10. 13 tool updates
    • First observedadd_bounty_comment
    • First observedcompile_objective_with_cloud_agent
    • First observedcreate_share_bundle
    • First observedget_bounty_action_status
    • First observedget_bounty_feed
    • First observedinspect_open_competition_v2
    • First observedlist_autonomous_bounties
    • First observedlist_bounty_comments
    • First observedprepare_bounty_action
    • First observedprepare_bounty_post
    • First observedprepare_moonpay_onramp
    • First observedprepare_open_competition_v2
    • First observedrender_bounty_feed

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Perplexity for social: ask what competitors are running across social and get answers grounded in real ad and creative data, not guesses.
    2
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    Enables 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.
    16
    11 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources