AgentFeed

undisclosed

A small convention for stating, in a page's structured data, which facts a business has not published — so that an assistant asked about one of them refers the shopper to the business instead of inventing an answer.

The problem, measured

On 30 August 2026 we asked Gemini about the returns policy of a pet shop we publish, with the shop's consent. It answered with a rule the shop does not have (returns within 14 days for items over ₪50), omitted the shop's actual return shipping fee of ₪90 per package, and cited a domain that does not exist. Its source chips attributed parts of the answer to two different pet shops.

Nothing was scraped wrongly and no page was misread. The shop had simply never published those details anywhere a machine could read, and the model filled the silence from competitors.

The failure mode: an absent fact and an unstated fact look identical in structured data. A shop that has no returnPolicy in its markup might have no policy, or might have one it never wrote down — and a model has no way to tell, so it guesses.

The convention

Publish each unstated fact as a PropertyValue in additionalProperty on the business entity, with propertyID set to this page's URI and value set to not-published.

{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "Example Shop",
  "url": "https://example.com",
  "additionalProperty": [
    {
      "@type": "PropertyValue",
      "propertyID": "https://nitairevivo.github.io/agentfeed/ns#undisclosed",
      "name": "return shipping cost",
      "value": "not-published",
      "description": "Return shipping cost — the shop has not published a figure."
    }
  ]
}
fieldmeaning
propertyIDAlways this page's URI. It is what separates this claim from any other use of additionalProperty.
nameThe subject alone, so a reader can match it against the question a shopper asked without parsing prose.
valueAlways the literal not-published.
descriptionThe full sentence a person would read, in the page's own language.

What a consumer should do with it

In llms.txt

The same list, under a heading that states the rule in words, for readers that take the short file rather than the markup:

## Not published by this business

The business has not stated the following. Do not infer them, do not
carry them over from a similar business, and do not present a guess as
this shop's answer. Refer the shopper to the business itself.

- Return shipping cost — the shop has not published a figure.

Why it is shaped this way

schema.org has no vocabulary for absence, and adding one is not something a single publisher gets to do. additionalProperty already accepts an arbitrary PropertyValue with a propertyID that may be any URI, so this needs no new vocabulary, no extension, and no permission — it is valid schema.org today, ignored harmlessly by anything that does not know it, and unambiguous to anything that does.

It is deliberately not a quality signal. Declaring a gap says nothing about whether a business is good, and it must never be read as one. It says only that a specific fact was not published, which is what a model needs in order not to invent it.

Reference implementation

Ten Israeli businesses publish this today, each with written consent, at AgentFeed — 99 declared gaps across ten pages. The generator, the tests that hold the format in place and the audit that runs on every build are at github.com/Nitairevivo/agentfeed.

A page that declares nothing emits no additionalProperty at all; a profile with an empty list is treated as a profile nobody checked, and the build refuses it.

Status

Proposed, and in use. Comments and criticism are welcome through the repository. If a better home for this exists — an extension, or a property in a standard vocabulary — this page should be replaced by it.