Doctoreto

io.github.sepehr071v0.1.1Updated Oct 6, 2026

Unofficial read-only Doctoreto: Iranian doctors, visit fees, free appointment times, clinics, labs.

Overview

AI-generated overview

Read-only search of Doctoreto for Iranian doctors, visit fees, free appointment times, clinics, labs and clinic offers.

What it does
Provides 14 read-only tools that query the public Doctoreto endpoints: doctor search by speciality, city, neighborhood, gender, insurance and visit type; doctor profiles with office and online service fees, deposits and next free time; free appointment slots per day up to 31 days ahead; reviews without reviewer names; hospitals, clinics, labs, imaging and pharmacies; fixed-price clinic offers; and health magazine articles. Results are compact structured JSON.
When to use it
Useful when you want an assistant to find a suitable Iranian doctor or center, compare visit and online consultation fees, check the soonest free appointment times, or look up clinic procedure prices and 24-hour pharmacies. Booking itself still happens on the Doctoreto website.
Requirements
Runs locally over stdio; needs uv (uvx doctoreto-mcp) or pip install doctoreto-mcp. No account, API key or login. Outbound HTTPS access to api.doctoreto.com and doctoreto.com is required; an optional DOCTORETO_MCP_PROXY environment variable sets an HTTP proxy for every request.
Before you install
Read-only by design: no login, booking, payment or chat endpoints are called, and the agent returns a page link for booking. No phone numbers or reviewer names are returned. Prices are in Toman and change often; dates are Gregorian with Tehran local times. Unofficial and unaffiliated with Doctoreto, relying on public endpoints that can change without notice; it gives information, not medical advice.

Installation

In SourceWeft

  1. Open Doctoreto in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

[doctoreto-mcp: let your AI agent compare visit fees and free times on Doctoreto]

🩺 doctoreto-mcp

Let your AI agent find the right doctor on Doctoreto.
Search Iranian doctors by speciality, city, neighborhood and visit type, compare visit fees,
see free appointment times, read reviews, and find hospitals, labs and clinic offers, all from Claude, Cursor or Copilot.

[PyPI] [Python] [CI] [MCP Registry] [License: MIT]

[Install in Cursor] [Install in VS Code]

Quick start · What it can do · Tools · FAQ · فارسی


Why

On Doctoreto (doctoreto.com) a doctor card shows a name and a rating, but the things you decide on are a few clicks deeper: which offices the doctor has, what the visit costs at the office (often hidden on the page), what a phone or video consultation costs, and when the next free time actually is. An agent with doctoreto-mcp reads the search, the doctor's services and the slot picker, and hands you the booking link:

You: A cardiologist in Pasdaran, Tehran, as soon as possible. What does the visit cost?

Agent: calls dt_search_doctors(city="tehran", speciality="cardiologist", neighborhood="pasdaran", has_free_slot=True) → dt_doctor(doctor="xqbEWZ") → dt_free_slots(consultation_id=1943, days=7)

ServiceFeePaid when bookingNext free
Office visit, Pasdaran250,0000Tue 6 Oct, 10:00 (25 free times that day)
Phone call, 15 minutes750,000750,000Tue 6 Oct, 10:00

دکتر کامبیز پرآذران, subspecialist in cardiology: 408 reviews, 92% recommend, about 36 minutes wait at the office. The office fee is paid at the office. Book here: https://doctoreto.com/doctor/dr-kambiz-parazaran/xqbEWZ

Real tool output from 2026-10-06; prices and free times change all the time. Prices are in Toman.

What it can do

  • 🔎 Find doctors by speciality, city, neighborhood, name, gender, insurance and visit type (office, phone, text, video, instant)
  • ⏱️ Soonest first: sort by the earliest free slot, by popularity or by number of bookings; search near a point
  • 💰 Real prices: office visit fee (also when the site hides it), online consultation prices, deposits
  • 📅 Free times: free appointment times per day for any office or online service, up to a month ahead
  • ⭐ Reviews: stars, recommend rate, waiting time, per-category averages; reviewer names are never returned
  • 🏥 Centers: hospitals, clinics, laboratories, imaging, pharmacies (24h, state/private, map search), hours and insurances
  • 🏷️ Clinic offers: fixed-price procedures (ultrasound, echo, laser, check-ups) with deposits and free times
  • 📖 Health magazine: background articles on conditions and tests
  • 🔒 Read-only by design: no login, no booking, no payment; the agent gives you the link to book

Quick start

You need uv.

Claude Code
bash
claude mcp add doctoreto -- uvx doctoreto-mcp
Claude Desktop

Settings → Developer → Edit Config, then add:

json
{  "mcpServers": {    "doctoreto": { "command": "uvx", "args": ["doctoreto-mcp"] }  }}
Cursor

Click Install in Cursor above, or add the Claude Desktop block to ~/.cursor/mcp.json.

VS Code (Copilot agent mode)

Click Install in VS Code above, or add to .vscode/mcp.json:

json
{  "servers": {    "doctoreto": { "type": "stdio", "command": "uvx", "args": ["doctoreto-mcp"] }  }}
Anything else

It's a standard stdio MCP server: run uvx doctoreto-mcp, or pip install doctoreto-mcp and run doctoreto-mcp.

Then just ask:

  • "A female dermatologist in Shiraz with a free slot this week, and her visit fee?"
  • "Which pediatricians offer a video call today, and how much is it?"
  • "A 24-hour pharmacy near Vanak Square."
  • "How much is an echocardiography at a Doctoreto clinic in Tehran, and when is the next free time?"
  • یک متخصص گوش و حلق و بینی در محدوده سعادت‌آباد با بیمه تامین اجتماعی

How it works

text
  AI agent  (Claude, Cursor, Copilot, ...)      │      │  MCP over stdio      ▼  doctoreto-mcp  (runs on your machine)      │      │  HTTPS (JSON)      ├──────▶  api.doctoreto.com   (doctors, slots, reviews, centers, offers)      └──────▶  doctoreto.com/blog   (health magazine)

doctoreto-mcp runs locally and calls the same public endpoints the Doctoreto website uses. There's no hosted server in between, no API key, and nothing about you is sent anywhere else.

Tools

Doctors, centers and offers are identified by a 6-character id (xqbEWZ, the last part of doctoreto.com/doctor/dr-kambiz-parazaran/xqbEWZ); every tool also accepts the page URL itself.

🔎 Find a doctor (6)
ToolWhat it does
dt_suggestFree phrase → matching doctors, speciality slugs, service tags and centers
dt_search_doctorsDoctors by city, speciality, neighborhood, name, gender, insurance, visit type, free slot; sorting
dt_specialitiesSpeciality list with the slugs the search needs
dt_citiesCity slug and id; cities that have a speciality, with doctor counts
dt_neighborhoodsNeighborhoods of a city and nearby cities, with doctor counts
dt_insurancesBasic and supplementary insurers with their ids
🩺 One doctor (3)
ToolWhat it does
dt_doctorProfile, every office and online service with fee, deposit, address and next free time, review summary
dt_free_slotsFree appointment times per day for one service (office, phone, video, offer, lab), up to 31 days
dt_reviewsReviews of a doctor, center or offer: stars, text, labels, waiting time, replies (no names)
🏥 Centers (2)
ToolWhat it does
dt_search_centersHospitals, clinics, labs, imaging, pharmacies by city, type, 24h, state/private, or near a point
dt_centerOne center: hours, departments, insurances, lab rules, bookable services, doctors
🏷️ Clinic offers and reading (3)
ToolWhat it does
dt_search_offersFixed-price procedures and packages by text, city, speciality, price range, doctor or place
dt_offerOne offer: price, deposit, provider, terms, variants with their free times
dt_health_articlesDoctoreto health magazine articles on a condition, test or treatment

All 14 tools are annotated readOnlyHint: true and return compact structured JSON, so they don't flood the agent's context.

Good to know

  • Prices are in Toman. For an office visit fee is what you pay at the office and pay_online_now what is charged when booking (usually 0). For phone, text and video fee is the online price. A null fee means the doctor lists none.
  • Use dt_doctor for online prices. The search list and the profile show a phone price three times the one on the booking page; dt_doctor reads the booking box, which matches the page.
  • Dates are Gregorian YYYY-MM-DD (1405-07-22 = 2026-10-14); times are Tehran local. Jalali dates are given next to them.
  • Booking happens on the site. It needs an SMS code, so the agent finds the doctor and time and gives you the page link.
  • Insurance: few doctors list insurances, so insurance_ids narrows a search a lot. Centers list theirs in dt_center; the center search ignores insurance filters.
  • Reviews: doctor and center reviews come newest first, offer reviews oldest first; each review date is the Tehran day, as on the page.
  • Search pages hold exactly limit doctors, also when the site mixes sponsored doctors in.
  • Privacy: no phone numbers and no reviewer names are returned.
  • Checked against the website: on 2026-10-06 every tool's output was compared with the live doctoreto.com pages (names, fees, free times per day, review order, search totals and order, centers, offers).

FAQ

Can it book an appointment for me?

No, and that's deliberate. It has no login and never calls the booking, payment, review or chat endpoints. The agent finds the doctor, the service and a free time; you book on doctoreto.com with your own phone number.

"slug alone cannot be resolved"

Doctoreto's API needs the 6-character id, not the name slug. Paste the whole page URL (https://doctoreto.com/doctor/<slug>/<id>), or let the agent search by the doctor's Persian name.

Do I need an Iranian IP?

No geo block was seen: direct calls and calls through a proxy in Turkey both worked (2026-10-06). Cloud servers were not tested; if Doctoreto blocks one, set DOCTORETO_MCP_PROXY.

A search returns 0 doctors

The filters may be too narrow (an insurance plus a neighborhood often is). Drop a filter, or check the slugs with dt_suggest, dt_specialities or dt_neighborhoods. An unknown city or speciality slug returns an error.

Claude Desktop says uvx is not found

Use the full path to uvx (where uvx on Windows, which uvx on macOS/Linux) as command.

How do I debug what the agent sees?
bash
npx @modelcontextprotocol/inspector uvx doctoreto-mcp

Configuration

VariableDefaultMeaning
DOCTORETO_MCP_PROXYunsetHTTP proxy for every request, e.g. http://user:pass@host:port

فارسی

doctoreto-mcp به دستیار هوش مصنوعی شما (Claude، Cursor، Copilot و ...) اجازه می‌دهد در دکترتو پزشک مناسب را بر اساس تخصص، شهر، محله، بیمه و نوع ویزیت (حضوری، تلفنی، متنی، تصویری) پیدا کند، هزینه ویزیت و زمان‌های خالی نوبت را ببیند، نظرات بیماران را بخواند و بیمارستان، آزمایشگاه و خدمات دکترتو کلینیک را هم جست‌وجو کند.

  • فقط خواندنی است: وارد حساب نمی‌شود، نوبت رزرو نمی‌کند و پرداخت نمی‌کند؛ لینک صفحه پزشک را برای رزرو می‌دهد.
  • همه قیمت‌ها به تومان است.
  • شماره تلفن و نام نظردهندگان را برنمی‌گرداند.
  • روی سیستم خود شما اجرا می‌شود و به هیچ سرور واسطی داده نمی‌فرستد.

نصب در Claude Code:

bash
claude mcp add doctoreto -- uvx doctoreto-mcp

بعد بپرسید: «یک متخصص قلب در پاسداران تهران با نزدیک‌ترین نوبت خالی، با هزینه ویزیت»

Development

bash
git clone https://github.com/sepehr071/doctoreto-mcp && cd doctoreto-mcpuv syncuv run pytest            # offline, against recorded responsesuv run pytest -m live    # real APIsuv run ruff check .

Tools live in src/doctoreto_mcp/search.py, doctor.py, centers.py, offers.py and info.py; each is a typed async function with a docstring that tells the agent when to use it. Issues and PRs are welcome, especially new tools and fixes for API changes.

Releases: bump the version in pyproject.toml and server.json, then push a v* tag. GitHub Actions tests, publishes to PyPI and the MCP Registry, and creates the GitHub Release.

Disclaimer

Unofficial and not affiliated with or endorsed by Doctoreto. It uses the public endpoints of the doctoreto.com website, which can change without notice. It gives information, not medical advice. Please keep request rates reasonable.

License

MIT

Source: README.md at commit 456b682

Tools

0
Tool metadata has not been indexed yet.

Version history

1
  1. v0.1.1LatestOct 6, 2026