ObjectCanon

A different way to give agents answers

Don’t let the model decide what’s true.

When sources disagree about a physical object, an LLM can quietly turn conflicting claims into one confident answer.

ObjectCanon doesn’t. It preserves the claims, resolves them with explicit rules, and gives the agent the answer and the receipt.

https://objectcanon.replit.app/mcp

No signup. No API key. Read-only.

oc_tele_1968.attributes.finish

Resolved

Blonde, original

Owner, low confidence

Also claimed

Blonde, refinished

Third party, medium confidence, 2022-11-19

Resolved against stronger evidence. The owner outranks the third party under the policy, so the owner wins. The record says so plainly, and keeps the other claim: resolved_against_stronger_evidence: true

The problem

The problem isn’t finding information.

It’s what happens when the information disagrees.

Ask an agent about a used guitar and it might find a seller calling it a 1968 Telecaster, an owner saying the finish is original, a dealer saying it was refinished, a serial number suggesting one date, and a component date suggesting another.

An LLM can reason across all of that. It can also turn it into: “This is a 1968 Fender Telecaster with its original blonde finish.”

Now the disagreement is gone. So are the uncertainty and provenance.

ObjectCanon takes a different approach.

Core concept

Claims, not facts.

ObjectCanon doesn’t pretend to know whether a 1968 Telecaster’s finish is original.

It records who says it is. It records who says it isn’t. It keeps the source, confidence, evidence, and timing behind each claim.

Then it applies an explicit rule to determine which claim currently wins. Nothing gets silently discarded.

The agent gets the answer and the receipt.

One object. Two claims.

The 1968 Telecaster, straight from the server.

"finish": {
  "value": "Blonde, original",
  "source_kind": "owner",
  "confidence": "low",
  "evidence": "contested",
  "contested_by": [{
    "value": "Blonde, refinished",
    "source_kind": "third_party",
    "confidence": "medium"
  }],
  "resolved_against_stronger_evidence": true
}
Under the current default policy, the owner’s claim wins because source precedence is evaluated before confidence. The losing claim is still returned.
"neckOriginal": {
  "value": true,
  "evidence": "contested",
  "abstentions": [{
    "source_kind": "ai",
    "confidence": "low",
    "asserted_at": "2026-09-01",
    "reason": "insufficient_evidence"
  }]
}
When a source doesn’t know, that is recorded too. Here an AI source declined to say whether the neck is original.

If stronger evidence lost because of the policy, ObjectCanon says so. An agent can use the default resolution or inspect the claims and apply a policy appropriate to its task.

How it works

Preserve the disagreement. Make resolution explicit.

PHYSICAL OBJECT→ATTRIBUTES→CLAIMS→SOURCES + EVIDENCE→EXPLICIT RESOLUTION POLICY→CURRENT ANSWER + RECEIPT

ObjectCanon separates evidence from resolution. Claims describe what different sources say about an object. Resolution rules determine which claim becomes the current answer.

The LLM doesn’t decide what wins. Given the same claims and the same policy, ObjectCanon returns the same result.

That’s the deterministic part.

corroborated

More than one source agrees.

contested

Sources disagree. Losing claims appear in contested_by.

sole_claim

One source asserted a value.

not_asserted

No source asserted a value.

Why it matters

Agents increasingly have to act on messy reality.

This problem isn’t unique to guitars. A house can have conflicting square-footage records. A car can have conflicting mileage or service records. A watch can contain replacement parts. A painting can have disputed attribution. A piece of furniture can have several possible dates. A collectible can have competing provenance claims.

The difficult question isn’t always, “What information can the agent find?” Sometimes it’s, “What should the agent do when reliable sources disagree?”

Don’t hide the disagreement inside the model. Keep the claims. Keep the evidence. Make the resolution policy explicit.

Canonical records

Canonical doesn’t mean infallible.

ObjectCanon isn’t claiming to possess ground truth about every physical object.

The canonical part is the record: what is known, what is claimed, who claimed it, what evidence exists, what conflicts, and why the current answer won.

New evidence can change the resolved answer without erasing the history that produced the previous one.

The record can be canonical without pretending the answer is absolute truth.

Resolution policy

The policy is explicit — and debatable.

The current experimental default evaluates source precedence first, then confidence, then recency:

owner > appraiser > third_party > ai   →   confidence   →   recency

This is an experimental default, not a universal hierarchy of trust. An insurer, marketplace, collector, estate administrator, researcher, or purchasing agent might reasonably rank the same evidence differently.

That’s why ObjectCanon returns the underlying claims with the resolved answer. The evidence can remain the same even when the resolution policy changes.

Think the policy is wrong? Good. The claims are still there.

MCP / try it

Ask it yourself.

ObjectCanon is live as a remote MCP server. No signup. No API key. Read-only.

https://objectcanon.replit.app/mcp
  • typesSee the object types and attribute vocabulary currently in use.
  • lookupFind objects by type or by values in any claim, including claims that lost.
  • resolveReturn the current resolved attributes, or request every raw claim with view: "claims".

Clients that take a JSON config:

{
  "mcpServers": {
    "objectcanon": { "url": "https://objectcanon.replit.app/mcp" }
  }
}

Pick an object to resolve it, or look up by attribute. Try "refinished" to see a match on a losing claim.

Dataset

Tiny dataset. Intentionally.

ObjectCanon is an experiment in the shape of the answer, not the size of the catalog.

The current server contains 53 public records: three hand-built objects — a guitar, a watch, and a table — plus 50 clearly labeled synthetic guitars designed to exercise clean, contested, corroborated, abstained, sparse, recency-tiebreak, and confidence-tiebreak cases.

The point right now isn’t coverage. It’s to test whether this is a useful way for agents to deal with conflicting information about physical things.

Scope

What ObjectCanon is — and isn’t.

It is

  • A machine-readable record of claims about physical objects.
  • A way to preserve conflicting evidence instead of silently collapsing it.
  • An explicit, deterministic way to produce a current answer.
  • An auditable answer that shows why it won.
  • A public experiment accessible through MCP.

It isn’t

  • An authentication service.
  • An appraisal service.
  • A guarantee that a claim is true.
  • An LLM deciding which story sounds plausible.
  • A giant object database.
  • A claim that ObjectCanon has solved universal physical-object identity.

The bigger question

The web gave pages URLs.

It gave machines a reliable way to refer to digital resources. Physical objects never got the equivalent.

An agent trying to understand a guitar, watch, chair, camera, tool, car, or artwork usually has to reconstruct its identity from whatever descriptions happen to be available. Those descriptions are messy. They change. They conflict. Increasingly, machines are expected to act on them.

What would it look like if physical objects had records that agents could read consistently, with the evidence attached?

That’s the question ObjectCanon is testing.

Try ObjectCanon

Try to break it.

ObjectCanon is small, live, and deliberately opinionated. Point an MCP client at it. Query the records. Inspect the conflicts. Challenge the resolution policy.

If the model is wrong, that’s useful to know.

https://objectcanon.replit.app/mcp

FAQ

What is ObjectCanon?

ObjectCanon is a read-only service that gives agents structured records about physical objects. It preserves competing claims and returns a deterministic current answer with the evidence used to produce it.

Why does this exist?

Sources about physical objects often disagree, and an LLM can silently reconcile those disagreements into a confident answer. ObjectCanon tests an architecture where disagreement is preserved and resolution is explicit.

Does ObjectCanon decide what’s true?

No. It records claims from different sources and applies an explicit resolution policy. The winning claim is the current resolved answer, not a declaration of absolute truth.

Why not just ask an LLM?

An LLM can interpret ambiguous evidence, but its answer may vary and it may hide uncertainty. ObjectCanon makes the claims and resolution rule explicit. The same inputs and policy produce the same result.

Why does an owner currently outrank an appraiser?

Because that is the current experimental default policy, not because owners are inherently more trustworthy. Different applications may need different source hierarchies. ObjectCanon returns the underlying claims so an agent can use another policy.

Is this authentication?

No. ObjectCanon records and resolves claims. It does not certify that an object is authentic.

Is this an appraisal service?

No. Valuation can be represented as a claim, but ObjectCanon does not itself appraise objects.

Is this an object identifier?

Object identity is part of the broader problem ObjectCanon is exploring, but the current experiment is more specific: how agents should represent and resolve conflicting claims about physical things.

Why MCP?

The experiment is about giving agents a predictable interface for physical-object information. MCP makes the service directly accessible to compatible agents and developer tools.

How big is the database?

There are 53 public records: three hand-built objects and 50 synthetic guitars. The dataset is intentionally tiny because this experiment concerns the data model and resolution behavior, not catalog coverage.