docs(mcp): name the upcoming periods in the get_cycle description

The cycle read returns the projected period starts after the next one,
each with its band, under upcoming; the tool description for MCP clients
and the Coach did not say so.
This commit is contained in:
Marc-André Bombeck committed 2026-11-07 01:33:19 +01:00
1 parent 31997e3232
commit 2adea7052b
5 files changed
+9 -4

No files matched your search

@@ -184,7 +184,7 @@
},
{
"name": "get_cycle",
"description": "Fetch the user's menstrual-cycle context: current phase + day-of-cycle, the next predicted event, and the headline phase-correlation finding. Descriptive only — never a contraception-grade or 'safe day' claim. Returns { present: false } when cycle tracking is off or there is no data.",
"description": "Fetch the user's menstrual-cycle context: current phase + day-of-cycle, the next predicted event, the upcoming period starts after it (`upcoming`: each a likely start with its earliest-to-latest band, widening and self-capped), and the headline phase-correlation finding. Descriptive only — never a contraception-grade or 'safe day' claim. Returns { present: false } when cycle tracking is off or there is no data.",
"parameters": {
"type": "object",
"additionalProperties": false,
+1 -1
View File
@@ -366,7 +366,7 @@ export const COACH_TOOL_DEFS: AiToolDef[] = [
{
name: "get_cycle",
description:
"Fetch the user's menstrual-cycle context: current phase + day-of-cycle, the next predicted event, and the headline phase-correlation finding. Descriptive only — never a contraception-grade or 'safe day' claim. Returns { present: false } when cycle tracking is off or there is no data.",
"Fetch the user's menstrual-cycle context: current phase + day-of-cycle, the next predicted event, the upcoming period starts after it (`upcoming`: each a likely start with its earliest-to-latest band, widening and self-capped), and the headline phase-correlation finding. Descriptive only — never a contraception-grade or 'safe day' claim. Returns { present: false } when cycle tracking is off or there is no data.",
parameters: {
type: "object",
additionalProperties: false,
@@ -1844,7 +1844,7 @@
{
"name": "get_cycle",
"title": "Get menstrual cycle",
"description": "Fetch the user's menstrual-cycle context: current phase + day-of-cycle, the next predicted event, and the headline phase-correlation finding. Descriptive only — never a contraception-grade or 'safe day' claim. Gated on cycle tracking being enabled for the account; returns { present: false } when cycle tracking is off or there is no data.",
"description": "Fetch the user's menstrual-cycle context: current phase + day-of-cycle, the next predicted event, the upcoming period starts after it (`upcoming`: each a likely start with its earliest-to-latest band, widening and self-capped), and the headline phase-correlation finding. Descriptive only — never a contraception-grade or 'safe day' claim. Gated on cycle tracking being enabled for the account; returns { present: false } when cycle tracking is off or there is no data.",
"inputSchema": {
"type": "object",
"properties": {}
+5
View File
@@ -326,6 +326,11 @@ describe("MCP tool registry — surface", () => {
}
});
it("tells a client that get_cycle returns the upcoming periods", () => {
const def = MCP_TOOLS.find((t) => t.name === "get_cycle");
expect(def?.description).toContain("`upcoming`");
});
it("annotates every tool read-only / closed-world (cloud-connector requirement)", () => {
for (const def of MCP_TOOLS) {
expect(def.annotations.readOnlyHint).toBe(true);
+1 -1
View File
@@ -6,7 +6,7 @@ export const getCycleTool: McpToolDefinition = {
name: "get_cycle",
title: "Get menstrual cycle",
description:
"Fetch the user's menstrual-cycle context: current phase + day-of-cycle, the next predicted event, and the headline phase-correlation finding. Descriptive only — never a contraception-grade or 'safe day' claim. Gated on cycle tracking being enabled for the account; returns { present: false } when cycle tracking is off or there is no data.",
"Fetch the user's menstrual-cycle context: current phase + day-of-cycle, the next predicted event, the upcoming period starts after it (`upcoming`: each a likely start with its earliest-to-latest band, widening and self-capped), and the headline phase-correlation finding. Descriptive only — never a contraception-grade or 'safe day' claim. Gated on cycle tracking being enabled for the account; returns { present: false } when cycle tracking is off or there is no data.",
inputShape: {},
annotations: READ_ONLY_ANNOTATIONS,
outputShape: coachReadOutput,