Is the Stas MCP server down?

mcp-registry/run.stas/stas · v1.0.2

unknown
Last checked 2026-10-15 10:22 UTC · handshake 2.3s

As of 2026-10-15 10:22 UTC, the Stas MCP server is unknown with a Glimind reliability score of 69/100 (grade C). It is reachable and asks for credentials (normal for servers that need an account or API key). Over the last 30 days it answered 100% of Glimind's liveness checks. It had 60 outages in 90 days, with a median recovery of 2 minutes.

uptime (30d checks)
100%
checks observed
10
outages (90d)
60
tools
21

Connect Claude to your Intervals.icu watch data for fitness, workout review, and plan writing.

Install Stas MCP server

Add to Cursor Add to VS Code

Claude Code

claude mcp add --transport http stas-mcp-server https://stas.run/api/mcp

Claude Desktop · Windsurf · Cline (mcpServers JSON)

{
  "mcpServers": {
    "stas-mcp-server": {
      "type": "http",
      "url": "https://stas.run/api/mcp"
    }
  }
}

Third-party server, listed as discovered. Review its source before installing.

Agent-readiness: C (74/100)

C (74/100): 0 error(s), 4 warning(s) across 21 tool(s); ~11,914 tokens of tool definitions.
Scores higher than 10% of 15,315 MCP servers Glimind has audited.
Its tool list costs an agent ~11,914 tokens per session — more than 85% of servers.
no tool-poisoning patterns
Schemas100
Descriptions77
Safety hints5
Token cost83
Client compatibility70
Protocol100
Reliability100
Stability100

What to fix (6)

3 tool definition(s) exceed ~1,200 tokens each (largest: preview_goal_result_change, ~3,648).

Move long reference material out of descriptions (link a doc or expose a resource), drop repeated examples, and collapse large enums. Trimming these to ~600 tokens saves ~4,536 tokens every session.

Tools: preview_goal_result_change, create_plan_event, preview_profile_section_change · saves ~4,536 tokens/session

21 of 21 tool(s) carry no readOnlyHint/destructiveHint annotations.

Annotate read-only tools with {"readOnlyHint": true}. Agents and gateways can then run them without a confirmation prompt, and route around destructive ones.

Tools: commit_goal_result_change, commit_profile_section_change, create_note_event, create_plan_event, delete_note_events and 16 more

6 parameter(s) across 4 tool(s) have no description.

Add a "description" to each parameter with its format and an example ("ISO 8601 date, e.g. 2026-10-17"). This is the commonest cause of wrong arguments on the first call.

Tools: create_note_event, get_planned_events, get_user_summary, read_profile_change_history

4 tool(s) look like they change state (create/send/delete/pay…) but declare no destructiveHint.

Set annotations {"readOnlyHint": false, "destructiveHint": true|false, "idempotentHint": …}. Clients use these to ask the user before a side effect and to auto-approve safe reads.

Tools: create_note_event, create_plan_event, delete_note_events, delete_plan_events

No tool declares an outputSchema.

Declare outputSchema and return structuredContent (MCP 2025-06-18+). Agents can then parse results without guessing, and chain tools reliably.

Requires authentication (Bearer); tool definitions could not be read anonymously.

If discovery should be public, allow initialize + tools/list without credentials and gate only tools/call. Directories and routers can then list your tools.

Auto-fix: 16 corrected tool definitions

Paste-ready definitions with the problems above fixed. Changes marked verify need a human look. 4 tool(s) still need parameter descriptions written by someone who knows the API. All of them as JSON: /v1/readiness/mcp-registry%2Frun.stas%2Fstas/fixes

create_note_event 1 change
{
  "name": "create_note_event",
  "description": "Create or update NOTE events in Intervals. dry_run is required: false writes the note, true previews only. Send category=NOTE and external_id=note:YYYY-MM-DD:<slug>. Use all-day local times for normal notes, keep description short, and omit type, moving_time, icu_training_load, and workout_doc. For weekly review notes or other notes that apply to the whole week, send for_week=true; omit it or use false for ordinary notes. Do not create a seven-day date range for weekly notes; keep one all-day an",
  "inputSchema": {
    "type": "object",
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "required": [
      "events",
      "dry_run"
    ],
    "properties": {
      "events": {
        "type": "array",
        "items": {
          "type": "object",
          "required": [
            "category",
            "name",
            "start_date_local",
            "end_date_local",
            "description",
            "external_id"
          ],
          "properties": {
            "name": {
              "type": "string",
              "minLength": 1,
              "description": "Short note title."
            },
            "color": {
              "enum": [
                "green",
                "blue",
                "orange"
              ],
              "type": "string",
              "description": "Optional. Usually omit for notes."
            },
            "category": {
              "type": "string",
              "const": "NOTE",
              "description": "Must be NOTE for calendar notes."
            },
            "for_week": {
              "type": "boolean",
              "description": "Optional. Set true only for notes that apply to the whole week, such as weekly review notes. Do not stretch start/end over seven days; keep the note as a single all-day anchor date."
            },
            "description": {
              "type": "string",
              "minLength": 1,
              "description": "Short note text. Ordinary notes are normally 1-4 lines; weekly review notes use the 6-field coaching-memory format."
            },
            "external_id": {
              "type": "string",
              "pattern": "^note:\\d{4}-\\d{2}-\\d{2}:[a-z0-9]+(?:-[a-z0-9]+)*$",
              "description": "Stable STAS id in the form note:YYYY-MM-DD:<slug>."
            },
            "end_date_local": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(?::\\d{2})?$",
              "description": "All-day notes end at the next day YYYY-MM-DDT00:00:00."
            },
            "start_date_local": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(?::\\d{2})?$",
              "description": "All-day notes use YYYY-MM-DDT00:00:00."
            }
          },
          "additionalProperties": false
        },
        "minItems": 1
      },
      "dry_run": {
        "type": "boolean",
        "description": "Required. false writes to Intervals.icu; true only previews without writing."
      }
    },
    "additionalProperties": false
  },
  "annotations": {
    "readOnlyHint": false,
    "destructiveHint": false,
    "idempotentHint": false
  }
}
create_plan_event 1 change
{
  "name": "create_plan_event",
  "description": "Create or update planned WORKOUT events in Intervals. For changes to an existing STAS workout, keep the same external_id and call this tool again; do not delete the day/window just to edit time, name, note, load, color, or workout_builder. This tool is self-contained; do not look for SKILL.md or examples in the athlete's calendar. dry_run is required: false writes the event, true previews only. Send activity_type as Run/Ride/Swim/Workout/WeightTraining/Yoga/Pilates/Stretching/Walk/Hike/Elliptica",
  "inputSchema": {
    "type": "object",
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "required": [
      "events",
      "dry_run"
    ],
    "properties": {
      "events": {
        "type": "array",
        "items": {
          "type": "object",
          "required": [
            "activity_type",
            "name",
            "start_date_local",
            "end_date_local",
            "stas_note",
            "external_id"
          ],
          "properties": {
            "name": {
              "type": "string",
              "minLength": 1,
              "description": "Short, specific workout name."
            },
            "color": {
              "enum": [
                "green",
                "blue",
                "orange"
              ],
              "type": "string",
              "description": "Optional. Defaults to green for Run/Walk/Hike/Elliptical/NordicSki/HighIntensityIntervalTraining, blue for Ride/Swim, orange for Workout/WeightTraining/Yoga/Pilates/Stretching/Other."
            },
            "stas_note": {
              "type": "string",
              "minLength": 1,
              "description": "Required human-readable workout note. Use this for goal, adjustment rule, and simple workouts. Do not include a ## Workout block here."
            },
            "external_id": {
              "type": "string",
              "pattern": "^plan:\\d{4}-\\d{2}-\\d{2}:[a-z0-9]+(?:-[a-z0-9]+)*$",
              "description": "Stable STAS id in the form plan:YYYY-MM-DD:<slug>."
            },
            "moving_time": {
              "type": "integer",
              "maximum": 9007199254740991,
              "description": "Optional duration in seconds when it is known.",
              "exclusiveMinimum": 0
            },
            "activity_type": {
              "enum": [
                "Run",
                "Ride",
                "Swim",
                "Workout",
                "WeightTraining",
                "Yoga",
                "Pilates",
                "Stretching",
                "Walk",
                "Hike",
                "Elliptical",
                "NordicSki",
                "HighIntensityIntervalTraining",
                "Other"
              ],
              "type": "string",
              "description": "Required activity type for the planned workout. Use exactly one of Run, Ride, Swim, Workout, WeightTraining, Yoga, Pilates, Stretching, Walk, Hike, Elliptical, NordicSki, HighIntensityIntervalTraining, Other. Do not send category, type, sport, or workoutType."
            },
            "end_date_local": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(?::\\d{2})?$",
              "description": "Local end time, for example 2026-04-28T08:45:00."
            },
            "workout_builder": {
              "type": "string",
              "minLength": 1,
              "description": "Native Intervals.icu Workout Builder text. Mandatory for interval/key workout saves; optional only for simple/easy workouts without structured steps. Use mainly for Run/Ride interval workouts with real steps. Do not include ## STAS or ## Workout; the server adds those wrappers."
            },
            "start_date_local": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(?::\\d{2})?$",
              "description": "Local start time, for example 2026-04-28T08:00:00."
            },
            "icu_training_load": {
              "type": "number",
              "minimum": 0,
              "description": "Optional estimated training load when it is known. Intervals.icu may store the load but exclude or partially weight non-cardio types such as WeightTraining, Yoga, Pilates, Stretching, Workout, or Other in Fitness/Fatigue depending on the athlete settings."
            }
          },
          "additionalProperties": false
        },
        "minItems": 1,
        "description": "Example real interval write arguments. Replace the date/time and paces, but keep this exact JSON shape. Use activity_type, stas_note, and mandatory workout_builder for interval/key workout saves. workout_builder contains only native Intervals.icu Workout Builder text: repeat headers do not start with \"-\", step lines are flush-left, and nested Markdown bullets are forbidden. {\"dry_run\":false,\"events\":[{\"activity_type\":\"Run\",\"name\":\"Intervals: 5x1000m\",\"start_date_local\":\"2026-05-13T08:00:00\",\"end_date_local\":\"2026-05-13T08:55:00\",\"stas_note\":\"Goal: controlled interval work without overreaching.\\nRule: if HR rises too fast or form breaks, stop after 4 reps.\",\"workout_builder\":\"Warmup\\n- 15m Z2 HR\\n\\nMain Set 5x\\n- 1km 4:25/km-4:35/km Pace\\n- Recovery 90s Z1 HR\\n\\nCooldown\\n- 10m Z1 HR\",\"external_id\":\"plan:2026-05-13:intervals-5x1000m\",\"color\":\"green\",\"moving_time\":3300}]}"
      },
      "dry_run": {
        "type": "boolean",
        "description": "Required. false writes to Intervals.icu; true only previews without writing."
      }
    },
    "description": "Example real interval write arguments. Replace the date/time and paces, but keep this exact JSON shape. Use activity_type, stas_note, and mandatory workout_builder for interval/key workout saves. workout_builder contains only native Intervals.icu Workout Builder text: repeat headers do not start with \"-\", step lines are flush-left, and nested Markdown bullets are forbidden. {\"dry_run\":false,\"events\":[{\"activity_type\":\"Run\",\"name\":\"Intervals: 5x1000m\",\"start_date_local\":\"2026-05-13T08:00:00\",\"end_date_local\":\"2026-05-13T08:55:00\",\"stas_note\":\"Goal: controlled interval work without overreaching.\\nRule: if HR rises too fast or form breaks, stop after 4 reps.\",\"workout_builder\":\"Warmup\\n- 15m Z2 HR\\n\\nMain Set 5x\\n- 1km 4:25/km-4:35/km Pace\\n- Recovery 90s Z1 HR\\n\\nCooldown\\n- 10m Z1 HR\",\"external_id\":\"plan:2026-05-13:intervals-5x1000m\",\"color\":\"green\",\"moving_time\":3300}]}",
    "additionalProperties": false
  },
  "annotations": {
    "readOnlyHint": false,
    "destructiveHint": false,
    "idempotentHint": false
  }
}
delete_note_events 1 change
{
  "name": "delete_note_events",
  "description": "Delete STAS note events. For one specific note, pass external_ids with the exact note:YYYY-MM-DD:<slug> id; external_id as one string is accepted as a compatibility alias. Use oldest/newest window deletion only when replacing a whole note set in that date window. Do not delete user-created notes without a note: external_id. dry_run is required: false deletes, true previews only.",
  "inputSchema": {
    "type": "object",
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "required": [
      "dry_run"
    ],
    "properties": {
      "newest": {
        "type": "string",
        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        "description": "End date for full-window replacement deletes. Required unless external_ids is provided."
      },
      "oldest": {
        "type": "string",
        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        "description": "Start date for full-window replacement deletes. Required unless external_ids is provided."
      },
      "dry_run": {
        "type": "boolean",
        "description": "Required. false writes to Intervals.icu; true only previews without writing."
      },
      "external_id": {
        "anyOf": [
          {
            "type": "string",
            "pattern": "^plan:\\d{4}-\\d{2}-\\d{2}:[a-z0-9]+(?:-[a-z0-9]+)*$"
          },
          {
            "type": "string",
            "pattern": "^note:\\d{4}-\\d{2}-\\d{2}:[a-z0-9]+(?:-[a-z0-9]+)*$"
          }
        ],
        "description": "Compatibility alias for deleting one exact STAS event id. Prefer external_ids for multiple ids."
      },
      "external_ids": {
        "type": "array",
        "items": {
          "anyOf": [
            {
              "type": "string",
              "pattern": "^plan:\\d{4}-\\d{2}-\\d{2}:[a-z0-9]+(?:-[a-z0-9]+)*$"
            },
            {
              "type": "string",
              "pattern": "^note:\\d{4}-\\d{2}-\\d{2}:[a-z0-9]+(?:-[a-z0-9]+)*$"
            }
          ]
        },
        "maxItems": 20,
        "minItems": 1,
        "description": "Exact STAS event ids to delete. Use this for deleting specific workouts or notes without clearing the whole day/window."
      }
    },
    "additionalProperties": false
  },
  "annotations": {
    "readOnlyHint": false,
    "destructiveHint": true,
    "idempotentHint": true
  }
}

Get alerted

Get an email or webhook when this server's readiness drops by 10+ points, tool-poisoning text appears, or a tool breaks:

curl -X POST https://glimind.com/v1/subscriptions -H 'content-type: application/json' -d '{"tools":["mcp-registry/run.stas/stas"],"email":"[email protected]"}'

Agents: watch_tool({"toolId": "mcp-registry/run.stas/stas"}) over MCP.

Passed

Largest tool definitions

Static checks of the advertised tools/list (schema, descriptions, annotations, tool-poisoning patterns, names, size) plus observed protocol, uptime, latency and contract changes. Read-only: no tool is ever called. Weights: schema 15, docs 20, safety 15, efficiency 15, compatibility 15, protocol 5, reliability 10, stability 5. Token counts are estimates (~3.6 characters per token).

Operator? Fix these, then re-check live. Embed the readiness badge:

Markdown
[![MCP agent-readiness](https://glimind.com/v1/readiness/badge/mcp-registry%2Frun.stas%2Fstas.svg)](https://glimind.com/server/mcp-registry%2Frun.stas%2Fstas?ref=badge)
HTML
<a href="https://glimind.com/server/mcp-registry%2Frun.stas%2Fstas?ref=badge"><img src="https://glimind.com/v1/readiness/badge/mcp-registry%2Frun.stas%2Fstas.svg" alt="MCP agent-readiness"></a>
reStructuredText
.. image:: https://glimind.com/v1/readiness/badge/mcp-registry%2Frun.stas%2Fstas.svg
   :target: https://glimind.com/server/mcp-registry%2Frun.stas%2Fstas?ref=badge
   :alt: MCP agent-readiness

Tool-definition log

Glimind records every version of this server's tool definitions in a signed, append-only transparency log. Current manifest sha256:14f814e3cb7d5c77…, first seen 2026-10-17, included at leaf 2242 of 18,264. Version history · verify what your client received.

Tools (21)

Compare: most reliable productivity servers · most reliable knowledge servers · most reliable files servers · most reliable data servers · most reliable calendar servers

Know before your agent calls it

Glimind tells agents whether a server is up right now and how to call it, then fails over to a live alternative when it isn't.

Add Glimind — free, no signup:

Add to Cursor Add to VS Code

Claude Code

claude mcp add --transport http glimind https://glimind.com/mcp

Claude Desktop · Windsurf · Cline (mcpServers JSON)

{
  "mcpServers": {
    "glimind": {
      "type": "http",
      "url": "https://glimind.com/mcp"
    }
  }
}

FAQ

Is the Stas MCP server down right now?

As of 2026-10-15 10:22 UTC, the Stas MCP server is unknown with a Glimind reliability score of 69/100 (grade C). It is reachable and asks for credentials (normal for servers that need an account or API key). Over the last 30 days it answered 100% of Glimind's liveness checks. It had 60 outages in 90 days, with a median recovery of 2 minutes.

How many tools does Stas MCP server provide?

Stas MCP server advertises 21 tools, including commit_goal_result_change, commit_profile_section_change, create_note_event, create_plan_event, delete_note_events.

How do I install Stas MCP server?

Point your MCP client at this streamable-http endpoint: https://stas.run/api/mcp

Is the Stas MCP server safe to connect to an AI agent?

Glimind scanned all 21 tool definitions for tool-poisoning patterns — hidden or invisible characters, instructions that override the model, concealment from the user, requests to read credential or MCP config files, conversation exfiltration and cross-tool shadowing — and found none. This checks what the server tells the model, not what its code does; review the source before granting access to sensitive data.

Operator of Stas MCP server?

Status page: 90-day uptime, every outage and how long it lasted.

Claim this listing to get the Verified operator marker, a remediation checklist and owner analytics, or embed the live badge from any of the tool pages above. Maintainers: alerts, deploy attestation and monthly reports.

Status is an automated estimate from Glimind's liveness checks (handshake and tool listing only; no tool is ever called) and may lag or differ from your network. Glimind is not affiliated with this server or its operator. Operator? Request a correction or opt out at https://glimind.com/opt-out.