[{"data":1,"prerenderedAt":586},["ShallowReactive",2],{"navigation_docs_en":3,"dtpr-schemas-index":287,"-en-concepts-content-hash":295,"-en-concepts-content-hash-surround":581},[4,22,26,30,102,152,174,196,226,278,283],{"title":5,"path":6,"stem":7,"children":8},"Getting started","/en/getting-started","en/1.getting-started/0.index",[9,10,14,18],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"MCP quickstart","/en/getting-started/mcp-quickstart","en/1.getting-started/1.mcp-quickstart",{"title":15,"path":16,"stem":17},"REST quickstart","/en/getting-started/rest-quickstart","en/1.getting-started/2.rest-quickstart",{"title":19,"path":20,"stem":21},"UI quickstart","/en/getting-started/ui-quickstart","en/1.getting-started/3.ui-quickstart",{"title":23,"path":24,"stem":25},"Attribution","/en/attribution","en/10.attribution",{"title":27,"path":28,"stem":29},"Cite DTPR for AI","/en/cite","en/11.cite",{"title":31,"path":32,"stem":33,"children":34},"MCP server","/en/mcp","en/2.mcp/0.index",[35,36,40,44,48,98],{"title":31,"path":32,"stem":33},{"title":37,"path":38,"stem":39},"Connecting","/en/mcp/connection","en/2.mcp/1.connection",{"title":41,"path":42,"stem":43},"Envelope","/en/mcp/envelope","en/2.mcp/2.envelope",{"title":45,"path":46,"stem":47},"Resources","/en/mcp/resources","en/2.mcp/3.resources",{"title":49,"path":50,"stem":51,"children":52},"Tools","/en/mcp/tools","en/2.mcp/4.tools/0.index",[53,54,58,62,66,70,74,78,82,86,90,94],{"title":49,"path":50,"stem":51},{"title":55,"path":56,"stem":57},"list_schema_versions","/en/mcp/tools/list-schema-versions","en/2.mcp/4.tools/1.list-schema-versions",{"title":59,"path":60,"stem":61},"MCP tool: resolve_datachain","/en/mcp/tools/resolve-datachain","en/2.mcp/4.tools/10.resolve-datachain",{"title":63,"path":64,"stem":65},"MCP tool: validate_resolved","/en/mcp/tools/validate-resolved","en/2.mcp/4.tools/11.validate-resolved",{"title":67,"path":68,"stem":69},"get_schema","/en/mcp/tools/get-schema","en/2.mcp/4.tools/2.get-schema",{"title":71,"path":72,"stem":73},"list_categories","/en/mcp/tools/list-categories","en/2.mcp/4.tools/3.list-categories",{"title":75,"path":76,"stem":77},"list_elements","/en/mcp/tools/list-elements","en/2.mcp/4.tools/4.list-elements",{"title":79,"path":80,"stem":81},"get_element","/en/mcp/tools/get-element","en/2.mcp/4.tools/5.get-element",{"title":83,"path":84,"stem":85},"get_elements","/en/mcp/tools/get-elements","en/2.mcp/4.tools/6.get-elements",{"title":87,"path":88,"stem":89},"validate_datachain","/en/mcp/tools/validate-datachain","en/2.mcp/4.tools/7.validate-datachain",{"title":91,"path":92,"stem":93},"render_datachain","/en/mcp/tools/render-datachain","en/2.mcp/4.tools/8.render-datachain",{"title":95,"path":96,"stem":97},"get_icon_url","/en/mcp/tools/get-icon-url","en/2.mcp/4.tools/9.get-icon-url",{"title":99,"path":100,"stem":101},"Prompts","/en/mcp/prompts","en/2.mcp/5.prompts",{"title":103,"path":104,"stem":105,"children":106},"REST API (v2)","/en/rest","en/3.rest/0.index",[107,108,112,116,120,124,128,132,136,140,144,148],{"title":103,"path":104,"stem":105},{"title":109,"path":110,"stem":111},"GET /schemas","/en/rest/schemas","en/3.rest/1.schemas",{"title":113,"path":114,"stem":115},"POST /schemas/:version/resolve","/en/rest/resolve","en/3.rest/10.resolve",{"title":117,"path":118,"stem":119},"POST /schemas/:version/validate_resolved","/en/rest/validate-resolved","en/3.rest/11.validate-resolved",{"title":121,"path":122,"stem":123},"GET /schemas/:version/manifest","/en/rest/manifest","en/3.rest/2.manifest",{"title":125,"path":126,"stem":127},"GET /schemas/:version/categories","/en/rest/categories","en/3.rest/3.categories",{"title":129,"path":130,"stem":131},"GET /schemas/:version/elements","/en/rest/elements-list","en/3.rest/4.elements-list",{"title":133,"path":134,"stem":135},"GET /schemas/:version/elements/:element_id","/en/rest/element-detail","en/3.rest/5.element-detail",{"title":137,"path":138,"stem":139},"POST /schemas/:version/validate","/en/rest/validate","en/3.rest/6.validate",{"title":141,"path":142,"stem":143},"Icon routes","/en/rest/icons","en/3.rest/7.icons",{"title":145,"path":146,"stem":147},"Pagination & fields","/en/rest/pagination-and-fields","en/3.rest/8.pagination-and-fields",{"title":149,"path":150,"stem":151},"Errors","/en/rest/errors","en/3.rest/9.errors",{"title":153,"path":154,"stem":155,"children":156},"Icon composition","/en/icons","en/4.icons/0.index",[157,158,162,166,170],{"title":153,"path":154,"stem":155},{"title":159,"path":160,"stem":161},"Shapes","/en/icons/shapes","en/4.icons/1.shapes",{"title":163,"path":164,"stem":165},"Symbols","/en/icons/symbols","en/4.icons/2.symbols",{"title":167,"path":168,"stem":169},"Composed variants","/en/icons/composed-variants","en/4.icons/3.composed-variants",{"title":171,"path":172,"stem":173},"URLs","/en/icons/urls","en/4.icons/4.urls",{"title":175,"path":176,"stem":177,"children":178},"@dtpr/ui","/en/ui","en/5.ui/0.index",[179,180,184,188,192],{"title":175,"path":176,"stem":177},{"title":181,"path":182,"stem":183},"@dtpr/ui/core","/en/ui/core","en/5.ui/1.core",{"title":185,"path":186,"stem":187},"@dtpr/ui/vue","/en/ui/vue","en/5.ui/2.vue",{"title":189,"path":190,"stem":191},"@dtpr/ui/html","/en/ui/html","en/5.ui/3.html",{"title":193,"path":194,"stem":195},"Theming","/en/ui/theming","en/5.ui/4.theming",{"title":197,"path":198,"stem":199,"children":200},"Concepts","/en/concepts","en/6.concepts/0.index",[201,202,206,210,214,218,222],{"title":197,"path":198,"stem":199},{"title":203,"path":204,"stem":205},"Datachains","/en/concepts/datachains","en/6.concepts/1.datachains",{"title":207,"path":208,"stem":209},"Elements & categories","/en/concepts/elements-categories","en/6.concepts/2.elements-categories",{"title":211,"path":212,"stem":213},"Versions & releases","/en/concepts/versions-and-releases","en/6.concepts/3.versions-and-releases",{"title":215,"path":216,"stem":217},"Content hash","/en/concepts/content-hash","en/6.concepts/4.content-hash",{"title":219,"path":220,"stem":221},"Shape contract","/en/concepts/shape-contract","en/6.concepts/5.shape-contract",{"title":223,"path":224,"stem":225},"Subchains","/en/concepts/subchains","en/6.concepts/6.subchains",{"title":227,"path":228,"stem":229,"children":230},"Claude plugin","/en/plugin","en/7.plugin/0.index",[231,232,236,270,274],{"title":227,"path":228,"stem":229},{"title":233,"path":234,"stem":235},"Install","/en/plugin/install","en/7.plugin/1.install",{"title":237,"path":238,"stem":239,"children":240},"Skills","/en/plugin/skills","en/7.plugin/2.skills/0.index",[241,242,246,250,254,258,262,266],{"title":237,"path":238,"stem":239},{"title":243,"path":244,"stem":245},"dtpr-describe-system","/en/plugin/skills/describe-system","en/7.plugin/2.skills/1.describe-system",{"title":247,"path":248,"stem":249},"dtpr-datachain-structure","/en/plugin/skills/datachain-structure","en/7.plugin/2.skills/2.datachain-structure",{"title":251,"path":252,"stem":253},"dtpr-category-audit","/en/plugin/skills/category-audit","en/7.plugin/2.skills/3.category-audit",{"title":255,"path":256,"stem":257},"dtpr-element-design","/en/plugin/skills/element-design","en/7.plugin/2.skills/4.element-design",{"title":259,"path":260,"stem":261},"dtpr-symbol-design","/en/plugin/skills/symbol-design","en/7.plugin/2.skills/5.symbol-design",{"title":263,"path":264,"stem":265},"dtpr-translate","/en/plugin/skills/translate","en/7.plugin/2.skills/6.translate",{"title":267,"path":268,"stem":269},"dtpr-comprehension-audit","/en/plugin/skills/comprehension-audit","en/7.plugin/2.skills/7.comprehension-audit",{"title":271,"path":272,"stem":273},"Research corpus","/en/plugin/research-corpus","en/7.plugin/3.research-corpus",{"title":275,"path":276,"stem":277},"Comprehension rubric","/en/plugin/comprehension-rubric","en/7.plugin/4.comprehension-rubric",{"title":49,"path":279,"stem":280,"children":281},"/en/tools","en/8.tools/0.index",[282],{"title":49,"path":279,"stem":280},{"title":284,"path":285,"stem":286},"Changelog","/en/changelog","en/9.changelog",{"ok":288,"versions":289},true,[290],{"id":291,"status":292,"created_at":293,"content_hash":294},"ai@2026-05-06-beta","beta","2026-05-06T20:23:42.963Z","sha256-2d208111b0c597ff2b38cb1c24168799b0a5ff9290203ebf46c4f7c16a0fcb24",{"id":296,"title":215,"body":297,"description":575,"extension":576,"links":577,"meta":578,"navigation":288,"path":216,"seo":579,"stem":217,"__hash__":580},"docs_en/en/6.concepts/4.content-hash.md",{"type":298,"value":299,"toc":567},"minimark",[300,314,319,323,326,330,336,365,375,497,501,504,512,518,522,529,533,536,540,563],[301,302,304,305,309,310,313],"callout",{"type":303},"info","Every version-scoped response carries a ",[306,307,308],"code",{},"DTPR-Content-Hash"," header and — for JSON responses — the same value in ",[306,311,312],{},"meta.content_hash",". Use it to detect drift.",[315,316,318],"h2",{"id":317},"what-it-is","What it is",[320,321,322],"p",{},"A hex digest computed over the frozen schema content for a version. Same inputs → same hash. Different inputs → different hash. The server never emits a partial or best-effort hash.",[320,324,325],{},"Stable versions have a content hash that never changes once promoted. Beta versions emit the current hash on each read; the hash only changes when an author rebuilds the schema.",[315,327,329],{"id":328},"where-it-appears","Where it appears",[320,331,332],{},[333,334,335],"strong",{},"REST, version-scoped endpoints:",[337,338,343],"pre",{"className":339,"code":340,"language":341,"meta":342,"style":342},"language-http shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","HTTP/1.1 200 OK\nContent-Type: application/json\nDTPR-Content-Hash: sha256-f8a2…\n","http","",[306,344,345,353,359],{"__ignoreMap":342},[346,347,350],"span",{"class":348,"line":349},"line",1,[346,351,352],{},"HTTP/1.1 200 OK\n",[346,354,356],{"class":348,"line":355},2,[346,357,358],{},"Content-Type: application/json\n",[346,360,362],{"class":348,"line":361},3,[346,363,364],{},"DTPR-Content-Hash: sha256-f8a2…\n",[320,366,367,370,371,374],{},[333,368,369],{},"MCP envelopes"," — inside ",[306,372,373],{},"meta",":",[337,376,380],{"className":377,"code":378,"language":379,"meta":342,"style":342},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"ok\": true,\n  \"data\": { \"...\": \"...\" },\n  \"meta\": { \"content_hash\": \"sha256-f8a2…\", \"version\": \"ai@2026-04-16-beta\" }\n}\n","json",[306,381,382,388,405,440,491],{"__ignoreMap":342},[346,383,384],{"class":348,"line":349},[346,385,387],{"class":386},"sMK4o","{\n",[346,389,390,393,397,400,402],{"class":348,"line":355},[346,391,392],{"class":386},"  \"",[346,394,396],{"class":395},"spNyl","ok",[346,398,399],{"class":386},"\"",[346,401,374],{"class":386},[346,403,404],{"class":386}," true,\n",[346,406,407,409,412,414,416,419,422,426,428,430,432,435,437],{"class":348,"line":361},[346,408,392],{"class":386},[346,410,411],{"class":395},"data",[346,413,399],{"class":386},[346,415,374],{"class":386},[346,417,418],{"class":386}," {",[346,420,421],{"class":386}," \"",[346,423,425],{"class":424},"sBMFI","...",[346,427,399],{"class":386},[346,429,374],{"class":386},[346,431,421],{"class":386},[346,433,425],{"class":434},"sfazB",[346,436,399],{"class":386},[346,438,439],{"class":386}," },\n",[346,441,443,445,447,449,451,453,455,458,460,462,464,467,469,472,474,477,479,481,483,486,488],{"class":348,"line":442},4,[346,444,392],{"class":386},[346,446,373],{"class":395},[346,448,399],{"class":386},[346,450,374],{"class":386},[346,452,418],{"class":386},[346,454,421],{"class":386},[346,456,457],{"class":424},"content_hash",[346,459,399],{"class":386},[346,461,374],{"class":386},[346,463,421],{"class":386},[346,465,466],{"class":434},"sha256-f8a2…",[346,468,399],{"class":386},[346,470,471],{"class":386},",",[346,473,421],{"class":386},[346,475,476],{"class":424},"version",[346,478,399],{"class":386},[346,480,374],{"class":386},[346,482,421],{"class":386},[346,484,485],{"class":434},"ai@2026-04-16-beta",[346,487,399],{"class":386},[346,489,490],{"class":386}," }\n",[346,492,494],{"class":348,"line":493},5,[346,495,496],{"class":386},"}\n",[315,498,500],{"id":499},"why-agents-care","Why agents care",[320,502,503],{},"An AI agent that caches DTPR content (element titles, category structure, rendered HTML) can use the content hash as a cache key:",[337,505,510],{"className":506,"code":508,"language":509},[507],"language-text","cache_key = content_hash\n","text",[306,511,508],{"__ignoreMap":342},[320,513,514,515,517],{},"When the next response carries a different ",[306,516,457],{},", the cache entry is stale — invalidate and re-fetch. No polling, no version number parsing, no \"every 5 minutes check if the schema moved.\"",[315,519,521],{"id":520},"not-a-crypto-signature","Not a crypto signature",[320,523,524,525,528],{},"The hash is a fingerprint, not a signature. It detects drift; it does not authenticate origin. If you need authenticated content, rely on TLS to ",[306,526,527],{},"api.dtpr.io",".",[315,530,532],{"id":531},"beta-churn","Beta churn",[320,534,535],{},"A beta version's content hash changes on every rebuild. If your client pins on the hash against a beta version, expect cache turnover during active authoring. Pinning on a stable version's hash gives you an immutable handle.",[315,537,539],{"id":538},"see-also","See also",[541,542,543,550,556],"ul",{},[544,545,546],"li",{},[547,548,211],"a",{"href":549},"/concepts/versions-and-releases",[544,551,552],{},[547,553,555],{"href":554},"/mcp/envelope","MCP envelope",[544,557,558,562],{},[547,559,561],{"href":560},"/rest","REST conventions"," — response headers.",[564,565,566],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}",{"title":342,"searchDepth":355,"depth":355,"links":568},[569,570,571,572,573,574],{"id":317,"depth":355,"text":318},{"id":328,"depth":355,"text":329},{"id":499,"depth":355,"text":500},{"id":520,"depth":355,"text":521},{"id":531,"depth":355,"text":532},{"id":538,"depth":355,"text":539},"How agents detect DTPR schema content drift without polling.","md",null,{},{"title":215,"description":575},"ja0OgzIDNOvpKWa91p7xF7poGVFY8OlI0fvVTJvZOUE",[582,584],{"title":211,"path":212,"stem":213,"description":583,"children":-1},"Canonical version ids, aliases, status, and what \"release\" means for DTPR.",{"title":219,"path":220,"stem":221,"description":585,"children":-1},"Advisory mapping from DTPR icon shape primitives to the kind of fact a category holds.",1779049689826]