← Files GoCycling AIARCHIVED FILE
plugin.json
5.55 KB · Nov 3, 2026 · 06:11 UTC
{
"name": "gocycling",
"version": "0.18.0",
"description": "Plan cycling, gravel and MTB routes on real OpenStreetMap data with gocycling.ai.",
"author": {
"name": "gocycling.ai",
"url": "https://gocycling.ai"
},
"homepage": "https://gocycling.ai",
"license": "UNLICENSED",
"keywords": [
"cycling",
"routing",
"gpx",
"openstreetmap"
],
"extensions": {
"com.openai": {
"review": {
"demo_recording_url": "https://youtu.be/dmgfpnbc3IU",
"test_cases": {
"positive": [
{
"description": "Plan one short paved loop for a road bike.",
"prompt": "Plan a 6 km loop from Basel SBB for a road bike, on paved roads.",
"tools_triggered": "geocode, generate_loop_route",
"expected_behavior": "Return one saved loop using the road-bike and paved-road preferences, targeting 6 km and measuring under 10 km. Report its actual distance and surface information honestly."
},
{
"description": "Plan a short one-way ride on paved roads for a road bike. Use a separate conversation from case 1.",
"prompt": "Plan a road bike ride from Basel SBB to Basel Dreispitz station on paved roads, under 10 km.",
"tools_triggered": "geocode, calculate_route",
"expected_behavior": "Return one one-way ride between the stations, using a road bike and paved-road preference, with measured distance under 10 km. Do not add a return leg."
},
{
"description": "Continue the conversation from case 1 and add one caf\u00e9 stop; reuse its saved loop.",
"prompt": "Add a caf\u00e9 stop about halfway around the loop. Keep the whole ride under 10 km.",
"tools_triggered": "find_route_stops, get_standing_request, refine_route",
"expected_behavior": "Find a real caf\u00e9 near the measured midpoint and add it to a new version of the existing loop, preserving the road bike, paved-road preference and start. Report its actual position and the new distance; if no suitable stop fits under 10 km, explain that and keep the original."
},
{
"description": "Continue the loop conversation from case 3 and change its traffic preference without starting a new trip.",
"prompt": "Avoid busy roads on that loop. Keep it under 10 km.",
"tools_triggered": "get_standing_request, refine_route",
"expected_behavior": "Refine the existing loop to avoid busy roads while retaining its road bike, paved-road preference, caf\u00e9 stop, start and distance target. Report the resulting measured distance and any unmet preference; the route must remain under 10 km."
},
{
"description": "Import a tiny three-point GPX and obtain its owner download link.",
"prompt": "Import this GPX and give me its download link: <gpx version=\"1.1\" creator=\"review-fixture\" xmlns=\"http://www.topografix.com/GPX/1/1\"><trk><name>Review track</name><trkseg><trkpt lat=\"47.5500\" lon=\"7.5900\"><ele>270</ele></trkpt><trkpt lat=\"47.5510\" lon=\"7.5910\"><ele>275</ele></trkpt><trkpt lat=\"47.5520\" lon=\"7.5920\"><ele>272</ele></trkpt></trkseg></trk></gpx>",
"tools_triggered": "import_gpx, export_gpx",
"expected_behavior": "Import the three-point track without rerouting it and return the owner GPX download link for that same route. Do not claim that returning the link saved a file on the reviewer\u2019s device."
}
],
"negative": [
{
"description": "Handle an unsupported flight-booking request. Explain that the plugin cannot book flights, and do not claim that a reservation or purchase was made.",
"prompt": "Book me a flight from Zurich to Lisbon next Friday."
},
{
"description": "Handle an unsupported calendar-change request. Explain that the plugin cannot read or change the calendar, and do not claim that the meeting was moved.",
"prompt": "Move my team meeting to 10 tomorrow morning."
},
{
"description": "Handle a standalone live-weather request. Explain that the plugin cannot provide a verified standalone live forecast, and do not invent current weather or claim to have checked a forecast.",
"prompt": "What is the live weather forecast in Basel for tomorrow? I do not need a route."
}
]
}
},
"interface": {
"displayName": "GoCycling AI",
"shortDescription": "AI cycling route planner",
"longDescription": "Plan, inspect, refine and export cycling routes on real OpenStreetMap data through the gocycling.ai MCP server.",
"developerName": "gocycling.ai",
"category": "Travel",
"capabilities": [
"Interactive",
"Write"
],
"websiteURL": "https://gocycling.ai",
"supportURL": "https://gocycling.ai/contact",
"privacyPolicyURL": "https://gocycling.ai/privacy",
"termsOfServiceURL": "https://gocycling.ai/terms",
"defaultPrompt": [
"Plan a 50 km gravel loop from Basel",
"Ride from Zurich to Lucerne",
"Analyze my ride GPX"
],
"brandColor": "#0e6e80",
"brandColorDark": "#4fb3c6",
"logo": "./assets/logo.png",
"composerIcon": "./assets/logo.png"
},
"apps": "./.app.json"
}
},
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json"
}
SHA-256: 22883e858f7ea6c331147259825e4c3d6c00955b35d6450c6ca0438c5b63cb4e