{"serverId":"mcp-registry/com.monopoly-gold.planner/mcp","tools":[{"name":"goal-add-criterion","fixed":{"name":"goal-add-criterion","description":"Append an acceptance criterion to a goal. The text must describe an observable check over an artifact (e.g. \"GET /api/health returns 200 with {status:ok}\"), not a subjective approval. Each criterion has a class: pre-merge (default — proved in CI / by attached evidence) or post-deploy (proved by an executable probe against the deployed prod instance). A post-deploy criterion MUST carry probeSpec {method, url, expect:{http_code, body:{field: expectedValue}}} — the request the runner sends and the ","inputSchema":{"type":"object","required":["goalId","text"],"properties":{"text":{"type":"string","description":"Формулировка критерия"},"goalId":{"type":"string","description":"UUID цели"},"position":{"type":"integer","default":null,"description":"Позиция (default = append в конец)"},"probeSpec":{"default":null,"properties":{"url":{"type":"string","description":"Absolute http(s) URL the runner requests on the deployed instance"},"expect":{"type":"object","properties":{"body":{"type":"object","additionalProperties":true},"http_code":{"type":"integer","maximum":599,"minimum":100}},"description":"What the response must contain: http_code (exact) and/or body (subset of fields with expected scalar values; nested objects = nested fields; \"{{deployed_revision}}\" = SHA of the revision that triggered the probe)"},"method":{"enum":["GET","HEAD"],"type":"string","description":"HTTP method of the probe request"}},"description":"Исполнимая проба post-deploy критерия: {method: GET|HEAD|POST|PUT|PATCH|DELETE, url: абсолютный http(s), expect: {http_code: 200, body: {field: expectedValue, nested: {field: value}}}}. Ожидаемые значения фиксируются сейчас; единственная подстановка времени прогона — \"{{deployed_revision}}\" (SHA развёрнутой ревизии). Пример: {\"method\":\"GET\",\"url\":\"https://planner.monopoly-gold.com/api/healthz\",\"expect\":{\"http_code\":200,\"body\":{\"status\":\"ok\",\"revision\":\"{{deployed_revision}}\"}}}","type":"string"},"probeClass":{"enum":["pre-merge","post-deploy",null],"type":"string","default":null,"description":"Класс критерия: pre-merge (default; доказывается в CI / приложенным evidence) или post-deploy (доказывается исполнимой пробой против прода; требует probeSpec)"},"visualEvidenceSuggested":{"type":"boolean","default":false,"description":"True only when this AC accepts Planner's visual-AC advisory"}}},"annotations":{"readOnlyHint":false,"idempotentHint":false}},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: probeSpec. Change to number/boolean/array where that's what you accept.","verify":true}],"tokensBefore":664,"tokensAfter":669},{"name":"goal-update-criterion","fixed":{"name":"goal-update-criterion","description":"Update an acceptance criterion: its text and/or its class + probe. probeClass=post-deploy requires an executable probeSpec {method, url, expect:{http_code, body}} (kept from the criterion when omitted and one already exists; otherwise error=probe_required); probeSpec alone implies post-deploy; probeClass=pre-merge drops the probe. Grove mode: only while goal is in backlog (frozen once started), quality linter blocks high-severity issues. Standard mode: until goal is done, linter is advisory. Ret","inputSchema":{"type":"object","required":["criterionId"],"properties":{"text":{"type":"string","default":null,"description":"New criterion text (omit to keep)"},"probeSpec":{"default":null,"properties":{"url":{"type":"string","description":"Absolute http(s) URL the runner requests on the deployed instance"},"expect":{"type":"object","properties":{"body":{"type":"object","additionalProperties":true},"http_code":{"type":"integer","maximum":599,"minimum":100}},"description":"What the response must contain: http_code (exact) and/or body (subset of fields with expected scalar values; nested objects = nested fields; \"{{deployed_revision}}\" = SHA of the revision that triggered the probe)"},"method":{"enum":["GET","HEAD"],"type":"string","description":"HTTP method of the probe request"}},"description":"Исполнимая проба post-deploy критерия: {method, url, expect: {http_code, body: {field: expectedValue}}}; \"{{deployed_revision}}\" в ожидаемых значениях = SHA развёрнутой ревизии. Пример: {\"method\":\"GET\",\"url\":\"https://planner.monopoly-gold.com/api/healthz\",\"expect\":{\"http_code\":200,\"body\":{\"status\":\"ok\",\"revision\":\"{{deployed_revision}}\"}}}","type":"string"},"probeClass":{"enum":["pre-merge","post-deploy",null],"type":"string","default":null,"description":"Класс критерия: pre-merge (доказывается в CI / приложенным evidence; сбрасывает пробу) или post-deploy (доказывается исполнимой пробой против прода; требует probeSpec — свой или уже сохранённый)"},"criterionId":{"type":"string","description":"UUID acceptance criterion"}}},"annotations":{"readOnlyHint":false,"idempotentHint":true}},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: probeSpec. Change to number/boolean/array where that's what you accept.","verify":true}],"tokensBefore":584,"tokensAfter":588}],"toolsChanged":2,"tokensSaved":0,"todo":[{"tool":"goal-resolve-escalation","params":["overrideResolvedBy"]},{"tool":"goal-start-iteration-tracking","params":["goalId"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}