Skip to main content
Glama

show_dashboard

Read-onlyIdempotent

Displays per-platform practice progress, prioritized due revisions, mistake heatmaps, memory and FSRS accuracy insights, plus live linked-account stats in an interactive dashboard.

Instructions

Show the user's progress per platform, the revisions due now ordered by how likely they are to be forgotten, a heatmap of mistakes by label and tag, and what the history says about their memory: recall per tag now and two weeks out, which mistakes stopped recurring, problems rated easy then failed, and how well FSRS's predictions matched, plus live stats for each account linked with link_account. Hosts that support MCP Apps render it as an interactive dashboard.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "show_dashboard"
  }
}

Input Schema

NameRequiredDescriptionDefault
daysNo
limitNo

Output Schema

NameRequiredDescriptionDefault
dueYes
accountsNo
insightsYes
patternsYes
progressYes
next_stepsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed12 schema fields changedv0.3.0
    • addedOutput schema / $defs / AccountStats
      Added value: +{
      +  "description": "Where the user stands on a platform they linked, read live from its API.",
      +  "properties": {
      +    "error": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Error"
      +    },
      +    "handle": {
      +      "title": "Handle",
      +      "type": "string"
      +    },
      +    "least_practised": {
      +      "items": {
      +        "$ref": "#/$defs/TagCount"
      +      },
      +      "title": "Least Practised",
      +      "type": "array"
      +    },
      +    "levels": {
      +      "additionalProperties": {
      +        "type": "integer"
      +      },
      +      "title": "Levels",
      +      "type": "object"
      +    },
      +    "limitations": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "title": "Limitations",
      +      "type": "array"
      +    },
      +    "platform": {
      +      "title": "Platform",
      +      "type": "string"
      +    },
      +    "strongest": {
      +      "items": {
      +        "$ref": "#/$defs/TagCount"
      +      },
      +      "title": "Strongest",
      +      "type": "array"
      +    },
      +    "struggling": {
      +      "items": {
      +        "$ref": "#/$defs/TagCount"
      +      },
      +      "title": "Struggling",
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "platform",
      +    "handle"
      +  ],
      +  "title": "AccountStats",
      +  "type": "object"
      +}
    • addedOutput schema / $defs / CalibrationBin
      Added value: +{
      +  "properties": {
      +    "high": {
      +      "title": "High",
      +      "type": "number"
      +    },
      +    "low": {
      +      "title": "Low",
      +      "type": "number"
      +    },
      +    "predicted": {
      +      "title": "Predicted",
      +      "type": "number"
      +    },
      +    "recalled": {
      +      "title": "Recalled",
      +      "type": "number"
      +    },
      +    "reviews": {
      +      "title": "Reviews",
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "low",
      +    "high",
      +    "reviews",
      +    "predicted",
      +    "recalled"
      +  ],
      +  "title": "CalibrationBin",
      +  "type": "object"
      +}
    • addedOutput schema / $defs / Insights
      Added value: +{
      +  "properties": {
      +    "calibration": {
      +      "items": {
      +        "$ref": "#/$defs/CalibrationBin"
      +      },
      +      "title": "Calibration",
      +      "type": "array"
      +    },
      +    "forecast": {
      +      "items": {
      +        "$ref": "#/$defs/TopicForecast"
      +      },
      +      "title": "Forecast",
      +      "type": "array"
      +    },
      +    "horizon_days": {
      +      "title": "Horizon Days",
      +      "type": "integer"
      +    },
      +    "overconfidence": {
      +      "items": {
      +        "$ref": "#/$defs/OverconfidentReview"
      +      },
      +      "title": "Overconfidence",
      +      "type": "array"
      +    },
      +    "recovery": {
      +      "items": {
      +        "$ref": "#/$defs/MistakeRecovery"
      +      },
      +      "title": "Recovery",
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "horizon_days",
      +    "forecast",
      +    "recovery",
      +    "overconfidence",
      +    "calibration"
      +  ],
      +  "title": "Insights",
      +  "type": "object"
      +}
    • addedOutput schema / $defs / MistakeRecovery
      Added value: +{
      +  "properties": {
      +    "clean_reviews_since": {
      +      "title": "Clean Reviews Since",
      +      "type": "integer"
      +    },
      +    "kind": {
      +      "title": "Kind",
      +      "type": "string"
      +    },
      +    "last_seen": {
      +      "format": "date",
      +      "title": "Last Seen",
      +      "type": "string"
      +    },
      +    "times": {
      +      "title": "Times",
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "kind",
      +    "times",
      +    "last_seen",
      +    "clean_reviews_since"
      +  ],
      +  "title": "MistakeRecovery",
      +  "type": "object"
      +}
    • addedOutput schema / $defs / NextStep
      Added value: +{
      +  "properties": {
      +    "detail": {
      +      "title": "Detail",
      +      "type": "string"
      +    },
      +    "kind": {
      +      "title": "Kind",
      +      "type": "string"
      +    },
      +    "title": {
      +      "title": "Title",
      +      "type": "string"
      +    },
      +    "url": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Url"
      +    }
      +  },
      +  "required": [
      +    "kind",
      +    "title",
      +    "detail"
      +  ],
      +  "title": "NextStep",
      +  "type": "object"
      +}
    • addedOutput schema / $defs / OverconfidentReview
      Added value: +{
      +  "properties": {
      +    "forgot_at": {
      +      "format": "date-time",
      +      "title": "Forgot At",
      +      "type": "string"
      +    },
      +    "platform": {
      +      "title": "Platform",
      +      "type": "string"
      +    },
      +    "problem_id": {
      +      "title": "Problem Id",
      +      "type": "string"
      +    },
      +    "rated_easy_at": {
      +      "format": "date-time",
      +      "title": "Rated Easy At",
      +      "type": "string"
      +    },
      +    "title": {
      +      "title": "Title",
      +      "type": "string"
      +    },
      +    "url": {
      +      "title": "Url",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "platform",
      +    "problem_id",
      +    "title",
      +    "url",
      +    "rated_easy_at",
      +    "forgot_at"
      +  ],
      +  "title": "OverconfidentReview",
      +  "type": "object"
      +}
    • addedOutput schema / $defs / TagCount
      Added value: +{
      +  "properties": {
      +    "count": {
      +      "title": "Count",
      +      "type": "integer"
      +    },
      +    "tag": {
      +      "title": "Tag",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "tag",
      +    "count"
      +  ],
      +  "title": "TagCount",
      +  "type": "object"
      +}
    • addedOutput schema / $defs / TopicForecast
      Added value: +{
      +  "properties": {
      +    "problems": {
      +      "title": "Problems",
      +      "type": "integer"
      +    },
      +    "recall_later": {
      +      "title": "Recall Later",
      +      "type": "number"
      +    },
      +    "recall_now": {
      +      "title": "Recall Now",
      +      "type": "number"
      +    },
      +    "tag": {
      +      "title": "Tag",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "tag",
      +    "problems",
      +    "recall_now",
      +    "recall_later"
      +  ],
      +  "title": "TopicForecast",
      +  "type": "object"
      +}
    • addedOutput schema / properties / accounts
      Added value: +{
      +  "items": {
      +    "$ref": "#/$defs/AccountStats"
      +  },
      +  "title": "Accounts",
      +  "type": "array"
      +}
    • addedOutput schema / properties / insights
      Added value: +{
      +  "$ref": "#/$defs/Insights"
      +}
    • addedOutput schema / properties / next_steps
      Added value: +{
      +  "items": {
      +    "$ref": "#/$defs/NextStep"
      +  },
      +  "title": "Next Steps",
      +  "type": "array"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "progress",
      -  "due",
      -  "patterns"
      -]New value: +[
      +  "progress",
      +  "due",
      +  "patterns",
      +  "insights"
      +]
  2. Addedv0.2.0

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is covered. The description adds two pieces of real behavioral context — host-dependent interactive rendering and a dependency on accounts linked via link_account — but says nothing about cost, data volume, or how far back it scans, which matters for a tool surfacing 'live stats' and full history.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The key framing ('Show the user's progress per platform') is front-loaded, which is good, but the remainder is one long run-on sentence piling up subordinate clauses and a trailing sibling reference. It is dense and hard to scan rather than wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so explaining return values is not strictly required — yet the description spends most of its length enumerating section contents, partially duplicating that schema. The MCP Apps rendering note is genuinely useful context; the missing piece is selection guidance against overlapping siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for two parameters (days, limit with default 15 and max 100), and the description does not mention either. An agent cannot tell that 'days' windows the history or that 'limit' truncates the per-section lists.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The verb 'Show' plus 'dashboard' and an enumerated inventory (progress per platform, revisions due, mistake heatmap, memory history) makes it clear this is a composite overview view. However, it never distinguishes itself from siblings that cover the same ground individually (progress, revisions_due, list_mistakes), so an agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use statement, and no alternative is named despite heavy overlap with progress, revisions_due, and mistake_patterns. The only conditional mentioned ('Hosts that support MCP Apps render it as an interactive dashboard') concerns rendering, not tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.