Skip to content
Mekler AIGet started

Mekler AI / Check citation overlap with your AI assistant

Check citation overlap with your AI assistant

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

This is the manual setup reference. Give your AI a complete starter task instead →

Prepare a local trial client.

Run these commands in the terminal your assistant uses. The client is public source; review it before running. It creates an unfunded Base wallet only when you explicitly request one. Keep the private key file locally with owner-only permissions.

python3 -m venv .mekler-venv
.mekler-venv/bin/python -m pip install "x402==2.24.0" "eth-account==0.13.7" "signinwithethereum==5.0.1" "abnf==2.8.3"
curl -fSLo mekler-trial.py https://api.mekler.ai/clients/trial.py

Supply the input.

Save this JSON as request.json. Supply the claim, citation URLs and any article HTML yourself. No URLs are fetched; overlap does not establish truth or source independence.

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

Create the unfunded trial wallet only once. If mekler-trial-wallet.key already exists, reuse it and run only the execution command below. Keep the same wallet across these walkthroughs.

Run a trial and keep its identity.

.mekler-venv/bin/python mekler-trial.py --new-wallet mekler-trial-wallet.key
.mekler-venv/bin/python mekler-trial.py --key-file mekler-trial-wallet.key --operation checkSources --input request.json --request-id mekler-example-001

Use a new request ID for each new input; use the same ID and identical input to recover or retry. New wallets do not create a renewable entitlement: shared-wallet and paid-history rules apply. Never fund this trial wallet just to inspect a sample.

Understand the result.

The supplied HTML creates a citation-link candidate from a to b. independence remains unknown. A candidate is a link to inspect, not proof of claim truth or independence.

Expected result for this prepared input
{
  "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."
  ]
}

Trial exhausted or unavailable?

The client returns the service error and stops. It never removes trial headers or falls back to payment. To use a paid service, inspect a fresh quote with a compatible payment client and explicitly authorize its budget. An unavailable offer does not mean you should create a replacement wallet.

Full service details, scope and price →