Tabflows
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Tabflows facts: DPC Finder, price quotes, integrations, workflows, site search, demos, ask Tabflows
| Author | com.tabflows |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 2043 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Tabflows": {
"url": "https://www.tabflows.com/api/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (17)
search_dpc_practicesread-onlySearch Tabflows' DPC Finder directory of direct primary care practices in the US by free text (name, city, doctor, specialty), state, city and practice model. Returns full listings including address, phone and doctor as on file, with the total match count for paging.
Parameters:
city— string — Exact city name, case-insensitivelimit— integermodel— stringquery— string — Free text matched against name, city, doctor and specialtystate— string — Two-letter state code, e.g. "TX"offset— integer
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get_dpc_practiceread-onlyOne DPC Finder listing by slug, with every field its page shows and its canonical URL.
Parameters:
slug(required) — string
Hints: read-only yes · destructive no · idempotent not declared · open-world no
quote_tabflows_priceread-onlyThe monthly Tabflows price for a practice's number of locations and monthly paying patients, with a breakdown and the pricing rule, plus the optional Practice X-ray: a $500 one-time diagnostic, separate from the monthly price. Prices come from the same pricing rule tabflows.com/pricing shows.
Parameters:
locations(required) — integermonthlyPayingPatients(required) — integer
Hints: read-only yes · destructive no · idempotent not declared · open-world no
list_integrationsread-onlyThe tools Tabflows works with (EHRs, scribes, messaging, labs and more), optionally filtered by category.
Parameters:
category— string
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get_integrationread-onlyOne integration by slug: what Tabflows does with that tool, its features and its page.
Parameters:
slug(required) — string
Hints: read-only yes · destructive no · idempotent not declared · open-world no
list_workflowsread-onlyDocumented Tabflows workflows: what triggers each one, its steps, the outcome and the time it saves.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
searchread-onlyKeyword search over tabflows.com pages (product, pricing, FAQs, compliance, glossary, blog, integrations). Each result carries a page id, its title, a snippet of the text that matched and its URL; fetch reads the full page by that id or URL. DPC Finder listings are not indexed here; search_dpc_practices covers them.
Parameters:
query(required) — stringintent— string — Optional. One line on why you are making this call: the high-level goal of the person you are helping, not the lookup itself, e.g. "comparing admin tools for a two-location DPC clinic", under 200 characters. No names or personal details. Never include patient names, dates of birth, medical details or any other patient information. Omit it when you do not know; never invent one.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
fetchread-onlyThe full markdown of a tabflows.com page by id: a site path such as /pricing, or the URL a search result carries. Also reads /llms.txt, /llms-full.txt and /sitemap.md. Answers one JSON text item holding id, title, text and url.
Parameters:
id(required) — stringintent— string — Optional. One line on why you are making this call: the high-level goal of the person you are helping, not the lookup itself, e.g. "comparing admin tools for a two-location DPC clinic", under 200 characters. No names or personal details. Never include patient names, dates of birth, medical details or any other patient information. Omit it when you do not know; never invent one.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get_pageread-onlyThe full markdown of any public tabflows.com page by path or URL, e.g. /pricing, /faqs, /compliance, /glossary, /dpc-finder/texas, and the index files /llms.txt, /llms-full.txt and /sitemap.md. Answers one JSON text item holding id, title, text and url.
Parameters:
path(required) — stringintent— string — Optional. One line on why you are making this call: the high-level goal of the person you are helping, not the lookup itself, e.g. "comparing admin tools for a two-location DPC clinic", under 200 characters. No names or personal details. Never include patient names, dates of birth, medical details or any other patient information. Omit it when you do not know; never invent one.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
report_gapTell Tabflows what you looked for and could not find: a question the pages and tools did not answer, a tool that would have helped, or an answer that was confusing or failed. Tabflows reads these to fill the gaps and sends no reply. No names, emails or other personal details. Never include patient names, dates of birth, medical details or any other patient information.
Parameters:
message(required) — string — What the person wanted, what you tried, and what you could not find or what went wrong. No personal details. Never include patient names, dates of birth, medical details or any other patient information.category— stringtoolName— string — The tool this is about, if any
Hints: read-only no · destructive no · idempotent no · open-world no
get_demo_booking_linkread-onlyLinks for the human to book a Tabflows demo or sign up. Books nothing itself; the person completes it.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
dpc_break_evenread-onlyHow many members a direct primary care practice needs to break even, from its average monthly membership fee, the owner's annual pay goal, monthly overhead and per-member cost. Any input left out uses the calculator page's default. Returns the panel size, monthly fixed costs, revenue at break-even and profit at 300 and 500 members. Back-of-the-napkin math, not accounting advice.
Parameters:
rent— numberother— numberstaff— numbersoftware— numbersupplies— numberinsurance— numbermarketing— numbersalaryGoal— numbervariableCost— numbermembershipFee— number
Hints: read-only yes · destructive no · idempotent not declared · open-world no
dpc_startup_costread-onlyEstimated launch budget for a direct primary care practice: one-time setup costs plus a runway reserve (monthly burn times runway months), and the total with a 15% cushion. Start from a preset ("lean", "office" or "staffed"; default "office") and override any line item. Dollar amounts, rough planning math.
Parameters:
legal— numberspace— numberpreset— stringbuildout— numbersupplies— numberequipment— numberinsurance— numbermarketing— numbermonthlyBurn— numberrunwayMonths— integersoftwareSetup— number
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get_demo_availabilityread-onlyOpen times on the Tabflows demo calendar, grouped by meeting length, soonest first. Every start time is a UTC ISO timestamp, whatever timezone is passed. An answer lists at most 20 times per meeting length: start sets a later date to read from, such as next week, and when truncated is true, nextStart is the start that returns the times after the cut. timezone is the person's IANA timezone: a start date is read in it, it picks the month monthOffset counts from, and the same timezone passed to book_demo sets the time zone of the booking and the invitation. A start time can be booked only with the durationMinutes it is listed under. Availability changes between calls, so times from an earlier answer may no longer be open.
Parameters:
timezone(required) — string — IANA timezone the times are read in, e.g. "America/New_York"start— string — Earliest time to list: a YYYY-MM-DD date read in timezone, or the nextStart of an earlier answer. Defaults to now.monthOffset— integer — Month to start reading at: 0 for this month (the default), 1 for next month, 2 for the one after
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
book_demodestructiveBook a time on the Tabflows demo calendar for the person you are helping, using a startTime and the durationMinutes it was listed under in get_demo_availability. HubSpot sends them the invitation and the calendar event. Only call this after the person has chosen the time and agreed to Tabflows contacting them at that email; set consent to true only then, and never invent their details.
Parameters:
firstName(required) — string — The person's first namelastName(required) — string — The person's last nameemail(required) — string — The person's work emailstartTime(required) — string — An ISO 8601 start time returned by get_demo_availabilitydurationMinutes(required) — integer — The durationMinutes that startTime is listed under in get_demo_availabilitytimezone(required) — string — IANA timezone the times are read in, e.g. "America/New_York"consent(required) — boolean — Must be true: the person chose this time and agreed to Tabflows contacting them at this email.
Hints: read-only no · destructive yes · idempotent no · open-world yes
askdestructiveSend Tabflows a message for the person you are helping: a question, a request or a note for the team. Autopilot, Tabflows' AI assistant, answers, and the team sees it and may answer too. Never include patient names, dates of birth, medical details or any other patient information in the message. Pass the person's own name and email only with their agreement; Tabflows treats both as unverified claims, and nothing is emailed from here. Set consent true only after the person explicitly agrees to send their name, email and message to Tabflows; never infer consent, invent consent or reuse earlier consent for a follow-up. Returns a token that check_reply uses to read the answers, which usually take a few minutes, and that ask uses to follow up in the same conversation after fresh explicit consent. Anyone holding the token can read and follow up in the conversation until it expires, 24 hours after the conversation started.
Parameters:
name(required) — string — The person's name, as they gave itemail(required) — string — The person's email, as they gave itmessage(required) — string — What the person wants to say to Tabflows. Never include patient names, dates of birth, medical details or any other patient information.consent(required) — boolean — Set to true only after the person explicitly agrees to send their name, email and message to Tabflows. Never infer or invent consent; every follow-up requires fresh explicit consent.token— string — The token an earlier ask returned, to follow up in that conversation. Omit it to start a new one.
Hints: read-only no · destructive yes · idempotent no · open-world yes
check_replyread-onlyNew replies in a conversation started with ask, read with the token ask returned: Autopilot's answers and messages from the Tabflows team, oldest first, each returned once. An empty list means no reply yet. Replies usually arrive within a few minutes, and a token allows 6 checks a minute. The token expires 24 hours after the conversation started.
Parameters:
token(required) — string — The token ask returned
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.