Skip to main content
Glama

Sanovia — medici e professionisti sanitari in Italia

Profilo del professionista / Practitioner profile

get_doctor_profile
Read-onlyIdempotent

Profilo pubblico di un professionista: specialità, iscrizione all'Albo, sedi, orari, prestazioni con durata e prezzo (null = prezzo non indicato o non mostrato online), valutazione verificata, link al suo sito e alla prenotazione. Non prenota. / Public profile: specialty, professional registration, locations, opening hours, services with duration and price (null = price not stated or not shown online), verified rating, links to their website and booking page. Does not book.

Input Schema

NameRequiredDescriptionDefault
codeYesCodice pubblico del medico restituito da search_doctors (campo `code`). / The doctor's public code from search_doctors (`code`).

Output Schema

NameRequiredDescriptionDefault
codeYes
nameYes
ratingYes
servicesYes
site_urlYes
locationsYes
specialtyYes
booking_urlYes
registrationYes
opening_hoursYes
practice_nameYes
online_bookingYes
profession_typesYes
external_site_urlYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "booking_url": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "code": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "external_site_url": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "locations": {
      +      "items": {
      +        "properties": {
      +          "address": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "city": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "location_ref": {
      +            "type": "number"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "online_booking": {
      +            "type": "boolean"
      +          },
      +          "phone": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "online_booking"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "name": {
      +      "type": "string"
      +    },
      +    "online_booking": {
      +      "type": "boolean"
      +    },
      +    "opening_hours": {
      +      "items": {
      +        "properties": {
      +          "day": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "from": {
      +            "type": "string"
      +          },
      +          "location": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "to": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "location",
      +          "day",
      +          "from",
      +          "to"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "practice_name": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "profession_types": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "rating": {
      +      "properties": {
      +        "average": {
      +          "type": "number"
      +        },
      +        "count": {
      +          "type": "number"
      +        }
      +      },
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "registration": {
      +      "properties": {
      +        "number": {
      +          "type": "string"
      +        },
      +        "province": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        }
      +      },
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "services": {
      +      "items": {
      +        "properties": {
      +          "description": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "duration_min": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "price_eur": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "remote": {
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "duration_min",
      +          "price_eur",
      +          "remote",
      +          "description"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "site_url": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "specialty": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "code",
      +    "name",
      +    "specialty",
      +    "practice_name",
      +    "profession_types",
      +    "online_booking",
      +    "booking_url",
      +    "site_url",
      +    "registration",
      +    "locations",
      +    "opening_hours",
      +    "services",
      +    "rating",
      +    "external_site_url"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive behavior, so the bar is lower. The description adds valuable context beyond annotations: `null = price not stated or not shown online` clarifies data semantics, and 'Does not book' clarifies the operational boundary. This helps an agent interpret results correctly without contradicting the annotations.

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?

The description is front-loaded with 'Public profile' and uses a compact, dense comma-separated list of fields. The bilingual repetition doubles length without adding information for an English-only agent, but it is still focused and every substantive detail serves a purpose.

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 one-parameter read-only tool with an output schema, the description is complete: it enumerates all major fields, explains null pricing semantics, and clarifies that booking is not performed. Sibling tools and the code source are known from context/schema, so nothing essential 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 description coverage is 100%, and the sole `code` parameter is already well documented in the schema as the doctor's public code from search_doctors. The description adds no parameter-level detail, but given the high schema coverage, the baseline of 3 is appropriate.

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/resource ('Public profile of a professional') and enumerates the exact content: specialty, registration, locations, hours, services with duration/price, rating, and links. The closing 'Does not book' disambiguates it from booking-related actions, and the field list clearly separates it from sibling tools like get_availability or get_visit_types.

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

Usage Guidelines4/5

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

The description makes clear this tool is for retrieving a public practitioner profile and explicitly states what it does not do ('Does not book'). The schema adds that the `code` comes from search_doctors, which implies a workflow. However, the description itself does not explicitly name alternative tools or say when to prefer them.

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