← Files GoCycling AIARCHIVED FILE

.codex-plugin/plugin.json

5.39 KB · Nov 3, 2026 · 06:11 UTC

↓ Download file

{
  "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"
  ],
  "skills": "./skills/",
  "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"
  },
  "mcpServers": "./.mcp.json",
  "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é stop; reuse its saved loop.",
              "prompt": "Add a café 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é 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é 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’s 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."
            }
          ]
        }
      }
    }
  }
}

SHA-256: d1d00b6bcde7731aea07377282b8a36bfcba4c6dfe66eead8b4af9396d508396