For AI agents & assistants

Built to be read, driven, and integrated

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.

Read us as markdown

  • llms.txt — curated index of every page and knowledge-base article.
  • Every HTML page has a markdown twin at the same URL with .md appended: index.md, about.md, services.md, contact.md, ai.md.
  • Knowledge-base articles are canonical markdown at kb/<slug>.md — the HTML article pages render from those very files. Catalog: data/kb.js.
  • Every page carries <link rel="alternate" type="text/markdown"> pointing at its twin.

Use our data (Open Data API)

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

Get the MCP wrapper (partners & colleagues)

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.

Drive the site (in-browser agents)

  • WebMCPnavigator.modelContext tools on every page: describe_site, set_intent, and one fresh_* tool per capability. The toolset republishes whenever the composition changes.
  • Outlet plug contract — bring your own brain via window.FreshOutlet.connect(plug) or window.FRESH_BYO_PLUG; see AI_FIRST.md.
  • AG-UI eventswindow.FreshAGUI.subscribe(cb): STATE_SNAPSHOT, STATE_DELTA (RFC-6902 patches), TOOL_CALL_START/END, CUSTOM signal/interrupt.
  • Portable UI treeswindow.FreshPortableTree speaks fresh.ui/v1; native Google A2UI adoption is planned (see the redesign plan below).
  • URL seams?intent=<topic> seeds intent; ?morph= carries a shared composition; ?mode=chat opens an interaction mode directly.

Meet us in chat apps (MCP app)

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 plan

The full AG-UI × A2UI native redesign program — MCP app first, website second, everything readable — is documented in docs/REDESIGN.md.

Ground rules for agents

Booking is request-only

Submitting the appointment form files a request; a human confirms every appointment. Never tell a user an appointment is confirmed.

Education, not diagnosis

The knowledge base informs; it does not diagnose. For symptoms, route users to a visit — or for emergencies, straight to (503) 555-FRESH.

Don't scrape the DOM

Everything renderable and doable is already in the manifest (describe_site), the markdown twins, and the catalog.