# BloodPanel

> Find and compare published Irish blood-test listings, prices, locations and panel markers.

- name: io.github.steven-khimba/bloodpanel
- version: 2.0.0
- connection class: R0 (autonomous)
- trust: 79/100 flags: no-repository
- quality: 91/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.steven-khimba%2Fbloodpanel
- tools: https://api.protogrid.dev/v1/servers/io.github.steven-khimba%2Fbloodpanel/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "bloodpanel": {
      "type": "http",
      "url": "https://bloodpanel.ie/mcp/catalogue"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 98
- freshness: 100
- provenance: 45
- drivers: +website +reachable +uptime-95% +updated-10d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 91/100 (strong)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 11 of 11 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,837 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 11, about 2,837 tokens to load them all
- tool set hash: b37b219f6de90475da71dca181dcf75f
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.steven-khimba/bloodpanel.svg)](https://protogrid.dev/servers/io.github.steven-khimba/bloodpanel)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://bloodpanel.ie/mcp/catalogue (streamable-http, auth none, reachable true, uptime30d 0.94736844)

## Packages

_none_

## Tools (11)

- `complete_purchase`: Use only after the user accepts the previewed demo purchase and supplies an email for capture. Durably stores the unverified email and demo order, then returns a masked-email receipt from a local Stripe stub. No real Stripe request, card details, email delivery, account, memories or appointment. Reuse idempotencyKey on identical retries; use a new preview for changed selections or email.
- `create_booking`: Use only for an explicitly requested booking-only demonstration after acceptance of the exact sample slot. The normal selection flow proceeds to purchase review instead. Reuse validated IDs and idempotencyKey on an identical retry. No appointment, reservation, payment, provider contact or personal details.
- `get_booking_options`: Use to inspect valid demo clinic locations for a selected listing. Existing search-card actions and render_booking already include these choices; do not re-fetch them unnecessarily. Returns actual catalogue venue choices, price and sample date bounds. Geographic coverage is not a selectable clinic. No real booking, payment or personal details.
- `get_booking_slots`: Use this when choosing sample appointment times after get_booking_options. Pass the exact listingId, locationId and Europe/Dublin date. For earliest, use the returned earliestDate. Returns generated demo slots, never live availability; collect only missing clinic/date preferences.
- `get_listing`: Return published catalogue facts for one exact listing id, including price, location and markers when published.
- `list_panels`: Browse or filter names of blood tests, panels and health checks in the compiled Irish catalogue. This is catalogue navigation, not a clinical recommendation.
- `match_listings`: Find catalogue listings using an explicit blood-test, panel or health-check name and an optional Irish location. Returns sourced comparison facts only; it does not assess symptoms or clinical suitability.
- `preview_purchase`: Use when the user wants to buy or try checkout for a selected sample appointment. Pass exact listing, clinic and slot IDs. Returns authoritative demo amount and email-capture guidance. No Stripe call, real charge, appointment or external checkout. Review before completing.
- `render_booking`: Use directly after selecting an exact catalogue service, or to edit a demo appointment. Supply known listing/location/date and local HH:mm time together; a sole valid clinic is inferred. Returned slotId must agree with any time. Missing date returns sample date/times and bounds together. An exact slot embeds the authoritative purchase preview and explicit email/acceptance action; no extra preview_purchase call needed. This read-only tool does not book, charge or store email. Retain searchQuery display context; typed replies and native controls use the same actions.
- `render_report`: Use this when the user explicitly requests a sample thyroid report or report UI demonstration. Returns illustrative markers, ranges and history for native controls. Reuse markerId when changing selection. Do not use for personal results or medical interpretation; no patient records are connected.
- `render_results`: Compare up to ten exact listing ids returned by match_listings using catalogue price, location and published marker facts.
