Skip to content

oddly

by myoddly.com · remote · no sign-in to list tools · v1.1.0 · published by com.myoddly

The world, on the record. AI infrastructure built on the observed web.

Changes · 4

6 tools: 4 change things and 2 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http oddly-corpus https://myoddly.com/api/public/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The server marks "store_audit" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "store_audit" says "store": a word for a change.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

6 tools

Changes things 4Claude Code: ask
  • record_answerAnswer one question from oddly's record: the newest observed value of one attribute of one subject, with its figure, both clocks, its source, its receipt and its scope.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Answer one question from oddly's record: the newest observed value of one attribute of one subject, with its figure, both clocks, its source, its receipt and its scope. The figure is what the source published when oddly looked, not an estimate, a forecast or advice. Rate: meter data.answer, US$0.001 per answer, first 100 per month free. An unanswered question (a subject or attribute the record has not observed) is never metered.

    Annotations the server declares

    • title: One question answered from the record
    • readOnlyHint: true
    • openWorldHint: false
  • record_subject_historyOne subject's change history and current state from oddly's record, with both clocks on every row: observed_at (when the source says it was true) and fetched_at (when oddly looked)…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    One subject's change history and current state from oddly's record, with both clocks on every row: observed_at (when the source says it was true) and fetched_at (when oddly looked), and the receipt hash of each row so any value can be checked with record_verify_receipt. Rate: meter data.history, US$0, attribution required (cite oddly and the subject). Returns an honest empty answer for a subject the record has never observed, which is never metered.

    Annotations the server declares

    • title: A subject's history on the record
    • readOnlyHint: true
    • openWorldHint: false
  • record_verify_receiptRecompute and check one receipt end to end: the row's receipt hash recomputed from its own sealed document, the link to the row before it, the day root its day folds into, and that…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Recompute and check one receipt end to end: the row's receipt hash recomputed from its own sealed document, the link to the row before it, the day root its day folds into, and that root's anchor state (confirmed with a block height, or pending). Every check is named in the verdict, and a check that could not run says so rather than passing. Rate: never metered (verification is on the price book's never_metered list).

    Annotations the server declares

    • title: Verify a receipt against the record
    • readOnlyHint: true
    • openWorldHint: false
  • store_auditRun oddly's free storefront audit against a public ecommerce domain and return the findings: detected platform, the checks that failed, and how the store's catalogue compares to ob…1 finding

    Why it is in this group

    • The name "store_audit" says "store": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "store_audit" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "store_audit" says "store": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Run oddly's free storefront audit against a public ecommerce domain and return the findings: detected platform, the checks that failed, and how the store's catalogue compares to observed category norms where the corpus can say. Reads the store's own public pages only, obeys robots.txt, and is rate limited. Use the bare domain (example.com). Never pass an internal host or an IP address.

    Annotations the server declares

    • title: Audit a public storefront
    • readOnlyHint: true
    • openWorldHint: true
Only reads 2Claude Code: allow
  • benchmark_categoriesList the product categories the oddly corpus currently covers, with how many observations and metrics back each one.No findings

    Why it is in this group

    • The description's first verb is "list": a word for reading.
    Description, as the server wrote it
    List the product categories the oddly corpus currently covers, with how many observations and metrics back each one. Call this FIRST to discover valid category paths before calling benchmark_lookup, rather than guessing a path.

    Annotations the server declares

    • title: List covered categories
    • readOnlyHint: true
    • openWorldHint: false
  • benchmark_lookupObserved price and assortment benchmarks for a product category: the median and the p25-p75 band across real public storefront listings, with the sample size, the currency, and the…No findings

    Why it is in this group

    • The name "benchmark_lookup" says "lookup": a word for reading.
    Description, as the server wrote it
    Observed price and assortment benchmarks for a product category: the median and the p25-p75 band across real public storefront listings, with the sample size, the currency, and the exact scope of each figure. Figures are observed market reference, not targets or advice. Returns an honest empty answer when a category has too little data to serve; it never estimates or fills a gap. This corpus does NOT hold conversion rates, revenue, or AOV, so do not ask it for those.

    Annotations the server declares

    • title: Look up observed category benchmarks
    • readOnlyHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.1.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http oddly-corpus https://myoddly.com/api/public/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__oddly-corpus__benchmark_categories",
      "mcp__oddly-corpus__benchmark_lookup"
    ],
    "ask": [
      "mcp__oddly-corpus__record_subject_history",
      "mcp__oddly-corpus__record_verify_receipt",
      "mcp__oddly-corpus__record_answer",
      "mcp__oddly-corpus__store_audit"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as oddly-corpus. Review it before you use it.