# com.spocont/ekkor

> Appointment booking on ekkor.hu: list services, check free slots, book and cancel in four clicks.

- name: com.spocont/ekkor
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 80/100 flags: no-repository
- quality: 100/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.spocont%2Fekkor
- tools: https://api.protogrid.dev/v1/servers/com.spocont%2Fekkor/tools

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

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "ekkor": {
      "type": "http",
      "url": "https://mcp.ekkor.hu"
    }
  }
}
```


## Trust

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

## Quality 100/100 (new)

### protocol: 100 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- pass `protocol.list_ttl`: tool list is cacheable (ttlMs 3600000)

### 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`: 6 of 6 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 1,450 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

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

- n/a `stability.changes`, `stability.rug_pull`: tool history recorded for 0 of the 7 days needed

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

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

- tools: 6, about 1,450 tokens to load them all
- tool set hash: e107a420024fb9ac601b67ec474fcb16
- badge: [![protogrid quality](https://protogrid.dev/badge/com.spocont/ekkor.svg)](https://protogrid.dev/servers/com.spocont/ekkor)
- 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://mcp.ekkor.hu (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (6)

- `booboooking_book`: Book an appointment on booboooking.com (free OR paid services — payment is always in cash at the appointment, no online payment). For customer_name and customer_email, use the signed-in user's profile from your host app — do NOT ask them to retype. Always ask for customer_phone separately (it is not in the sign-in profile). customer_phone MUST be in international E.164 format starting with `+` and country code (e.g. `+36201234567`), no spaces/dashes — convert local-format numbers before calling this tool or the booking will fail validation. On success the response includes `id` and `pin` (MUST remember paired, for cancellation) and optionally `cash_due: { amount, currency }` — if present, remind the user to bring that amount in cash.
- `booboooking_cancel`: Cancel a reservation on booboooking.com. Requires the reservation_id AND pin that were returned from the original booboooking_book call — both are needed as proof of booking ownership. If the user asks to cancel but you do not have the pin in your conversation state, you MUST ask them for it — you cannot cancel without it. Never invent or guess a pin.
- `booboooking_check_availability`: Check available time slots for a provider and service on booboooking.com. Returns available dates with slots — each slot has a "time" field (use this for booboooking_book) and a "display" field (show this to the user). Use this before booking.
- `booboooking_find_next_available`: Search forward for the next available appointment slots for a provider and service on booboooking.com. Returns up to `count` openings sorted chronologically. Useful when you need "the next available appointment" without a specific date in mind.
- `booboooking_get_booking`: Retrieve a booking by its reservation ID. Requires the PIN from the original booking response to prove ownership. Returns full booking details including payment state if the reservation was created via the payment flow.
- `booboooking_list_services`: List available services for a provider on booboooking.com. Returns service names, IDs, duration, and price. Call this first to find the service ID needed for availability and booking.
