Feegow MCP by usefulapi

Read clinic appointments, patients and finances; manage bookings and patient registration.

Should I use this

Quality & Safety

A
Description quality
95%
Schema completeness
75%
Naming quality
77%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (4)

  • LOWTool 'feegow_list_professional_insurances' name length outside 3-30 rangein feegow_list_professional_insurances
  • LOWTool 'feegow_list_appointment_statuses' name length outside 3-30 rangein feegow_list_appointment_statuses
  • LOWTool 'feegow_list_appointment_reasons' name length outside 3-30 rangein feegow_list_appointment_reasons
  • LOWTool 'feegow_update_appointment_status' name length outside 3-30 rangein feegow_update_appointment_status

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~7,199Tokens (tool definitions)
~2.1 KBTypical response size
Significant attention impact (5.62% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "feegow": {
      "url": "https://feegow.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://feegow.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (26)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢feegow_list_units

The clinic's main unit (matriz, unidade_id 0) and its branches, with trade name, CNPJ, address and contacts. Use the unit ids to filter other tools. GET /company/list-unity.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_locations

Rooms/locations registered in each unit (id, name, unidade_id). The location id is needed to create appointments. GET /company/list-local.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_specialties(unit_id)

Medical specialties offered, with their default consultation procedure ids and whether they show in online booking. GET /specialties/list.

Input Schema

{
  "type": "object",
  "properties": {
    "unit_id": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991,
      "description": "Unit (branch) id. 0 = the main clinic (matriz). Omit for all units where the endpoint allows it. See feegow_list_units."
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_professionals(active, unit_id, specialty_id)

Doctors and other professionals (names and ids), active or inactive, optionally by unit or specialty. GET /professional/list.

Input Schema

{
  "type": "object",
  "properties": {
    "active": {
      "description": "true (default) = active professionals, false = inactive.",
      "type": "boolean"
    },
    "unit_id": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991,
      "description": "Unit (branch) id. 0 = the main clinic (matriz). Omit for all units where the endpoint allows it. See feegow_list_units."
    },
    "specialty_id": {
      "description": "Only professionals of this specialty (see feegow_list_specialties).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_get_professional(professional_id)

One professional's details and specialties. GET /professional/search.

Input Schema

{
  "type": "object",
  "properties": {
    "professional_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Feegow professional id (see feegow_list_professionals)."
    }
  },
  "required": [
    "professional_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_professional_insurances(professional_id)

Health insurances (convênios) accepted by one professional. GET /professional/insurance.

Input Schema

{
  "type": "object",
  "properties": {
    "professional_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Feegow professional id."
    }
  },
  "required": [
    "professional_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_insurances(unit_id)

All accepted health insurances with their plans. GET /insurance/list.

Input Schema

{
  "type": "object",
  "properties": {
    "unit_id": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991,
      "description": "Unit (branch) id. 0 = the main clinic (matriz). Omit for all units where the endpoint allows it. See feegow_list_units."
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_procedure_types

Procedure types (consultation, exam, surgery, return...) and their ids, used by feegow_list_procedures. GET /procedures/types.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_procedures(procedure_type_id, procedure_id, name, unit_id, specialty_id, ...)

Procedures (consultations, exams...) with price IN CENTS (R$ 12.00 = 1200), duration and online-booking flag. Give a procedure type (see feegow_list_procedure_types) or one procedure id; optionally narrow by name, unit, specialty, professional, patient or price table. GET /procedures/list.

Input Schema

{
  "type": "object",
  "properties": {
    "procedure_type_id": {
      "description": "Procedure type id (feegow_list_procedure_types).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "procedure_id": {
      "description": "One procedure id (use when no type is given).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "name": {
      "description": "Part of the procedure name.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "unit_id": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991,
      "description": "Unit (branch) id. 0 = the main clinic (matriz). Omit for all units where the endpoint allows it. See feegow_list_units."
    },
    "specialty_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "professional_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "patient_id": {
      "description": "Prices for this patient (their price table / insurance).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "price_table_id": {
      "description": "Private price table id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_appointment_statuses

Appointment status ids and names (booked, confirmed, in service, attended, no-show, cancelled...), used to filter and update appointments. GET /appoints/status.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_appointment_reasons

Reasons (motivos) that cancel or reschedule an appointment can carry; the id is required by feegow_cancel_appointment and feegow_reschedule_appointment. GET /appoints/motives.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_booking_channels

Channels an appointment can be booked through (online booking, clinic...). GET /appoints/list-channel.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_patient_sources

Patient acquisition sources (origens) and their ids, used when creating a patient. GET /patient/list-sources.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_appointments(appointment_id, date_from, date_to, professional_id, patient_id, ...)

Appointments in a date range (or one appointment by id), filtered by professional, patient, unit, location, specialty, channel, procedure or status. Paged: pass the previous reply's next_start. Health data: contains patient ids. GET /appoints/search.

Input Schema

{
  "type": "object",
  "properties": {
    "appointment_id": {
      "description": "One appointment id; then the dates are optional.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "date_from": {
      "description": "First day, yyyy-mm-dd. Required unless appointment_id is given.",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "date_to": {
      "description": "Last day, yyyy-mm-dd. Required unless appointment_id is given.",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "professional_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "patient_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "unit_id": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991,
      "description": "Unit (branch) id. 0 = the main clinic (matriz). Omit for all units where the endpoint allows it. See feegow_list_units."
    },
    "location_id": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "specialty_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "channel_id": {
      "description": "Booking channel id (feegow_list_booking_channels).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "procedure_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "status_ids": {
      "description": "Only these statuses (feegow_list_appointment_statuses), e.g. [1, 7] for booked.",
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "is_return": {
      "description": "true = only return visits (retorno).",
      "type": "boolean"
    },
    "start": {
      "description": "Position of the first row (default 0). Use next_start from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    },
    "page_size": {
      "description": "Rows per page, 1-200 (default 50).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_get_available_schedule(kind, specialty_id, procedure_id, date_from, date_to, ...)

Free appointment times for a specialty or a procedure between two dates, optionally for one professional, unit or insurance. Use before feegow_create_appointment. GET /appoints/available-schedule.

Input Schema

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "specialty",
        "procedure"
      ],
      "description": "What to search by: a specialty or a procedure."
    },
    "specialty_id": {
      "description": "Required when kind is specialty.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "procedure_id": {
      "description": "Required when kind is procedure.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "date_from": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "A date, yyyy-mm-dd."
    },
    "date_to": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "A date, yyyy-mm-dd."
    },
    "unit_id": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991,
      "description": "Unit (branch) id. 0 = the main clinic (matriz). Omit for all units where the endpoint allows it. See feegow_list_units."
    },
    "professional_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "insurance_id": {
      "description": "Insurance (convênio) id; see feegow_list_insurances.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "age_from": {
      "description": "Patient's minimum age.",
      "type": "integer",
      "minimum": 0,
      "maximum": 130
    },
    "age_to": {
      "description": "Patient's maximum age.",
      "type": "integer",
      "minimum": 0,
      "maximum": 130
    }
  },
  "required": [
    "kind",
    "date_from",
    "date_to"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_patients(phone, cpf, source_id, changed_since, birthday, ...)

Registered patients, filtered by phone, CPF, source, birthday (dd-mm) or last-changed date. Health data (LGPD): returns names, contacts and CPF. Paged: pass the previous reply's next_offset. GET /patient/list.

Input Schema

{
  "type": "object",
  "properties": {
    "phone": {
      "description": "Phone, digits only.",
      "type": "string",
      "pattern": "^\\d{1,20}$"
    },
    "cpf": {
      "description": "CPF, digits only.",
      "type": "string",
      "pattern": "^\\d{1,11}$"
    },
    "source_id": {
      "description": "Patient source id (feegow_list_patient_sources).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "changed_since": {
      "description": "Only patients changed on this date, yyyy-mm-dd.",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "birthday": {
      "description": "Birthday day and month, dd-mm (e.g. 30-01).",
      "type": "string",
      "pattern": "^(0[1-9]|[12]\\d|3[01])-(0[1-9]|1[0-2])$"
    },
    "include_health_program": {
      "description": "true = include each patient's health program.",
      "type": "boolean"
    },
    "offset": {
      "description": "Rows to skip (default 0).",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    },
    "limit": {
      "description": "Rows per page, 1-200 (default 50).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_get_patient(patient_id, cpf, include_health_program, include_photo_url, fresh)

One patient by id or CPF: name, birth date, contacts, address, insurance. Health data (LGPD). Feegow caches reads for 5 minutes; set fresh=true right after an edit. GET /patient/search.

Input Schema

{
  "type": "object",
  "properties": {
    "patient_id": {
      "description": "Feegow patient id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "cpf": {
      "description": "CPF, digits only (used when no patient_id).",
      "type": "string",
      "pattern": "^\\d{1,11}$"
    },
    "include_health_program": {
      "type": "boolean"
    },
    "include_photo_url": {
      "description": "true = include the patient photo URL.",
      "type": "boolean"
    },
    "fresh": {
      "description": "true = bypass Feegow's 5-minute cache.",
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_patient_dependents(patient_id)

Dependents registered under one patient. Health data (LGPD). GET /patient/list-dependents.

Input Schema

{
  "type": "object",
  "properties": {
    "patient_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "patient_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_proposals(patient_id, date_from, date_to, date_kind)

Treatment/procedure proposals with values in REAIS (R$): for one patient, and/or created (or last changed) in a date range. Give patient_id, or both dates. GET /proposal/list.

Input Schema

{
  "type": "object",
  "properties": {
    "patient_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "date_from": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "A date, yyyy-mm-dd."
    },
    "date_to": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "A date, yyyy-mm-dd."
    },
    "date_kind": {
      "description": "Which date the range filters: created (default) or last changed.",
      "type": "string",
      "enum": [
        "created",
        "changed"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_invoices(direction, date_from, date_to, unit_id, invoice_id, ...)

Financial invoices (contas) in a date range: receivables (C) or payables (D), with value, description, payer/payee, invoice number and payment details. Optionally one unit, invoice or appointment. Financial data. GET /financial/list-invoice.

Input Schema

{
  "type": "object",
  "properties": {
    "direction": {
      "type": "string",
      "enum": [
        "receivable",
        "payable"
      ],
      "description": "receivable = contas a receber (C), payable = contas a pagar (D)."
    },
    "date_from": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "A date, yyyy-mm-dd."
    },
    "date_to": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "A date, yyyy-mm-dd."
    },
    "unit_id": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991,
      "description": "Unit (branch) id. 0 = the main clinic (matriz). Omit for all units where the endpoint allows it. See feegow_list_units."
    },
    "invoice_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "appointment_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "direction",
    "date_from",
    "date_to"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡feegow_create_appointment(patient_id, professional_id, specialty_id, procedure_id, location_id, ...)

WRITE: books a new appointment in the clinic's agenda (not in the past). Check feegow_get_available_schedule first; a taken slot or unknown patient is refused. Feegow may notify the patient (SMS/e-mail/WhatsApp) according to the clinic's own automation settings. valor is in CENTS and must be 0 with insurance. POST /appoints/new-appoint.

Input Schema

{
  "type": "object",
  "properties": {
    "patient_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "professional_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "specialty_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "procedure_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "location_id": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991,
      "description": "Location (room) id; see feegow_list_locations. 0 = default."
    },
    "date": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "Appointment day, yyyy-mm-dd (today or later)."
    },
    "time": {
      "type": "string",
      "pattern": "^([01]\\d|2[0-3]):[0-5]\\d(:[0-5]\\d)?$",
      "description": "Time of day, 24 h, HH:MM or HH:MM:SS."
    },
    "value_cents": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100000000,
      "description": "Price in CENTS (e.g. R$ 550.00 = 55000). Must be 0 when using insurance."
    },
    "insurance_id": {
      "description": "Insurance (convênio) id: set it, with insurance_plan_id, to book under insurance.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "insurance_plan_id": {
      "description": "Plan id of the insurance. Required with insurance_id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "price_table_id": {
      "description": "Private price table id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "channel_id": {
      "description": "Booking channel id (feegow_list_booking_channels).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "is_return": {
      "description": "true = a return visit (retorno).",
      "type": "boolean"
    },
    "notes": {
      "description": "Appointment note.",
      "type": "string",
      "minLength": 1,
      "maxLength": 1000
    },
    "mobile": {
      "description": "Patient mobile phone.",
      "type": "string",
      "minLength": 1,
      "maxLength": 30
    },
    "phone": {
      "description": "Patient phone.",
      "type": "string",
      "minLength": 1,
      "maxLength": 30
    },
    "email": {
      "description": "Patient e-mail.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "required": [
    "patient_id",
    "professional_id",
    "specialty_id",
    "procedure_id",
    "location_id",
    "date",
    "time",
    "value_cents"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴feegow_reschedule_appointment(appointment_id, reason_id, date, time, notes)

WRITE: moves an existing appointment to a new date and time (the old slot is released). A reason id is required (feegow_list_appointment_reasons). Feegow may notify the patient according to the clinic's settings. POST /appoints/reschedule.

Input Schema

{
  "type": "object",
  "properties": {
    "appointment_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "reason_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Reason id from feegow_list_appointment_reasons."
    },
    "date": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "New day, yyyy-mm-dd."
    },
    "time": {
      "type": "string",
      "pattern": "^([01]\\d|2[0-3]):[0-5]\\d(:[0-5]\\d)?$",
      "description": "New time, HH:MM or HH:MM:SS."
    },
    "notes": {
      "description": "Note on the change.",
      "type": "string",
      "minLength": 1,
      "maxLength": 1000
    }
  },
  "required": [
    "appointment_id",
    "reason_id",
    "date",
    "time"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴feegow_cancel_appointment(appointment_id, reason_id, notes)

WRITE: cancels an existing appointment (it cannot be restored through the API; book a new one instead). A reason id is required (feegow_list_appointment_reasons). Feegow may notify the patient according to the clinic's settings. POST /appoints/cancel-appoint.

Input Schema

{
  "type": "object",
  "properties": {
    "appointment_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "reason_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Reason id from feegow_list_appointment_reasons."
    },
    "notes": {
      "description": "Note on the cancellation.",
      "type": "string",
      "minLength": 1,
      "maxLength": 1000
    }
  },
  "required": [
    "appointment_id",
    "reason_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴feegow_update_appointment_status(appointment_id, status_id, notes, arrival_time)

WRITE: sets an appointment's status (for example confirmed, waiting, attended, no-show) and adds a note to the agenda. Status ids: feegow_list_appointment_statuses. To cancel or move an appointment use the cancel/reschedule tools. POST /appoints/statusUpdate.

Input Schema

{
  "type": "object",
  "properties": {
    "appointment_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "status_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "notes": {
      "description": "Note added to the agenda entry.",
      "type": "string",
      "minLength": 1,
      "maxLength": 1000
    },
    "arrival_time": {
      "description": "Arrival time shown in the waiting room (only for the waiting status), HH:MM.",
      "type": "string",
      "pattern": "^([01]\\d|2[0-3]):[0-5]\\d(:[0-5]\\d)?$"
    }
  },
  "required": [
    "appointment_id",
    "status_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡feegow_create_patient(full_name, cpf, no_cpf, birth_date, gender, ...)

WRITE: registers a new patient and returns the patient_id. Feegow does not duplicate: when a patient with the same CPF and birth date (or, without a CPF, the same name plus mobile, e-mail or birth date) exists, that patient's id is returned and nothing is created. Set no_cpf=true for a patient without CPF. Health data (LGPD): only register data the patient gave the clinic. POST /patient/create.

Input Schema

{
  "type": "object",
  "properties": {
    "full_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Full name (max 200 characters)."
    },
    "cpf": {
      "type": "string",
      "pattern": "^\\d{1,11}$",
      "description": "CPF, 11 digits, numbers only."
    },
    "no_cpf": {
      "description": "true = the patient has no CPF (then cpf is ignored).",
      "type": "boolean"
    },
    "birth_date": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "Birth date, yyyy-mm-dd."
    },
    "gender": {
      "type": "string",
      "enum": [
        "M",
        "F"
      ],
      "description": "M or F."
    },
    "social_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Social name."
    },
    "mobile": {
      "type": "string",
      "pattern": "^\\d{1,20}$",
      "description": "Mobile phone, digits only."
    },
    "mobile2": {
      "type": "string",
      "pattern": "^\\d{1,20}$",
      "description": "Second mobile phone, digits only."
    },
    "phone": {
      "type": "string",
      "pattern": "^\\d{1,20}$",
      "description": "Phone, digits only."
    },
    "phone2": {
      "type": "string",
      "pattern": "^\\d{1,20}$",
      "description": "Second phone, digits only."
    },
    "email": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "E-mail."
    },
    "email2": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Second e-mail."
    },
    "address": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Street."
    },
    "number": {
      "type": "string",
      "minLength": 1,
      "maxLength": 30,
      "description": "Street number."
    },
    "complement": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Address complement."
    },
    "district": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "District (bairro)."
    },
    "city": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "City."
    },
    "state": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2,
      "description": "State, two letters (e.g. RJ)."
    },
    "zip": {
      "type": "string",
      "minLength": 1,
      "maxLength": 9,
      "description": "CEP (max 9 characters)."
    },
    "source_id": {
      "description": "Patient source id (feegow_list_patient_sources).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "price_table_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Private price table id."
    },
    "notes": {
      "description": "Note on the patient record.",
      "type": "string",
      "minLength": 1,
      "maxLength": 1000
    },
    "insurance_id": {
      "description": "Insurance (convênio) id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "insurance_plan_id": {
      "description": "Insurance plan id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "insurance_card": {
      "description": "Insurance card number (matrícula).",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "insurance_holder": {
      "description": "Insurance holder's name.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "insurance_valid_until": {
      "description": "Insurance validity, yyyy-mm-dd.",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    }
  },
  "required": [
    "full_name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴feegow_update_patient(patient_id, full_name, cpf, birth_date, gender, ...)

WRITE: changes a patient's registration data. Only the fields you pass are sent; they overwrite stored values. CPF can only be set when absent, never replaced after registration (vendor rejects a different existing CPF). Health data (LGPD). Feegow caches reads for 5 minutes (use fresh=true in feegow_get_patient to see the change). POST /patient/edit.

Input Schema

{
  "type": "object",
  "properties": {
    "patient_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "full_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Full name (max 200 characters)."
    },
    "cpf": {
      "type": "string",
      "pattern": "^\\d{1,11}$",
      "description": "CPF, 11 digits, numbers only."
    },
    "birth_date": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "Birth date, yyyy-mm-dd."
    },
    "gender": {
      "type": "string",
      "enum": [
        "M",
        "F"
      ],
      "description": "M or F."
    },
    "mobile": {
      "type": "string",
      "pattern": "^\\d{1,20}$",
      "description": "Mobile phone, digits only."
    },
    "mobile2": {
      "type": "string",
      "pattern": "^\\d{1,20}$",
      "description": "Second mobile phone, digits only."
    },
    "phone": {
      "type": "string",
      "pattern": "^\\d{1,20}$",
      "description": "Phone, digits only."
    },
    "phone2": {
      "type": "string",
      "pattern": "^\\d{1,20}$",
      "description": "Second phone, digits only."
    },
    "email": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "E-mail."
    },
    "address": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Street."
    },
    "number": {
      "type": "string",
      "minLength": 1,
      "maxLength": 30,
      "description": "Street number."
    },
    "complement": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Address complement."
    },
    "district": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "District (bairro)."
    },
    "city": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "City."
    },
    "state": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2,
      "description": "State, two letters (e.g. RJ)."
    },
    "zip": {
      "type": "string",
      "minLength": 1,
      "maxLength": 9,
      "description": "CEP (max 9 characters)."
    },
    "price_table_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Private price table id."
    }
  },
  "required": [
    "patient_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded26 tools