# Kaleto

> Find kids' enrichment providers (sports, swim, dance, arts, STEM, camps) in 39 US regions.

- name: ai.kaleto/mcp
- version: 1.0.1
- connection class: R0 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 94/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/ai.kaleto%2Fmcp
- tools: https://api.protogrid.dev/v1/servers/ai.kaleto%2Fmcp/tools

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

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "kaleto": {
      "type": "http",
      "url": "https://api.kaleto.ai/mcp"
    }
  }
}
```


## Trust

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

## Quality 94/100 (new)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### 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`: 4 of 4 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 817 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 4 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: 4, about 817 tokens to load them all
- tool set hash: fe03499dc8b83bfd0f7522e1e22ce300
- badge: [![protogrid quality](https://protogrid.dev/badge/ai.kaleto/mcp.svg)](https://protogrid.dev/servers/ai.kaleto/mcp)
- 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://api.kaleto.ai/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (4)

- `get_provider`: Get the current provider record using a UUID returned by search_providers. Does not verify current offerings or availability.
- `list_regions`: List supported region IDs and their included city/state addresses. Regions may overlap; these are not distance or service-area boundaries.
- `open_provider_explorer`: Open provider exploration with current records for up to 25 unique UUIDs returned by discovery. Omit provider_ids to start without results; pass [] only after a successful search with no matches. Preserves supplied order without reranking. A missing record fails the whole request. This does not save a list, verify suitability, or make a booking.
- `search_providers`: Search current enrichment provider records by natural-language interests in a required region: pass the place the family names (city, neighborhood or area) or a region ID. Jev maps it onto a covered region in parallel with the activities, and the response region is the region searched; call list_regions only after LOCATION_UNSUPPORTED. Location words in the query are not used for filtering. Jev maps the query onto specific activities, PostgreSQL retrieves up to 120 providers in the region tagged with those activities, and Jev ranks them by relevance. Returns selected_types, relevance scores and limitations; does not verify program availability. All callers share the same search rate and concurrency limits. Search text is processed by Jev; operational search analytics are stored. Do not include child names or private details.
