{"service":"Vanagon Dictionary","canonicalBaseUrl":"https://dictionary.vanagon.com","productPurpose":"Shared lexical service for Vanagon and Gerry. Preserved Vanagon.com bus terminology and mailing-list slang, separately sourced contemporary parts references, and clearly labeled machine-assisted translations.","serviceContract":{"role":"Shared lexical service for Vanagon and Gerry. Preserved Vanagon.com bus terminology and mailing-list slang, separately sourced contemporary parts references, and clearly labeled machine-assisted translations.","repository":"https://github.com/mbarbine/vanagon-dictionary","origin":"https://dictionary.vanagon.com","consumers":{"vanagon":"https://vanagon.com","gerry":"https://gerry.vanagon.com"},"productionOrigins":{"dictionary":"https://dictionary.vanagon.com","vanagon":"https://vanagon.com","gerry":"https://gerry.vanagon.com"},"productionActivation":"Configured for dictionary.vanagon.com with the retained dictionary.ja1.io alias. Consult deployment acceptance evidence for current DNS/TLS status.","ownership":{"dictionary":"Canonical terms, definitions, translations, provenance, editorial revisions, lexical APIs and exports.","vanagon":"Historical page/capture presentation, editorial pages, navigation, and its own feeds and protocols.","gerry":"Messages, discussions, archives, community accounts, and its own feeds and protocols."},"independentServices":"Shared community footer and lexical service; each site retains its own feeds, API/MCP registry, credentials, and deployment. Dictionary RSS/Atom publishes dictionary events only; it does not mirror Vanagon or Gerry activity.","backendStatus":"Cloudflare Workers and D1 are the only configured persistence and operational backend. The API Worker also configures Queues, R2, Workflows, and Workers AI. The Neon client, legacy docs publisher, and optional Trace/Graph/event-sink destinations were removed. Frontend data routes delegate to the canonical Cloudflare Dictionary API Worker; the legacy SQL compatibility shim fails closed. Gerry’s bounded public archive-search API remains a first-party read integration and does not store Dictionary data.","gerryContext":"The Dictionary queries Gerry’s bounded public community-search API for up to three contextual matches and links to Gerry’s full archive search. Gerry remains the sole owner of those messages; matches are not imported definitions or reviewed lexical relationships.","serviceReads":"Dictionary service reads and ordinary proxies bound the wait for headers and response bytes to 10 seconds; Gerry context reads use 6 seconds. Federated search preserves available source results and labels unavailable sources. Requests are not retried automatically. Proxy request bodies have a separate 10-second deadline (408 REQUEST_TIMEOUT before dispatch); protected snapshot dispatch retains its 60-second deadline. A timeout after dispatch does not prove a mutation was rolled back; inspect its receipt before retrying.","mcpCompatibility":"The Dictionary, Gerry, and Vanagon MCP registries are independent. Dictionary exposes stateless Streamable HTTP at /api/mcp/streamable for MCP 2026-07-28 modern clients and preserves 2025-03-26 legacy Streamable HTTP behavior on the same endpoint; both paths use the same read-only registry. Both eras passed official SDK acceptance on dictionary.ja1.io after deployment. The legacy JSON-RPC endpoints /api/mcp and /api/v1/mcp remain available (2024-11-05). Gerry and Vanagon expose their independent Streamable HTTP registries at /api/mcp. Cross-service MCP tool invocation is not configured; lexical integrations use the public Dictionary REST API and Gerry community-search API.","contributions":"Dictionary browser drafts remain local. Authenticated Gerry members can submit genuine editorial proposals through the restricted service binding. Proposals remain pending until separately reviewed and applied; receipt acceptance is not publication. Operator writes require the server-configured key.","shortDefinitions":"Canonical lexical reads include nullable short_definition from the selected definition locale. Only separately recorded, bounded text is returned; absent summaries are not generated. Protected publication, import and edits support this field. Explicit null clears it. Legacy submission notes remain private; only their recorded short text is projected. Historical originals remain immutable.","definitionHistory":"GET /api/v1/definitions/{id}/history is an operator-only, no-store read of retained definition snapshots. Older unrecorded changes are not reconstructed. Snapshots can include removed or private content and never enter public search, feeds or MCP. Optional expectedRevision on protected edits rejects stale writes without mutation. See OpenAPI for limits and coverage.","translationPolicy":"Machine-assisted drafts are not human-reviewed. Missing translations return explicitly labeled source English.","termLabels":"Canonical term detail, search, browse, category/tag and author reads include term_label: a recorded requested-locale name with an eligible definition, or explicit canonical_fallback in the origin locale. Canonical IDs, URLs and alphabetical order remain unchanged. Repeated canonical labels do not establish translation coverage; label review state is unrecorded. Differing recorded names appear alongside canonical headings. This read contract does not add editorial label writes or invent translations.","sourceReferences":"GET /api/v1/terms/{slug}/sources and MCP get_term_sources enumerate recorded public definition citations and applied source annotations. Omit locale for all definition languages; explicit locale does not substitute English. References preserve record identity and source/capture provenance, are not fetched, and do not certify technical correctness. Follow nextOffset and omitted_invalid_references; unavailable storage never substitutes seed citations."},"publicSafeRoutes":["/","/en","/terms","/trending","/popular","/recent","/random","/az","/categories","/tags","/locales","/faq","/docs","/api","/api/docs","/api/health","/api/v1/health","/api/v1/terms","/api/v1/definitions","/api/v1/definitions/*/vote","/api/v1/definitions/*/removal-requests","/api/submit","/api/v1/search","/api/v1/categories","/api/v1/tags","/api/v1/locales","/api/v1/recent","/api/v1/popular","/api/v1/trending","/api/v1/stats","/api/v1/agent-policy","/api/v1/agent-policy/platforms","/api/v1/agent-policy/robots","/api/v1/agent-policy/summary","/api/mcp","/openapi.yaml","/openapi.json","/llms.txt","/llms-full.txt","/llms-index.json","/robots.txt","/humans.txt","/sitemap.xml","/sitemap-main.xml","/sitemap-index.xml","/rss.xml","/feed.xml","/manifest.webmanifest","/privacy","/terms","/data-policy","/principles","/open-source","/.well-known/mcp.json","/.well-known/agents.json","/.well-known/agent-policy.json","/.well-known/ai-policy.json","/.well-known/ai-plugin.json","/.well-known/trust.json","/.well-known/security.txt"],"protectedRoutes":["/api/v1/recovery","/admin","/api/admin","/api/private","/api/protected","/api/telemetry/404","/api/webhooks","/api/definitions/*/report","/api/moderation","/api/v1/ingest","/api/v1/import","/api/v1/moderation","/api/v1/rankings/recalculate","/api/v1/definitions/*/history","/api/v1/definitions/*/approve","/api/v1/definitions/*/flag","/api/v1/definitions/*/reject","/api/v1/removal-requests","/api/v1/removal-requests/*/approve","/api/v1/removal-requests/*/reject","/api/v1/reports","/api/v1/audit","/api/v1/workflows"],"publicApiDocsUrl":"https://dictionary.vanagon.com/api/docs","openapiUrl":"https://dictionary.vanagon.com/openapi.yaml","openapiJsonUrl":"https://dictionary.vanagon.com/openapi.json","mcpEndpoint":"https://dictionary.vanagon.com/api/mcp/streamable","mcpManifestUrl":"https://dictionary.vanagon.com/.well-known/mcp.json","llmsFiles":["https://dictionary.vanagon.com/llms.txt","https://dictionary.vanagon.com/llms-full.txt","https://dictionary.vanagon.com/llms-index.json"],"sitemapFiles":["https://dictionary.vanagon.com/sitemap.xml","https://dictionary.vanagon.com/sitemap-main.xml","https://dictionary.vanagon.com/sitemap-index.xml"],"feedFiles":["https://dictionary.vanagon.com/rss.xml","https://dictionary.vanagon.com/feed.xml","https://dictionary.vanagon.com/atom.xml","https://dictionary.vanagon.com/feed.json"],"robotsTxtUrl":"https://dictionary.vanagon.com/robots.txt","supportContact":"https://dictionary.vanagon.com/faq","securityContact":"https://dictionary.vanagon.com/.well-known/security.txt","allowedAgentUses":["crawl public-safe dictionary pages","search approved terms and definitions","read API docs and OpenAPI","read llms, sitemap, RSS, and feed files","call read-only API and MCP introspection","submit definitions with PLATPHORM_API_KEY","vote on definitions with PLATPHORM_API_KEY"],"disallowedAgentUses":["access private moderation queues","trigger import, sync, admin, report, or destructive actions without PLATPHORM_API_KEY","store or expose raw fingerprint identifiers","scrape private author metadata","represent pending/rejected definitions as approved","treat unreviewed translations or Gerry search matches as reviewed dictionary facts"],"rateLimitGuidance":"Public clients should keep reads bounded. Protected writes require PLATPHORM_API_KEY and may be throttled.","attributionGuidance":"Quote, summarize, or reuse archived definitions with attribution to Vanagon.com, the preserved source URL, and the canonical dictionary term URL where practical.","tracePropagationRequirements":"W3C trace context and PlatPhorm trace headers are accepted and propagated for platform operations without secrets in trace state or baggage.","publicProtectedActionPolicy":{"publicSafeByDefault":true,"protectedActionsRequire":"PLATPHORM_API_KEY","enforcement":"required"},"platphormApiKeyPolicy":"Protected actions accept Authorization: Bearer $PLATPHORM_API_KEY and X-PlatPhorm-API-Key: $PLATPHORM_API_KEY. The key must never be logged, stored client-side, traced, or exposed.","ja4DigestHandlingPolicy":"Raw fingerprint values are not published in public dictionary artifacts.","updatedAt":"2026-10-26T00:00:00.000Z","version":"2026-10-26.vanagon.shared-service"}