Skip to main content
Glama

DodoDentist Dental Clinic

Find a patient by name

find_patient
Read-onlyIdempotent

Use this when someone names a patient to book, move, cancel or update, and the patient's id is needed. Returns up to 5 patients whose name holds every word given, with id, name, practice and edit time, plus the last two phone digits when two share a name. Not for listing, browsing or counting patients.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "search": "<search>"
    },
    "name": "find_patient"
  }
}

Input Schema

NameRequiredDescriptionDefault
searchYesThe patient's name as the user gave it, or part of it. Every word must appear in the stored name, in any order, ignoring case and accents.
clinicIdNoOnly patients of this practice; every practice of the account when absent

Output Schema

NameRequiredDescriptionDefault
countYes
patientsYesThe patients whose name matches, with the ids the other tools take. Contact details, dates of birth, notes and clinical records are never returned.
tooManyMatchesYesMore than 5 patients match: none are returned; ask the user for more of the name

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly, idempotent, closed-world, non-destructive), the description discloses matching semantics ('name holds every word given' in any order), the 5-result ceiling, the returned fields, and a disambiguation rule (last two phone digits when two share a name). These are the exact behaviors an agent needs to interpret partial results without guessing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two front-loaded sentences with no filler; the usage condition leads and the exclusion closes. Minor redundancy in enumerating returned fields, which the output schema already documents, but it costs only a clause.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter, read-only lookup with a full schema and an output schema, the description covers trigger, matching semantics, result cap and exclusion — nothing an agent needs before calling it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already explains both 'search' and 'clinicId' in detail, including word-order/case/accent handling. The description restates the matching rule rather than adding new meaning, so the schema baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('find a patient by name') and states the resolution goal ('the patient's id is needed') plus a hard result cap of 5. It is clearly distinguishable from the listing/browsing siblings it explicitly disowns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit triggering condition ('when someone names a patient to book, move, cancel or update') and an explicit exclusion ('Not for listing, browsing or counting patients'), which routes the agent to the list_* siblings. Both when-to-use and when-not-to-use are stated, not inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources