heart-routes

Heart-shaped GPS running routes in 200+ cities — charity, gift, memorial, anniversary.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
100%
Integridad del esquema
99%
Calidad de los nombres
100%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~1,189Tokens (definiciones de herramientas)
~1.0 KBTamaño de respuesta típico
Impacto moderado en la atención (0.93% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "heart-routes": {
      "url": "https://zhenwiaphfwetckfysod.supabase.co/functions/v1/mcp"
    }
  }
}

Puntos de conexión remotos

https://zhenwiaphfwetckfysod.supabase.co/functions/v1/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (7)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢find_heart_route_in_city(city, max_distance_km, prefer_gold)

Find an existing heart-shaped running route in a given city. Returns up to 5 AI-validated routes matching the city (and optionally a target distance). Use this when a user mentions a city and wants a heart route — e.g. "find me a heart-shaped route in Paris" or "I want to run a heart in Tokyo for my mum's birthday".

Esquema de entrada

{
  "type": "object",
  "properties": {
    "city": {
      "type": "string",
      "description": "City name, e.g. \"Paris\", \"Tokyo\", \"New York\". Case-insensitive."
    },
    "max_distance_km": {
      "type": "number",
      "description": "Optional max route length in kilometres. Filter to routes ≤ this distance. Common: 5, 10, 15, 21 (half-marathon)."
    },
    "prefer_gold": {
      "type": "boolean",
      "description": "If true, return only the highest AI-quality \"gold\" tier routes (ai_score >= 80). Default true.",
      "default": true
    }
  },
  "required": [
    "city"
  ]
}
🟢get_route_details(slug)

Get full details for a specific heart route by its slug. Use after find_heart_route_in_city when the user picks one. Returns: city, distance, image URL, share URL, dedication (if any), and the GPX download deep-link.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "Route slug, e.g. \"paris-7-2-km-heart-for-marie\"."
    }
  },
  "required": [
    "slug"
  ]
}
🟢list_supported_cities(limit)

List cities that have at least one heart route available. Use when the user asks "where can I run a heart?" or hasn't picked a city yet. Returns city names + route counts, sorted by inventory size.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "number",
      "description": "Max number of cities to return. Default 25, max 100.",
      "default": 25
    }
  }
}
⚪generate_heart_route(city, distance_km, dedication, in_memory, cause_url)

Start a new heart-shaped route for a given city. Returns existing AI-validated matches from inventory PLUS a deep-link to the live builder for an on-demand fresh generation with the user's exact dedication and cause. Use when the user explicitly wants a NEW heart, or when an existing match is "close enough but not personal yet". Optional dedication / cause_url pre-fill the builder fields, so the URL deep-link arrives configured.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "city": {
      "type": "string",
      "description": "City name, e.g. \"Paris\", \"Tokyo\"."
    },
    "distance_km": {
      "type": "number",
      "description": "Target route length in km (3–25). Default 7.",
      "default": 7
    },
    "dedication": {
      "type": "string",
      "description": "Optional person/cause name to bake into the heart (appears in the GPX, on Garmin Connect, and as the Strava activity title prefix)."
    },
    "in_memory": {
      "type": "boolean",
      "description": "If true, the dedication is framed as a memorial (\"In memory of [name]\"). Default false."
    },
    "cause_url": {
      "type": "string",
      "description": "Optional JustGiving / GoFundMe / Leetchi URL to embed in the GPX metadata. CityHeart never touches the money — the link is for the runner's Strava description to surface to donors."
    }
  },
  "required": [
    "city"
  ]
}
🟡add_dedication(name, in_memory, city)

Compose a builder URL with a dedication pre-filled — the name shows on the runner's GPS watch and in the Strava activity title. Use after the user picks a route (find/generate) and decides who the heart is for. Pure URL builder, no server-side state.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Dedication name (e.g. \"Marie\", \"Dad\", \"Cancer Research UK\")."
    },
    "in_memory": {
      "type": "boolean",
      "description": "If true, framed as \"In memory of [name]\". Default false."
    },
    "city": {
      "type": "string",
      "description": "Optional city to also pre-fill in the builder (skips the \"pick a city\" step in the chat-to-product handoff)."
    }
  },
  "required": [
    "name"
  ]
}
🟡add_cause(fundraising_url, city)

Compose a builder URL with a fundraising link pre-filled — the URL is embedded into the GPX metadata (description, filename) so it surfaces in the runner's Strava activity after they sync. CityHeart never collects the donation; the runner's donors click straight through to JustGiving / GoFundMe / Leetchi / etc.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "fundraising_url": {
      "type": "string",
      "description": "Fully-qualified donation URL (https://www.justgiving.com/... / https://gofundme.com/... / https://leetchi.com/... / https://www.helloasso.com/...)."
    },
    "city": {
      "type": "string",
      "description": "Optional city to also pre-fill."
    }
  },
  "required": [
    "fundraising_url"
  ]
}
🟢export_gpx(slug)

Return the GPX download / checkout URL for a specific public route. The download itself happens on cityheart.run after a one-time €7.99 payment (Stripe — CityHeart never charges through the chat). Use after the user has picked a final route (find / get_details) and confirms they want it.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "Route slug, e.g. \"paris-7-2-km-heart-for-marie\"."
    }
  },
  "required": [
    "slug"
  ]
}

Prompts recomendados

search_research
Search for information about [topic] using heart-routes
Herramientas esperadas: find_heart_route_in_city
find_specific
Find [specific item] using heart-routes
Herramientas esperadas: find_heart_route_in_city
retrieve_data
Get details about [item] from heart-routes
Herramientas esperadas: get_route_details
fetch_info
Fetch [information type] using heart-routes
Herramientas esperadas: get_route_details
list_items
List all [items] available in heart-routes
Herramientas esperadas: list_supported_cities

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada7 herramientas
verificadoversión no registrada7 herramientas