AutoUncle Data Services is in beta. The API, MCP tools and agent skill may change often, including breaking changes, until version 1.0. Read the changelog before you upgrade an integration.
Show notes & attributions
Every result carries notes (disclaimers and limitations) and attributions (the data sources that contributed). This guide shows how to display and store them correctly. Notes & data sources is the field-by-field reference.
The rules in short
- Keep both arrays with the result wherever you store or forward it. They are part of the result, not metadata you can drop.
- Show notes next to the price they apply to, at least their
message. - Show
attribution_textwhenever it is present, wherever you show or redistribute the data it covers. Do not shorten it. - Match on
codeandsource_id, never on message text. - Do not assume "no obligations" when
notice_statusispending_review.
Both arrays are always present and never truncated. An empty array is meaningful: no notes apply beyond the documentation, or no source data is contained (refusals, failures, account and metadata results).
Notes
A note has a code, a category, a display-ready message, pointers into the result and the source_ids that caused it:
{
"code": "estimate_not_offer",
"category": "disclaimer",
"message": "This is a statistical estimate for the stated price basis. It is not an offer, an appraisal or a guaranteed transaction price.",
"pointers": ["/valuation"],
"source_ids": []
}
category |
Meaning | How to show it |
|---|---|---|
disclaimer |
How the result may be relied on | Near the price, always |
limitation |
Where the result does not apply or is weaker | Near the part it points to |
legal_notice |
Wording a data source requires you to show | Exactly as given, wherever the data appears |
Notes you will see on valuations today:
code |
When |
|---|---|
estimate_not_offer |
Every valued result |
market_specific |
Every valued result: it applies only to its market and currency |
synthetic_result |
Test-mode results. Never show a result with this note as a market value |
automated_interpretation |
Attributes were interpreted from text or photos |
selling_time_is_forecast |
A selling-time forecast: what the forecast assumes and that it is not a guarantee |
market_figures_describe_listings |
A market & demand result: the figures are aggregates over tracked listings, left the market is not always a sale, and small numbers are withheld |
notices_reconstructed |
An older stored result whose notices were rebuilt from its recorded provenance |
New codes can appear. Show the message of any note you do not recognize; that keeps you correct without a code change.
pointers are JSON Pointers into the same result, such as /valuation or /price_ratings. An empty array means the note applies to the whole result. Use them to place the note next to the right part of your UI.
Attributions
An attribution lists one source that actually contributed, and where:
{
"source_id": "autouncle_vehicle_catalogue",
"name": "AutoUncle vehicle catalogue",
"url": "https://data-services.autouncle.com/docs/catalogue",
"party": "first_party",
"role": "vehicle_catalogue",
"license": { "id": "autouncle_data_services_terms", "name": "AutoUncle Data Services terms", "url": "https://data-services.autouncle.com/legal/terms" },
"attribution_text": null,
"notice_status": "pending_review",
"notice_version": "autouncle_vehicle_catalogue@1",
"pointers": ["/vehicle/identity/brand", "/vehicle/identity/model", "/vehicle/identity/body"]
}
- Only sources that contributed to this result are listed. A valued test result cites the catalogue but never the valuation model, because no model contributed.
pointersshows which parts of the result the source contributed to.attribution_text, when not null, is wording you must display wherever you show or redistribute that data.notice_status: "pending_review"means the licence and attribution obligations have not been verified yet. Today every source ispending_review. Do not conclude that no obligations apply; keep the attribution with the data.licensemay be null when no licence reference has been published yet.
A display pattern
Show the price block, then its notes, then a compact "Data sources" line:
// Renders the notes and data sources of a valuation result as plain text lines.
export function noticeLines(result) {
const lines = [];
for (const note of result.notes) {
lines.push(note.message);
}
const sources = result.attributions.map((source) => source.attribution_text ?? source.name);
if (sources.length > 0) {
lines.push(`Data sources: ${[...new Set(sources)].join("; ")}`);
}
return lines;
}
This shows every note's message, uses the required attribution_text when present and falls back to the source name otherwise. Escape the text for your output format (HTML, PDF) as you would any API data.
In the console, the playground and request log show the same notes and data sources under each result.
Storing and forwarding results
- Store
notesandattributionsin the same record as the price. A stored read-back (GET /v1/valuations/{id}) and an idempotent replay return the notices that applied when the valuation was made, withnotice_versionidentifying the registry revision, even if a source's notice changes later. - Forwarding a result to a customer or another system: include both arrays, or at least every note message and every
attribution_text. - Agents must keep them too. The MCP server instructs agents to keep notes and attributions with any result they show and never drop attributions to save space.
Pitfalls
- Dropping arrays to save space in a summary, a cache or an LLM context window.
- Hard-coding today's notes. New codes and sources will appear; render the
message. - Showing a price without its disclaimer.
estimate_not_offerexists so that users do not read an estimate as an offer.
Next steps
- Notes & data sources.
- Precision & intervals for presenting the price itself.
- Free text and photos, which adds the
automated_interpretationnote.