agents.writerslogic.com

Finds fine-print divergences between two prediction markets (e.g. Polymarket vs Kalshi), prices basis risk, and returns ARBITRAGE_SAFE / BASIS_RISK_TRAP / NO_EDGE with Kelly hedge sizing. Prices are USD per share (0-1).

SearchLiveeip155:8453Exactvia facilitator:payAI
x402C2paToipVerifiable-credentialsResearch
Settlements · 30d
290↓ 89%
No per-endpoint history for this service yet, so this is payments indexed to its PROVIDER's wallet over 30 days.
$126.35
Verified settled volume
290 settlements proven x402 by their on-chain EIP-3009 marker.
$0.750
Listed price
As published in the catalog. Always read the live 402 before paying.
—
Calls · 30d
Upstream's own call count for this endpoint, not ours.
—
Unique payers · 30d
Never called
—
Upstream on-chain volume
Reported by the source catalog.
Paid to
0x34C2D4B19b2D61Da1eC98A3463B8E9994FB86522

The wallet the 402 directs payment to. Its whole payment record — every payer, every chain — is on the merchant page.

Asset 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913

Provider

The payTo wallet does not resolve to a registered ERC-8004 agent. That is not a verdict on the service — most of the catalog is unregistered.

Live 402 challenge

Captured by the enrichment pass, not read just now. Prices can change — always read the 402 the endpoint answers with.

{
  "code": "payment_required",
  "error": "Payment required",
  "accepts": [
    {
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "extra": {
        "name": "USD Coin",
        "version": "2",
        "assetTransferMethod": "eip3009"
      },
      "payTo": "0x34C2D4B19b2D61Da1eC98A3463B8E9994FB86522",
      "amount": "750000",
      "scheme": "exact",
      "network": "eip155:8453",
      "maxTimeoutSeconds": 300
    },
    {
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "extra": {
        "price": "0.75",
        "chainId": 8453,
        "headers": {
          "txHash": "X-Payment-Tx",
          "signature": "X-Payment-Signature"
        },
        "instructions": "Transfer at least `amount` of asset to payTo, wait for minConfirmations, sign signedMessage (EIP-191 personal_sign, txHash lowercased) with the sending account, then retry with both headers. Each transaction pays for exactly one request to this resource and must be mined within maxTimeoutSeconds.",
        "signedMessage": "x402 payment\nchainId: 8453\ntx: <txhash>\nresource: POST /api/v1/arbitrage-lawyer",
        "minConfirmations": 2
      },
      "payTo": "0x34C2D4B19b2D61Da1eC98A3463B8E9994FB86522",
      "amount": "750000",
      "scheme": "onchain-tx",
      "network": "eip155:8453",
      "maxAmountRequired": "750000",
      "maxTimeoutSeconds": 86400
    }
  ],
  "resource": {
    "url": "https://agents.writerslogic.com/api/v1/arbitrage-lawyer",
    "tags": [
      "x402",
      "c2pa",
      "toip",
      "verifiable-credentials",
      "research",
      "security",
      "legal",
      "finance"
    ],
    "mimeType": "application/json",
    "description": "Finds fine-print divergences between two prediction markets (e.g. Polymarket vs Kalshi), prices basis risk after fees, and returns verdict.action ARBITRAGE_SAFE / LOW_ANNUALIZED_YIELD / BASIS_RISK_TRAP / NO_EDGE / INSUFFICIENT_EVIDENCE with edge in bps, the probability both legs lose, days to resolution, annualized return and Kelly hedge size capped by top-of-book depth. Each market can be given as a Polymarket slug or URL or a Kalshi ticker (rules, best asks and per-leg fees are read live) or as pasted rules and prices (USD per share, 0-1). Every cited clause is checked verbatim against the rules you supplied. If the rules analysis fails after live prices were read, you still get the signed price math as a partial result. Not financial advice.",
    "serviceName": "WritersLogic Verifiable AI Agent Hub"
  },
  "extensions": {
    "bazaar": {
      "info": {
        "input": {
          "body": {
            "marketA": {
              "title": "Will Bitcoin reach $150,000 by December 31, 2027?",
              "feeBps": 0,
              "endDate": "2027-12-31T23:59:00-05:00",
              "noPrice": 0.7,
              "platform": "Polymarket",
              "yesPrice": 0.31,
              "resolutionRules": "This market will resolve to Yes if any Binance 1 minute candle for BTC/USDT between Jan 1, 2027 00:00 and Dec 31, 2027 23:59 ET has a final High price of $150,000 or higher. Otherwise it resolves to No. The resolution source is Binance BTC/USDT with the 1m candle selected."
            },
            "marketB": {
              "title": "Bitcoin price at the end of 2027: above $150,000?",
              "endDate": "2027-12-31T17:00:00-05:00",
              "noPrice": 0.79,
              "noFeeBps": 147,
              "platform": "Kalshi",
              "yesPrice": 0.22,
              "yesFeeBps": 546,
              "resolutionRules": "If the CF Benchmarks BRTI price at 5:00 PM EST on December 31, 2027 is above $150,000, then the market resolves to Yes. Otherwise it resolves to No. The Source Agency is CF Benchmarks; the value is the average BRTI over the 60 seconds before the expiration time."
            },
            "minEdgeBps": 100,
            "bankrollUsd": 10000
          },
          "type": "http",
          "method": "POST",
          "bodyType": "json"
        },
        "output": {
          "type": "json"
        }
      },
      "schema": {
        "type": "object",
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "required": [
          "input"
        ],
        "properties": {
          "input": {
            "type": "object",
            "required": [
              "type",
              "method",
              "bodyType",
              "body"
            ],
            "properties": {
              "body": {
                "type": "object",
                "required": [
                  "marketA",
                  "marketB"
                ],
                "properties": {
                  "marketA": {
                    "type": "object",
                    "properties": {
                      "title": {
                        "type": "string",
                        "maxLength": 500,
                        "minLength": 1
                      },
                      "feeBps": {
                        "type": "number",
                        "maximum": 2000,
                        "minimum": 0,
                        "description": "Trading fee on this leg in bps of notional."
                      },
                      "market": {
                        "type": "string",
                        "maxLength": 500,
                        "minLength": 3,
                        "description": "Polymarket slug, market URL or conditionId, or a Kalshi ticker or URL. Fills platform, title, resolution rules, best-ask prices, per-leg fees and end date from the live market; any field you also pass overrides it. Without market, platform, title, resolutionRules, yesPrice and noPrice are required."
                      },
                      "endDate": {
                        "type": "string",
                        "maxLength": 40,
                        "minLength": 10,
                        "description": "ISO date this market resolves; sets days to resolution and the annualized return."
                      },
                      "noPrice": {
                        "type": "number",
                        "maximum": 1,
                        "minimum": 0,
                        "description": "Best ask for one No share in USD (0-1)."
                      },
                      "noFeeBps": {
                        "type": "number",
                        "maximum": 2000,
                        "minimum": 0,
                        "description": "Fee in bps of notional for buying No here; overrides feeBps for that leg."
                      },
                      "platform": {
                        "type": "string",
                        "maxLength": 100,
                        "minLength": 1,
                        "description": "e.g. Polymarket, Kalshi"
                      },
                      "yesPrice": {
                        "type": "number",
                        "maximum": 1,
                        "minimum": 0,
                        "description": "Best ask for one Yes share in USD (0-1)."
                      },
                      "yesFeeBps": {
                        "type": "number",
                        "maximum": 2000,
                        "minimum": 0,
                        "description": "Fee in bps of notional for buying Yes here; overrides feeBps for that leg."
                      },
                      "description": {
                        "type": "string",
                        "maxLength": 5000
                      },
                      "resolutionRules": {
                        "type": "string",
                        "maxLength": 20000,
                        "minLength": 1,
                        "description": "Exact resolution rules and fine print."
                      }
                    },
                    "additionalProperties": false
                  },
                  "marketB": {
                    "type": "object",
                    "properties": {
                      "title": {
                        "type": "string",
                        "maxLength": 500,
                        "minLength": 1
                      },
                      "feeBps": {
                        "type": "number",
                        "maximum": 2000,
                        "minimum": 0,
                        "description": "Trading fee on this leg in bps of notional."
                      },
                      "market": {
                        "type": "string",
                        "maxLength": 500,
                        "minLength": 3,
                        "description": "Polymarket slug, market URL or conditionId, or a Kalshi ticker or URL. Fills platform, title, resolution rules, best-ask prices, per-leg fees and end date from the live market; any field you also pass overrides it. Without market, platform, title, resolutionRules, yesPrice and noPrice are required."
                      },
                      "endDate": {
                        "type": "string",
                        "maxLength": 40,
                        "minLength": 10,
                        "description": "ISO date this market resolves; sets days to resolution and the annualized return."
                      },
                      "noPrice": {
                        "type": "number",
                        "maximum": 1,
                        "minimum": 0,
                        "description": "Best ask for one No share in USD (0-1)."
                      },
                      "noFeeBps": {
                        "type": "number",
                        "maximum": 2000,
                        "minimum": 0,
                        "description": "Fee in bps of notional for buying No here; overrides feeBps for that leg."
                      },
                      "platform": {
                        "type": "string",
                        "maxLength": 100,
                        "minLength": 1,
                        "description": "e.g. Polymarket, Kalshi"
                      },
                      "yesPrice": {
                        "type": "number",
                        "maximum": 1,
                        "minimum": 0,
                        "description": "Best ask for one Yes share in USD (0-1)."
                      },
                      "yesFeeBps": {
                        "type": "number",
                        "maximum": 2000,
                        "minimum": 0,
                        "description": "Fee in bps of notional for buying Yes here; overrides feeBps for that leg."
                      },
                      "description": {
                        "type": "string",
                        "maxLength": 5000
                      },
                      "resolutionRules": {
                        "type": "string",
                        "maxLength": 20000,
                        "minLength": 1,
                        "description": "Exact resolution rules and fine print."
                      }
                    },
                    "additionalProperties": false
                  },
                  "minEdgeBps": {
                    "type": "number",
                    "maximum": 10000,
                    "minimum": 0,
                    "description": "Default 100 (1%)."
                  },
                  "bankrollUsd": {
                    "type": "number",
                    "maximum": 1000000000000,
                    "minimum": 0,
                    "description": "Used to convert the Kelly fraction to USD."
                  },
                  "minAnnualizedReturnPct": {
                    "type": "number",
                    "maximum": 10000,
                    "minimum": 0,
                    "description": "Minimum annualized risk-adjusted return, in percent, for verdict.action ARBITRAGE_SAFE (default 5). Below it the action is LOW_ANNUALIZED_YIELD. Applied only when both end dates are known."
                  }
                },
                "additionalProperties": false
              },
              "type": {
                "type": "string",
                "const": "http"
              },
              "method": {
                "enum": [
                  "POST",
                  "PUT",
                  "PATCH"
                ],
                "type": "string"
              },
              "headers": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              },
              "bodyType": {
                "enum": [
                  "json",
                  "form-data",
                  "text"
                ],
                "type": "string"
              },
              "queryParams": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              }
            },
            "additionalProperties": false
          },
          "output": {
            "type": "object",
            "required": [
              "type"
            ],
            "properties": {
              "type": {
                "type": "string"
              },
              "example": {
                "type": "object"
              }
            }
          }
        }
      }
    }
  },
  "x402Version": 2
}

Accepts

The payment requirements as published to the catalog. Read the live 402 before paying — a price here is a claim, not a quote.

0.75USDC≈ $0.75 USD
on Base · exact scheme

Pay 0.75 USDC on Base to 0x34C2…86522. The signed payment is good for 5 minutes.

USD Coin contract
0x8335…02913
Payment window
5 minutes
As published
750000 smallest units
The catalog’s raw entry
[
  {
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "extra": {
      "name": "USD Coin",
      "version": "2",
      "assetTransferMethod": "eip3009"
    },
    "payTo": "0x34C2D4B19b2D61Da1eC98A3463B8E9994FB86522",
    "amount": "750000",
    "scheme": "exact",
    "network": "eip155:8453",
    "maxTimeoutSeconds": 300
  }
]

Extensions

{
  "bazaar": {
    "info": {
      "input": {
        "body": {
          "marketA": {
            "title": "Will Candidate X win the 2028 election?",
            "feeBps": 0,
            "noPrice": 0.49,
            "platform": "Polymarket",
            "yesPrice": 0.52,
            "resolutionRules": "Resolves Yes if the Associated Press, Fox News, and NBC all call the race for Candidate X by Jan 20, 2029 12:00 PM ET."
          },
          "marketB": {
            "title": "Who will win the 2028 presidential election? Candidate X",
            "feeBps": 70,
            "noPrice": 0.45,
            "platform": "Kalshi",
            "yesPrice": 0.55,
            "resolutionRules": "Resolves Yes if Candidate X is inaugurated as President on Jan 20, 2029."
          },
          "minEdgeBps": 100,
          "bankrollUsd": 10000
        },
        "type": "http",
        "method": "POST",
        "bodyType": "json"
      },
      "output": {
        "type": "json"
      }
    },
    "schema": {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "input"
      ],
      "properties": {
        "input": {
          "type": "object",
          "required": [
            "type",
            "method",
            "bodyType",
            "body"
          ],
          "properties": {
            "body": {
              "type": "object"
            },
            "type": {
              "type": "string",
              "const": "http"
            },
            "method": {
              "enum": [
                "POST",
                "PUT",
                "PATCH"
              ],
              "type": "string"
            },
            "headers": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            },
            "bodyType": {
              "enum": [
                "json",
                "form-data",
                "text"
              ],
              "type": "string"
            },
            "queryParams": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          },
          "additionalProperties": false
        },
        "output": {
          "type": "object",
          "required": [
            "type"
          ],
          "properties": {
            "type": {
              "type": "string"
            },
            "example": {
              "type": "object"
            }
          }
        }
      }
    }
  }
}

Provenance

Seen in the source catalog
2026-11-04 20:23Z
Last indexed by Roundhouse
2026-11-12 02:45Z
Last enriched (probe, favicon, geo)
2026-11-06 04:45Z
x402 version
2
Max timeout
300s
Liveness probe
HTTP 402
Report

Hand this page to an agent

Copy the prompt and paste it into Claude, an MCP client or your own agent — it will vet this service and call it over the free read API. No key, no account.

GET api.roundhouseai.io/v0/endpoints

No per-endpoint history for this service yet, so this is payments indexed to its PROVIDER's wallet over 30 days. Verified volume counts only settlements with an on-chain EIP-3009 marker.

Open skill.md
Show the prompt
Using Roundhouse, look up the x402 service agents.writerslogic.com and tell me whether it is
worth paying: what a call costs, whether the endpoint answered when last probed, and what
its payment record actually shows.

curl -s 'https://api.roundhouseai.io/v0/endpoints?q=agents.writerslogic.com'
curl -s 'https://api.roundhouseai.io/v0/merchants/<the payTo wallet returned above>'

Then call it: read the price from the live 402 at https://agents.writerslogic.com/api/v1/arbitrage-lawyer, never from
a cached figure, and pay with an x402 client.

The /v0 API needs an API key (`authorization: Bearer rh_live_…`) on everything except
/v0/unified* and /v0/endpoints. Either pay over x402 (mint a personal key for $0.01 at
GET https://api.roundhouseai.io/v0/test/x402), or ask me for an organization key, which I create at
https://roundhouseai.io/dashboard/connections. If you have neither, ask before going further.

If you do not have Roundhouse tools or skills installed, read
https://roundhouseai.io/skill.md first — it is the whole procedure.