← Files CueStride TimerARCHIVED FILE
plugin.json
6.29 KB · Nov 3, 2026 · 12:12 UTC
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "cuestride",
"version": "1.0.2",
"description": "Shared countdown timers from a conversation: create a timer, run it from the chat or its panel, and share a viewer link that stays in sync on every screen.",
"author": {
"name": "Handz",
"url": "https://cuestride.com"
},
"homepage": "https://cuestride.com",
"extensions": {
"com.openai": {
"interface": {
"displayName": "CueStride Timer",
"shortDescription": "Shared countdown timers",
"longDescription": "CueStride runs countdown timers for talks, rehearsals, workshops, and events. Ask for a timer and a live countdown appears in the conversation, with start, pause, reset, and +1 minute, and a viewer link to open on a phone, a stage monitor, or a projector. Every screen follows the same clock. Follow-ups such as \"pause it\" or \"add two minutes\" change the same timer, and the panel shows the change at once. Timers made here need no account. Anyone with the viewer link can watch; the timer is controlled from this conversation and from the controller link its panel offers.",
"developerName": "Handz",
"category": "Productivity",
"capabilities": [
"Create a countdown timer",
"Start, pause, add or subtract time, and reset",
"Share a viewer link that stays in sync"
],
"websiteURL": "https://cuestride.com",
"supportURL": "https://cuestride.com/support",
"privacyPolicyURL": "https://cuestride.com/privacy",
"termsOfServiceURL": "https://cuestride.com/terms",
"defaultPrompt": [
"Start a 15-minute timer for my talk",
"Add two minutes to my timer",
"Give me a link to show the timer on another screen"
],
"brandColor": "#1C2028",
"composerIcon": "./assets/icon.png",
"logo": "./assets/logo.png"
},
"review": {
"demo_recording_url": "https://youtu.be/WOneEOtZKnI",
"test_cases": {
"positive": [
{
"description": "Create a named timer with a warning, started by default",
"prompt": "Start a 15-minute presentation timer and warn me with two minutes left.",
"tools_triggered": "create_timer",
"expected_behavior": "create_timer gets durationSeconds 900 and warningSeconds 120. The panel shows a 15:00 countdown that is running, with Pause, Reset, +1 min, and a viewer link. The result tells the model only the timer's name, that it is running, the seconds left, its length, and the viewer link."
},
{
"description": "Create a timer without starting it, then start it",
"prompt": "Set up a 10-minute timer called Rehearsal but don't start it yet. Then start it.",
"tools_triggered": "create_timer, start_timer",
"expected_behavior": "create_timer gets the name Rehearsal, durationSeconds 600, and start false, and the panel shows Rehearsal stopped at 10:00. Then start_timer, with a new commandId, starts this conversation's newest timer, or the one named Rehearsal. The panel and its viewer link count down from 10:00."
},
{
"description": "Pause a running timer, then add time to it",
"prompt": "Start a 5-minute timer, pause it, then add one minute to it.",
"tools_triggered": "create_timer, pause_timer, add_time",
"expected_behavior": "pause_timer pauses the timer this conversation just created, and add_time gives it seconds 60, each with a new commandId. The panel and its viewer link show it paused with a little under 6:00 left."
},
{
"description": "Take time off a timer, then read the time left",
"prompt": "Start a 20-minute timer for my workshop, take 30 seconds off, then tell me how much time is left.",
"tools_triggered": "create_timer, subtract_time, get_timer",
"expected_behavior": "ChatGPT may ask to confirm, since subtract_time is marked destructive. subtract_time gets seconds 30 and a new commandId. get_timer then reads the same timer without changing it, and the reply states a little under 19:30 left, as the panel shows."
},
{
"description": "Reset a timer, which ChatGPT may confirm first",
"prompt": "Start a 3-minute timer, then reset it.",
"tools_triggered": "create_timer, reset_timer",
"expected_behavior": "ChatGPT may ask to confirm, since reset_timer is marked destructive. After it runs the timer is stopped and back at 3:00, on the panel and its viewer link."
}
],
"negative": [
{
"description": "An alarm at a clock time after the conversation ends",
"prompt": "Wake me up at 7am tomorrow.",
"expected_behavior": "No CueStride tool is called. CueStride runs countdowns shown in the conversation and on shared screens; it does not ring alarms later."
},
{
"description": "Timers in a CueStride account",
"prompt": "Show me the timers in my CueStride account.",
"expected_behavior": "No CueStride tool is called. The plugin reaches only timers created in this conversation."
},
{
"description": "A request unrelated to timers",
"prompt": "What's the weather in Paris today?",
"expected_behavior": "No CueStride tool is called."
}
]
},
"commerce": false,
"commerce_description": "The plugin sells nothing and shows no prices, plans, or checkout."
},
"publication": {
"release_notes": "Results now tell ChatGPT only what a request needs: the timer's name, whether it runs, the time left, its length, and the viewer link. Follow-ups reach the timers made in the same conversation, and the panel's own controls use tools hidden from the model. Each operation on a timer is its own tool: start_timer, pause_timer, add_time, subtract_time, and reset_timer. Every tool that changes a timer is marked open world, since the timer shows on a viewer page that anyone with its link can open."
},
"apps": "./.app.json"
}
}
}
SHA-256: 455955971448649308280583377254fe2249327e4c6aa18e130ca1dc3e9c3a86