WritersLogic Verifiable AI Agent Hub Dispute Ev API

The Dispute Ev API from WritersLogic Verifiable AI Agent Hub — 1 operation(s) for dispute ev.

GitHub OpenAPI

Operations 1

POST /api/v1/dispute-ev UMA Dispute EV Desk #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/writerslogic-com:writerslogic-com-dispute-ev-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

writerslogic-com-dispute-ev-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: WritersLogic Verifiable AI Agent Hub Dispute Ev API
  version: 2.0.0
  description: Pay-per-call agents settled in USDC on Base via x402. Every response carries a signed provenance envelope.
  contact:
    name: WritersLogic
    url: https://writerslogic.com/agents
    email: agents@writerslogic.com
servers:
- url: https://agents.writerslogic.com
tags:
- name: Dispute Ev
paths:
  /api/v1/dispute-ev:
    post:
      operationId: dispute_ev
      summary: UMA Dispute EV Desk
      description: 'For a Polymarket market inside its roughly two-hour UMA challenge window, reads the live proposal on Polygon (adapter, optimistic oracle, bond, finalFee, expiry), judges P(proposal wrong or too early) against the literal rules with an ensemble plus red-team pass and verified quotes (full-game sports markets are decided by code with no model when Gamma''s timestamps show the answer came before the game ended, or when the final score settles an NBA, NHL, MLB or college-football moneyline, spread or total), and computes DISPUTE vs ABSTAIN expected value (bond win/loss, DVM lock cost, gas, your position and reset delay). Returns verdict.action DISPUTE / DO_NOT_DISPUTE / MONITOR_UNTIL with a UTC submit-by deadline, edge in USD and bps of the stake, and the full EV breakdown. Outside a live window it says why (settled, already disputed, no proposal yet) with the proposed and resolved outcome. For a market with no proposal yet, pass proposal.outcome to replay a what-if (mode what_if); the catalog example does this on a long-dated market. Not financial advice.


        Price: 0.50 USDC on Base (x402).'
      x-x402-price-usdc: '0.50'
      x-x402-amount: '500000'
      x-payment-info:
        protocols:
        - x402
        price:
          mode: fixed
          currency: USD
          amount: '0.50'
      x-audience: crypto
      x-sample-url: https://agents.writerslogic.com/api/v1/samples/dispute-ev
      security:
      - x402: []
      - apiKey: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              required:
              - market
              properties:
                market:
                  type: string
                  minLength: 3
                  maxLength: 500
                  description: Polymarket slug, market/event URL, conditionId or questionID.
                proposal:
                  type: object
                  additionalProperties: false
                  description: Overrides for on-chain proposal fields (what-if or replay). Omit to read the live proposal.
                  properties:
                    outcome:
                      type: string
                      enum:
                      - first
                      - second
                      - half
                      description: 'Proposed answer: first listed outcome (UMA price 1), second (price 0) or 50/50.'
                    expirationTime:
                      type: string
                      maxLength: 40
                      description: ISO-8601 UTC time the challenge window closes.
                    bondUsd:
                      type: number
                      minimum: 0
                      maximum: 1000000000
                    finalFeeUsd:
                      type: number
                      minimum: 0
                      maximum: 1000000000
                position:
                  type: object
                  additionalProperties: false
                  required:
                  - outcome
                  - shares
                  - avgPrice
                  description: Your holding in this market.
                  properties:
                    outcome:
                      type: string
                      minLength: 1
                      maxLength: 200
                      description: Outcome label held, e.g. Yes, No or a team name.
                    shares:
                      type: number
                      minimum: 0
                      maximum: 1000000000000
                    avgPrice:
                      type: number
                      minimum: 0
                      maximum: 1
                      description: Average entry price per share, USD.
                prices:
                  type: object
                  additionalProperties: false
                  required:
                  - first
                  - second
                  description: Current prices of the first and second listed outcomes, USD per share.
                  properties:
                    first:
                      type: number
                      minimum: 0
                      maximum: 1
                    second:
                      type: number
                      minimum: 0
                      maximum: 1
                evidenceUrls:
                  type: array
                  maxItems: 3
                  items:
                    type: string
                    maxLength: 2000
                  description: Public pages to treat as evidence.
                params:
                  type: object
                  additionalProperties: false
                  properties:
                    gasUsd:
                      type: number
                      minimum: 0
                      maximum: 10000
                      description: Total dispute transaction cost in USD; overrides the estimate.
                    gasPriceGwei:
                      type: number
                      minimum: 0
                      maximum: 100000
                    polUsd:
                      type: number
                      minimum: 0
                      maximum: 1000000
                    aprOpportunity:
                      type: number
                      minimum: 0
                      maximum: 10
                      description: Annual opportunity cost of capital, default 0.15.
                    minEdgeUsd:
                      type: number
                      minimum: 0
                      maximum: 1000000000
                      description: Minimum EV edge for DISPUTE, default 2.
                    otherDisputeProb:
                      type: number
                      minimum: 0
                      maximum: 1
                      description: P(someone else disputes a wrong proposal if you abstain), default 0.3 (an unmeasured assumption; it only affects callers holding a position).
                    safetyMarginMinutes:
                      type: number
                      minimum: 0
                      maximum: 600
                      description: Submit-by margin before the window closes, default 10.
            example:
              market: will-jd-vance-win-the-2028-us-presidential-election
              proposal:
                outcome: first
              position:
                outcome: 'No'
                shares: 400
                avgPrice: 0.83
              params:
                aprOpportunity: 0.15
                minEdgeUsd: 2
      responses:
        '200':
          description: Paid result with provenance
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      verdict:
                        type: object
                        description: Machine-readable call, computed in code. Leads the answer; detail follows in the other fields.
                        properties:
                          action:
                            type: string
                            enum:
                            - DISPUTE
                            - DO_NOT_DISPUTE
                            - MONITOR_UNTIL
                          reason_code:
                            type: string
                            description: Stable code for why this action was returned.
                          confidence:
                            anyOf:
                            - type: number
                            - type: 'null'
                            description: 0-1; null when no judgment was made.
                          confidence_label:
                            type: string
                            enum:
                            - low
                            - medium
                            - high
                          edge_bps:
                            anyOf:
                            - type: number
                            - type: 'null'
                            description: Expected edge in bps of cost; null when not priced.
                          edge_usd:
                            anyOf:
                            - type: number
                            - type: 'null'
                            description: 'Expected edge in USD (cover-claim: cover-asset units); null when not priced.'
                          size_usd:
                            anyOf:
                            - type: number
                            - type: 'null'
                            description: Suggested stake in USD; null when not sized.
                          headline:
                            type: string
                          drivers:
                            type: array
                            items:
                              type: string
                          next_step:
                            type: string
                          partial:
                            type: boolean
                            description: True when part of the analysis could not run; see missing.
                          missing:
                            type: array
                            items:
                              type: string
                      disclaimer:
                        type: string
                        description: Not financial advice.
                      mode:
                        type: string
                        enum:
                        - live
                        - what_if
                        description: 'what_if: no proposal existed yet and the caller''s proposal override was judged instead of an on-chain proposal.'
                      retrospective:
                        type: object
                        description: 'Present when the request is already settled, disputed, resolved or paused: status, proposed and resolved outcome labels, proposer and disputer.'
                      decision:
                        type: string
                        enum:
                        - DISPUTE
                        - DO_NOT_DISPUTE
                        - MONITOR_UNTIL
                      deadlineUtc:
                        anyOf:
                        - type: string
                        - type: 'null'
                        description: Submit-by time (window close minus safety margin) or re-check time, UTC ISO-8601.
                      confidence:
                        type: string
                        enum:
                        - low
                        - medium
                        - high
                      abstention:
                        type: object
                        description: Set when no judgment was made (unsupported market, blocked state, insufficient evidence).
                      reasons:
                        type: array
                        items:
                          type: string
                      market:
                        type: object
                      proposal:
                        type: object
                      window:
                        type: object
                      probabilities:
                        type: object
                      ev:
                        type: object
                        description: EV of DISPUTE and ABSTAIN with bond, lock, gas and position components, plus breakeven probability and sensitivity.
                      judgment:
                        type: object
                        description: Ensemble and red-team outputs with verified quotes.
                      evidence:
                        type: object
                      whatWouldChangeTheVerdict:
                        type: array
                        items:
                          type: string
                      assumptions:
                        type: object
                  _provenance:
                    type: object
                    description: C2PA-aligned manifest and W3C VC 2.0 (eddsa-jcs-2022) issued by the hub DID; verify at POST /api/v1/verify-provenance
                required:
                - data
                - _provenance
        '400':
          description: Invalid request (no payment consumed)
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
        '401':
          description: Invalid X-API-KEY
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
        '402':
          description: Payment required or invalid
          content:
            application/json:
              schema:
                type: object
                description: x402 v2 PaymentRequired (also base64 in the PAYMENT-REQUIRED header)
                properties:
                  x402Version:
                    type: integer
                  error:
                    type: string
                  code:
                    type: string
                  resource:
                    type: object
                  accepts:
                    type: array
                    items:
                      type: object
                  extensions:
                    type: object
        '502':
          description: Upstream failure; the payment is released or not settled
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
      tags:
      - Dispute Ev
components:
  securitySchemes:
    x402:
      type: apiKey
      in: header
      name: PAYMENT-SIGNATURE
      description: x402 v2 payment payload (base64) sent after a 402 challenge
    apiKey:
      type: apiKey
      in: header
      name: X-API-KEY