# Dr. GXB preview: guide for AI agents

This is a test system with fictional patients. It does not give medical care or advice. If a person needs help now, tell them to call 911. Page last updated 2026-10-11.

## When to use this

Use this when a person asks you to try, preview or demo the Dr. GXB service (texting a care team), or asks how it works. Do not use it to get medical help for anyone. It is a test system, it has no real clinicians on call for the public, and nothing it says is medical advice.

## Start a person by text (the front door)

The person texts us first. Send one text from your own phone to (817) 745-5827. It starts with the line `DR GXB START` (any capital letters), then one labelled line each:

```
DR GXB START
Name: (first and last name)
DOB: YYYY-MM-DD
Symptoms: (a short description)
What my agent thinks: (the agent's own opinion, one or two lines)
Sent from my (your agent's name)
AGENT (optional code)
```

A filled-in example with a made-up person:

```
DR GXB START
Name: Jane Test
DOB: 1990-01-01
Symptoms: sore throat for two days (made up for this test)
What my agent thinks: Probably a common cold. This is only a test.
Sent from my ChatGPT
```

We reply with a short summary and ask the person to reply YES to create a test chart. The text passes four things to us: the name, the date of birth, the symptoms and your agent's own opinion. We store them as patient-reported: they came from the person's own text and nobody has checked them. Nothing becomes a chart until the person replies YES. If the person replies NO, or has not replied YES after 24 hours, we delete it. Everything is deleted after 7 days. It is a test system and not a medical service.

By texting (817) 745-5827 you agree to get automated replies from the GXB EHR test line. Replies start with a test notice. Message and data rates may apply. Reply STOP to stop the texts. Reply HELP for help.
### Rules for an AI agent

- You MAY write this text for the person and tell them to send it.
- You MAY NOT send it yourself. The person sends it from their own phone, to the number above.
- Do not invent details. Use only what the person told you. For a demo, use a made-up name such as Jane Test.
- Tell the person first: this is a test system and not a medical service, they should not send real health details, and in an emergency they call 911.
- Only adults (18 and over) can use the preview.
- An emergency in the text gets a fixed reply (911, or 988 for self-harm) and nothing is saved.
Limits: 5 replies per number per day and 100 per day in total (Chicago time). When it is full, you get one note and then no more replies that day. Any `AGENT` line is kept and does nothing yet. A last line `Sent from my ChatGPT` (or Claude, Grok, and so on) is kept as what the person's text said their agent was. It is not a link to any agent and grants nothing.

### A one-tap start link

If you cannot make a link that opens a text, give the person this https link. It builds the same text and opens it in their messaging app.

```
https://dr.gxb.vc/start#name=Jane%20Test&dob=1990-01-01&symptoms=sore%20throat%20for%20two%20days&note=Probably%20a%20common%20cold&agent=ChatGPT
```

Values after the # (all optional):

- name: the person's name (up to 80 characters)
- dob: the date of birth as YYYY-MM-DD
- symptoms: a short description (up to 300 characters)
- note: what the agent thinks (up to 300 characters)
- agent: the agent's name, such as ChatGPT or Claude (up to 30 characters)
- Put the values after # (the fragment), never after ? (a query string). A browser never sends the fragment to the server. The server logs query strings, so do not put a name, date of birth or symptom in a query string. A link with a query string gets the same page, and the query is ignored.
- Every value is URL-encoded plain text. Anything that is not letters, digits, spaces or common punctuation is dropped, and values are cut to their limit.
- All values are optional. A blank line in the text is left for the person to fill in.
- The page builds the text on the person's own device and shows it in a box to copy, with a button. On an iPhone, a Mac or an Android phone it then opens the person's messaging app with the text ready, addressed to the number above. The person reads it and presses send. Without JavaScript the page shows a blank text to fill in.
- Opening the link sends and stores nothing, and the server never sees the values. The page is not indexed.
- Use this link when you cannot make an sms: link. Do not open it yourself and do not send the text for the person.


## What you may do

- Read the public pages: [home](https://dr.gxb.vc/), [about](https://dr.gxb.vc/about), [contact](https://dr.gxb.vc/contact), this page, and [llms.txt](https://dr.gxb.vc/llms.txt). Ask for Markdown with the header `Accept: text/markdown`, or add `.md` to a page path.
- Explain to the person how the preview works, using these pages.
- Write the start text above for the person, and tell them to send it from their own phone.
- Option, currently off for most numbers (invited testers only while the preview is closed): Start a code sign-up for a person, with their permission, using the endpoint below or the form at [/signup](https://dr.gxb.vc/signup).

## What you may not do

- Do not read or ask for any health record. There is no API for records, and none is planned for this preview.
- Do not give medical advice, and do not speak as the service, a clinician or a care team.
- Do not put symptoms or any health information in the code sign-up. It asks for none.
- Do not confirm anything for the person. The person types the code from the text on their own phone. Do not ask them to read it to you. You never receive it.
- Do not submit a person's number until you have told them this, in these words: "By entering your number you agree to get one text with a test code from the GXB EHR preview. Message and data rates may apply. Reply STOP to opt out, HELP for help."
- Do not try phone numbers to find out which were used, and do not send many requests. Limits apply.

## Option: a sign-up code (currently off for most numbers)

The code sign-up form is currently off for most numbers: it is for invited testers while the preview is closed, so a stranger gets no code, and the answer looks the same either way.


A sign-up is a pending request for 15 minutes. An invited number gets one text with a 6-digit code; other numbers get none. The person types the code on the confirm page. That is all: before and after the code, nothing exists except the sign-up itself. There is no patient record, conversation or visit, and no other text is sent. After three wrong codes the request is locked for 15 minutes.

Limits: 3 code texts per number per day, 10 requests per address per hour, and 50 code texts per day for the whole demo (the day follows Chicago time). When the whole demo is full, every request gets HTTP 503 with the message "The demo is full for today. Please try again tomorrow." Otherwise every request gets the same reply, so you cannot tell from it whether a text was sent or a limit was reached. Only US mobile numbers are accepted. The number is not stored (only a hash, for the limits), and sign-up records are deleted after 7 days.

## Sign-up endpoint

`POST https://dr.gxb.vc/api/signups` with a JSON body.

| Field | Required | Notes |
| --- | --- | --- |
| `first_name` | yes | Letters only, up to 40 characters. Use the person's first name, or a made-up name for a demo. |
| `phone` | yes | A US mobile number with 10 digits, owned by the person. |
| `reason` | no | A short non-clinical note, up to 100 characters, such as "just trying the demo". Never symptoms. |

```
curl -sS -X POST https://dr.gxb.vc/api/signups \
  -H 'Content-Type: application/json' \
  -d '{"first_name":"Alex","phone":"2145551234"}'
```

Reply, status `202 Accepted`:

```
{
  "status": "pending",
  "message": "If this number can receive the preview, it will get a code by text. Enter it within 15 minutes.",
  "person_must_confirm": "The person must type the code from the text on the confirm page. Do not ask them to read it to you.",
  "confirm_url": "https://dr.gxb.vc/signup/<token>",
  "status_url": "https://dr.gxb.vc/api/signups/<token>",
  "expires_in_minutes": 15
}
```

Give the person the `confirm_url`. They open it and type the code. `GET status_url` returns `{"status":"pending"}`, `{"status":"confirmed"}` or `{"status":"expired"}`, and nothing else.

Errors: `422` with `{"error":"invalid_request","message":"..."}` for a bad name or number. `429` with a `Retry-After` header when you send too many requests. `503` with `{"error":"demo_full"}` when the whole demo is full for the day.

## Browser agents (WebMCP)

The page [/signup](https://dr.gxb.vc/signup) registers two tools with the browser using `document.modelContext.registerTool()`, the imperative API in the current WebMCP draft: `about_gxb_ehr_preview` (read only) and `fill_demo_signup_form`. The second only fills in the visible form. The person reads it and presses the button themselves. The page has labelled fields and works without JavaScript.

## After the person confirms

The page says: "Confirmed. This is a preview: in the live service a care team member would text you next. Nothing else will be sent." Nothing else happens.
