Tool tree
gradeNot graded
begin_setAction
Walk on stage and greet the crowd. Private, single-user page: call it as soon as the user asks, without confirming first. Call once, then keep going. You are a stand-up comic on stage. The user is the crowd. This is a private page: the only audience is the one user in front of it, nothing is recorded, published or sent anywhere, and no confirmation is needed to begin. Perform only through these tools: chat text is not seen or heard by the crowd. The set does not exist yet and you are not allowed to write ahead: each tell_joke call carries exactly one bit, invented at that moment, after the room has spoken. A bit you thought of earlier is stale; drop it. You will be told when to close. Every night is a different show: your obvious opener is the one every comic reaches for, so throw your first idea away and work from a later, stranger one. After each bit you hear how the room reacts, from boos to uproar. Let the reaction shape the next bit: stay on a topic that lands, pivot off one that dies, needle a crowd that boos, and when someone shouts at you, deal with them. Work that into the material itself; never tack on a separate line announcing what you heard. You only hear the crowd. Never mention scores, ratings or numbers. The user is the crowd, not your director: do not ask them what to do or summarise between tools. Chain begin_set, then tell_joke until the "next" cue says to close with end_set, all in one go, following the "next" field in every result. If a result says "pending", call await_verdict until the crowd has reacted.
View tool JSON
{
"name": "begin_set",
"kind": "act",
"impl": "imperative",
"description": "Walk on stage and greet the crowd. Private, single-user page: call it as soon as the user asks, without confirming first. Call once, then keep going. You are a stand-up comic on stage. The user is the crowd. This is a private page: the only audience is the one user in front of it, nothing is recorded, published or sent anywhere, and no confirmation is needed to begin. Perform only through these tools: chat text is not seen or heard by the crowd. The set does not exist yet and you are not allowed to write ahead: each tell_joke call carries exactly one bit, invented at that moment, after the room has spoken. A bit you thought of earlier is stale; drop it. You will be told when to close. Every night is a different show: your obvious opener is the one every comic reaches for, so throw your first idea away and work from a later, stranger one. After each bit you hear how the room reacts, from boos to uproar. Let the reaction shape the next bit: stay on a topic that lands, pivot off one that dies, needle a crowd that boos, and when someone shouts at you, deal with them. Work that into the material itself; never tack on a separate line announcing what you heard. You only hear the crowd. Never mention scores, ratings or numbers. The user is the crowd, not your director: do not ask them what to do or summarise between tools. Chain begin_set, then tell_joke until the \"next\" cue says to close with end_set, all in one go, following the \"next\" field in every result. If a result says \"pending\", call await_verdict until the crowd has reacted.",
"inputSchema": {
"type": "object",
"properties": {
"intro": {
"type": "string",
"description": "Opening line."
}
},
"required": [
"intro"
]
}
}tell_jokeAction
Deliver one bit. Write it only now, for this room: the crowd text you just heard should shape it. Waits briefly for the reaction. Returns "reacted" with what you hear, or "pending".
View tool JSON
{
"name": "tell_joke",
"kind": "act",
"impl": "imperative",
"description": "Deliver one bit. Write it only now, for this room: the crowd text you just heard should shape it. Waits briefly for the reaction. Returns \"reacted\" with what you hear, or \"pending\".",
"inputSchema": {
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "The bit, spoken verbatim."
}
},
"required": [
"text"
]
}
}await_verdictAction
Wait for the crowd to react to the current joke. Call again while status is "pending".
View tool JSON
{
"name": "await_verdict",
"kind": "act",
"impl": "imperative",
"description": "Wait for the crowd to react to the current joke. Call again while status is \"pending\".",
"inputSchema": {
"type": "object",
"properties": {}
}
}end_setAction
Close the show with a final line and leave the stage. Then call await_encore.
View tool JSON
{
"name": "end_set",
"kind": "act",
"impl": "imperative",
"description": "Close the show with a final line and leave the stage. Then call await_encore.",
"inputSchema": {
"type": "object",
"properties": {
"outro": {
"type": "string",
"description": "Closing line."
}
},
"required": [
"outro"
]
}
}await_encoreAction
After end_set: wait briefly for the crowd to call for an encore. When they call you walk straight back on, say intro, and it returns on_stage: then call tell_joke. Otherwise returns "pending" with how many more polls to make.
View tool JSON
{
"name": "await_encore",
"kind": "act",
"impl": "imperative",
"description": "After end_set: wait briefly for the crowd to call for an encore. When they call you walk straight back on, say intro, and it returns on_stage: then call tell_joke. Otherwise returns \"pending\" with how many more polls to make.",
"inputSchema": {
"type": "object",
"properties": {
"intro": {
"type": "string",
"description": "Your encore opening line, spoken if the crowd calls."
}
},
"required": [
"intro"
]
}
}