Skip to content
Mekler AIGet started

Mekler AI / Citation Overlap Checker

Service details

Citation Overlap Checker

Find overlap in supplied citations and article HTML

0.05 USDC per accepted request

3 free results per wallet. Signature required; no funding needed. Shared wallets share the allowance.

First time? Give your AI a prepared trial task →

Know its boundaries.

  • Retrieving URLs or discovering unprovided pages
  • Judging claim truth or whether a link supports the claim
  • Establishing source independence or proving copying/dependence
  • Discovering semantic paraphrases or unlinked common origins
  • Executing HTML, JavaScript or model inference

Data handling

Inputs/results are processed in memory and not retained or logged. Bounded operational telemetry and payment records are retained; no caller content is sent to a model or fetched from URLs.

Input example and exact contract
{
  "claim": "Reported benefit",
  "citations": [
    {
      "id": "a",
      "url": "https://a.test",
      "html": "<a href=\"https://b.test\">Source</a>"
    },
    {
      "id": "b",
      "url": "https://b.test"
    }
  ]
}

API reference: input, output and error schemas →

Example output
{
  "service": "citation-overlap-checker",
  "schema_version": "1",
  "shared_origin_groups": [],
  "supplied_lineage_links": [],
  "shared_link_candidates": [],
  "citation_link_candidates": [
    {
      "from_id": "a",
      "to_id": "b",
      "locations": [
        {
          "target_url": "https://b.test/",
          "line": 1,
          "column": 0,
          "anchor_text": "Source"
        }
      ],
      "status": "citation_link_candidate"
    }
  ],
  "unresolved_citation_ids": [
    "a",
    "b"
  ],
  "independence": "unknown",
  "coverage": {
    "citation_count": 2,
    "html_document_count": 1
  },
  "limitations": [
    "Supplied lineage is not independently verified.",
    "Links may be navigation or unrelated to the claim; candidates are not verified dependencies.",
    "No URLs are fetched. Missing links do not establish independence.",
    "Claim truth and semantic relevance are not assessed."
  ]
}
Calling, result interpretation and recovery

Calling

Content type

application/json

Endpoint

POST /v1/research/citations/check-source-overlap with claim:string and citations:array.

Citation

Each citation requires a unique id and HTTPS url. html is optional supplied article text. derives_from names one citation id in this same bundle and must be paired with evidence_locator.

Prerequisite

To find shared links, supply article HTML you already hold. URLs alone allow duplicate grouping; declared lineage adds groups but is not independently verified. claim is a context label, not a semantic query.

Interpret the result

Shared origin groups

Groups based on identical normalized URL or caller-declared lineage; not proven common editorial origin.

Supplied lineage links

Unverified parent relationships supplied by the caller.

Shared link candidates

Common hyperlink targets with documents and HTML locations. May be navigation or unrelated to the claim.

Citation link candidates

One supplied HTML document links to another citation. A candidate for inspection, not proof of dependence.

Unresolved citation ids

Citations whose normalized URL or supplied ancestry did not put them in a multi-citation source group; this is independent of the link-candidate arrays.

Coverage

Counts of citations and nonempty supplied HTML documents, not coverage of the web.

Independence

Always unknown. Empty findings do not mean independent sources.

Locations

One-based HTML line and zero-based column in the submitted HTML, with target_url and untrusted anchor_text. These are not necessarily positions on the current live page.

Limits

Request bytes

262144

Claim characters

4000

Citations min

2

Citations max

10

Html bytes per citation

131072

Usable https anchors per citation

100

Result bytes

65536

Semantics
  • Unique local citation IDs; declared parent must exist; cycles rejected.

  • No remote requests. Prefer article-body HTML to navigation-heavy pages.

  • Input and output bounds are validated before payment.

  • claim and evidence_locator must contain non-whitespace text. URL credentials, whitespace and malformed ports are rejected.

  • URL normalization lowercases hosts, removes fragments/default HTTPS port and fills an empty path with /. Query strings remain significant.

  • Relative hrefs resolve against the supplied citation URL. Fragment-only/self links, non-HTTPS targets and links inside script/style/template are ignored.

  • Only completed anchor tags are recorded; malformed HTML can hide links. Anchor text is capped at 256 characters and is untrusted content.

Payment and recovery

Price

0.05 native USDC per accepted request

Network

Solana mainnet or Base mainnet

Protocol

x402 v2 exact

Quote

Send the valid intended JSON body without PAYMENT-SIGNATURE. The 402 PAYMENT-REQUIRED header is base64 JSON containing accepted payment requirements and discovery metadata. It is not a service result.

Authorization

Choose one accepts entry with a standard x402 v2 client. Check native USDC, network, recipient, amount and intended input before signing. Solana uses an SVM transaction; Base uses an EOA EIP-3009 authorization (USD Coin version 2). Send the proof with identical JSON input. No API key, token approval, bridge or Solana wallet is needed for Base. Never automatically fall back to another network.

Retry

On 202, timeout or an ambiguous failure, retry the identical body and original proof. Do not sign or pay again. Retry-After is 5 seconds for 202.

Finality

A finalized response independently checks chain success and the exact transfer. On Base, a 200 marked provisional arrives once the exact transfer is in a canonical block; finality is then confirmed independently and later retries return finalized. A 202 remains pending. After 15 minutes of uncertainty, a provisional 200 may carry X-Mekler-Purchase-Id without PAYMENT-RESPONSE; it does not prove settlement. Retry the identical proof and input, including after quote expiry, rather than paying again.

Expiry

Ongoing service under recurring monthly authority. Budget warnings do not stop service. Short-lived quotes and recovery retention still expire.

Networks
  • solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp

  • eip155:8453

Assets
Solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp

EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v

Eip155:8453

0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913

Fees

CDP sponsors the payment transaction gas on both networks. The service price is the same on either network; wallet funding or exchange fees are separate.

Request binding

The server authenticates the complete quote and input and atomically binds the first accepted authorization to them. Standard Base EIP-3009 signs the money terms and nonce, not HTTP content. Keep signatures private; do not reuse an authorization for another quote, operation or body.