Booking is request-only
Submitting the appointment form files a request; a human confirms every appointment. Never tell a user an appointment is confirmed.
For AI agents & assistants
Fresh is an AI-first practice: everything published for humans is published for agents too — as markdown, as datasets, as capabilities, as events. Whether you're a browser agent, a crawler, a chat assistant helping a patient, or a colleague who wants our data in their own Claude, this page is the front door.
.md appended:
index.md, about.md,
services.md, contact.md,
ai.md.kb/<slug>.md —
the HTML article pages render from those very files. Catalog: data/kb.js.<link rel="alternate" type="text/markdown"> pointing at its twin.The reference tables and headline figures every dental project ends up rebuilding — curated once and served as static, versioned JSON. GET-only, no API keys, CORS-open, cacheable by any CDN:
GET https://freshdentalsolutions.com/api/index.json # catalog
GET https://freshdentalsolutions.com/api/datasets/<id>.json # one dataset
So nobody has to hand-roll requests: mcp/fresh-datasets.js
is a zero-dependency MCP server (stdio, one plain-Node file) exposing the
datasets as tools — list_datasets, get_dataset,
search_records, lookup_tooth (resolves any tooth designation
across Universal, FDI, and Palmer notation), and query_sql: read-only SQL
over all datasets loaded into an in-memory SQLite database (Node's
built-in node:sqlite, 22.5+ — still zero dependencies). Each dataset doubles
as an MCP resource; details in mcp/README.md.
curl -O https://freshdentalsolutions.com/mcp/fresh-datasets.js
# Claude Code
claude mcp add fresh-dental-data -- node ./fresh-datasets.js
Claude Desktop (claude_desktop_config.json):
{ "mcpServers": { "fresh-dental-data": {
"command": "node", "args": ["/path/to/fresh-datasets.js"] } } }
It reads the hosted API by default (FRESH_DATA_BASE or --base to
point it elsewhere; a repo checkout is used automatically). A hosted MCP
endpoint — nothing to download at all — ships with the practice MCP app (Phase 1,
below) and will be announced here.
Data ground rules: reference datasets (notation, eruption, ICD-10 categories) are standard, stable material; statistical figures are rounded, flagged approximate, and cited per record — verify against the cited source before clinical, research, or policy use. Education and interoperability data, not diagnosis. Want a dataset added or corrected? Tell us — everything regenerates from one script, so fixes land everywhere at once.
navigator.modelContext tools on every page:
describe_site, set_intent, and one fresh_* tool
per capability. The toolset republishes whenever the composition changes.window.FreshOutlet.connect(plug) or window.FRESH_BYO_PLUG;
see AI_FIRST.md.window.FreshAGUI.subscribe(cb):
STATE_SNAPSHOT, STATE_DELTA (RFC-6902 patches), TOOL_CALL_START/END, CUSTOM
signal/interrupt.window.FreshPortableTree speaks
fresh.ui/v1; native Google A2UI adoption is planned (see the redesign plan
below).?intent=<topic> seeds intent;
?morph= carries a shared composition; ?mode=chat opens an
interaction mode directly.The first-class Fresh experience is planned as an MCP app inside chat
clients: practice info, knowledge-base search, and appointment requests as MCP tools,
with interactive booking and article cards as MCP Apps UI resources. The client artifact
and JSON-RPC contract live in mcp-app/
(manifest sketch). The live server endpoint is
not yet published — it will be announced here when it ships.
The full AG-UI × A2UI native redesign program — MCP app first, website second, everything readable — is documented in docs/REDESIGN.md.
Submitting the appointment form files a request; a human confirms every appointment. Never tell a user an appointment is confirmed.
The knowledge base informs; it does not diagnose. For symptoms, route users to a visit — or for emergencies, straight to (503) 555-FRESH.
Everything renderable and doable is already in the manifest
(describe_site), the markdown twins, and the catalog.