Connect an AI assistant to your lab results

The connector is not ChatGPT-specific plumbing. It is an MCP server with two scopes, and one client has actually been tested against it.

Doctano runs an MCP server at app.doctano.com/api/mcp over streamable HTTP with OAuth. A compatible client can list your profiles, read biomarkers and reports, and, if you grant the write scope, upload a report. ChatGPT is the only client Doctano has verified today. Others are untested, so treat them as experimental.

This page is the technical companion to the ChatGPT setup guide. Same server, same scopes, different audience: one is written for a person clicking through a client, this one for someone deciding whether their client can talk to it at all.

What the server is

  • Transport: MCP over streamable HTTP.
  • Endpoint: https://app.doctano.com/api/mcp, which is also the OAuth resource.
  • Authorisation: OAuth. Clients that support dynamic client registration can register themselves.
  • Scopes: health.read and health.write. Write is additive, so a write grant also passes the read checks.
  • Second entry point: POST /api/mcp/upload accepts report files directly, with the same write scope.

What a client needs

Requirements for a client to connect
RequirementWhy it mattersStatus
MCP over streamable HTTPThe server does not expose a stdio or local-command transport.Required
OAuth authorizationAccess is granted per account, not with a pasted API key.Required
Dynamic client registration, or a client Doctano can registerThe grant has to belong to a specific client.Required for a self-service connection
Ability to attach files to a tool callNeeded for in-chat upload only. Reading works without it.Optional
Ability to follow returned linksTool results include in-app links to the report or biomarker behind a value.Optional

The tools behind the connection

Read tools are listed for any connection. Upload tools are listed only for a token that carries health.write, so a read-only connection does not see them at all.

What the tools do
ToolScopeWhat it returns
list_profileshealth.readThe profile names the account can access.
get_user_profilehealth.readAccount and profile details needed to choose the right person.
get_health_summaryhealth.readThe latest report and flagged results for one profile.
get_latest_biomarkershealth.readThe most recent value for each marker.
search_biomarkershealth.readMarkers matching a query, with their codes and names.
get_biomarker_historyhealth.readAll recorded values for one marker, in order.
get_biomarker_summaryhealth.readA marker's identity, code, unit, and its latest and previous values.
get_abnormal_biomarkershealth.readResults outside their reference range.
search_reportshealth.readReports for a profile, with dates and labs.
get_reporthealth.readOne report with its extracted values.
get_report_statushealth.readWhether a report is processing, processed, ready, or failed.
get_doctano_contexthealth.readThe current Doctano product guide, for questions about the app itself.
upload_reporthealth.writeAdds one or more files to a chosen profile.
get_report_upload_linkhealth.writeAn authenticated upload link with the profile preselected.

Uploading from a client that cannot attach files

Not every client can hand a file to a tool. There are two fallbacks, and both need a write-scoped token.

  • An upload link. The tool returns a signed-in upload address with the profile already chosen. The person signs in and uploads through the normal app flow.
  • The HTTP receiver. A client that can send bytes posts to https://app.doctano.com/api/mcp/upload with a bearer token, as multipart form data, raw binary, or a JSON body listing download URLs. Doctano fetches each URL server-side, so a temporary link never becomes the stored file address.

Limits

Upload limits and failure codes
Limit or codeMeaning
50 MB per fileMatches the in-app upload limit.
10 files, 100 MB total per requestLarger batches are rejected.
PDF, PNG, JPEG, TIFFChecked by the file's magic bytes, not only its extension.
400Missing or invalid profile, no files, too many files, or an unreadable body.
401 and 403Missing or invalid token, or a token without the write scope.
413 and 415A file or the request is too large, or the format check failed.
422 and 429The download URL could not be fetched or every file failed, or the request was rate limited.

Which clients are verified

ChatGPT is the only client Doctano has tested end to end, and it is the only one the setup guide covers. The server is written to the protocol, not to one vendor, but protocol support is not the same thing as a working product: clients differ in how they register, how they pass files, and how they present a scope prompt.

So the honest position is this. If your client supports the transport, the OAuth flow, and the scopes above, it may connect. Doctano has not verified it, cannot walk you through its menus, and cannot promise that a tool result will be displayed correctly. Nothing on this page is a claim that any specific untested client works.

What to check before you rely on it

  • Grant the narrowest scope that answers your question. Read-only covers questions about results.
  • Confirm the profile before an upload. Files in one call all go to the same profile.
  • Verify important values against the original report. Extraction can be wrong.
  • Revoke the grant when you are finished with it, from Account, then Connected Apps.

Questions

Connecting an AI assistant

The server is a general MCP server, but ChatGPT is the only client Doctano has verified. Other clients may work if they support the same transport and OAuth flow, and they are untested.

Possibly. Your client needs MCP over streamable HTTP, OAuth authorisation, and the two Doctano scopes. Because Doctano has not verified any client other than ChatGPT, treat another client as experimental rather than as a supported setup.

It can do everything a read-only connection can, and it can upload lab reports to a profile you choose. It cannot edit or delete reports, manage profiles, or change account settings.

Yes. A write-scoped access token can post to https://app.doctano.com/api/mcp/upload as multipart form data, raw binary, or a JSON list of download URLs. The limits are 50 MB per file, 10 files per request, and 100 MB per request.

Open Account, then Connected Apps, and revoke the connection. Revoking ends the grant without deleting your account, profiles, or reports.

Related

Related pages

Not medical care. A connected assistant has access to organized results, not a diagnosis. It can be wrong, and it is not a substitute for a qualified professional. For anything urgent, contact a doctor or local emergency services.

Start with your first report

Upload a lab report and Doctano will organize your results for you.

Upload your first report →