Skip to main content
Glama

Get Notification Counts

getNotificationCounts
Read-onlyIdempotent

Per-type notification counts for the authenticated user's current team. Narrow with unread, and with either severity (counts only that exact severity) or minSeverity (counts that urgency and above) — the two are mutually exclusive and a request carrying both is rejected with 400. Pass the same filters the feed is showing, so the counts describe the list the reader would land on. Requires the Notification Center feature; returns 404 when it is not enabled for the team.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
agentsNoWhen 'mine', only count notifications for agents the authenticated user created (plus connection_broken, which is always counted), so the counts match a feed filtered the same way.
unreadNoIf true, only count unread notifications.
team_idNoDuvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here.
severityNoOnly count notifications with exactly this severity, so the counts match a feed filtered the same way. Mutually exclusive with minSeverity.
minSeverityNoOnly count notifications at or above this urgency, so the counts match a feed filtered the same way. Least to most urgent: success < info < warning < critical. Mutually exclusive with severity.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. First observed

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already cover safety (readOnlyHint=true, idempotentHint=true, destructiveHint=false), so the description's job is to add context beyond that. It delivers: the 400 rejection when severity and minSeverity are combined, the 404 when Notification Center is not enabled, the 'authenticated user's current team' auth scope, and the semantics that counts mirror the feed filters. This is exactly the kind of error-behavior and scoping disclosure that annotations cannot express.

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

Conciseness5/5

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

Three sentences with zero waste: the core purpose is front-loaded in sentence one, filter semantics and the exclusivity constraint follow in sentence two, and the feature prerequisite with its error code closes in sentence three. Every sentence carries distinct information, and the structure mirrors the decision order an agent needs.

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?

For a read-only, zero-required-parameter tool, the combination of rich annotations, 100% schema coverage, and a description covering scope, filter constraints, error cases, and feature requirements is nearly complete; no output schema exists but 'per-type counts' implies the response shape. The only gap is that the description does not explicitly route the agent among the many notification siblings in the toolset, leaving sibling differentiation to the name and the word 'per-type'.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all five parameters in detail, including enum meanings, the urgency ordering for minSeverity, team_id behavior for API keys vs OAuth callers, and the agents const. The description reinforces the mutual-exclusivity of severity/minSeverity and the feed-matching intent, but adds little information the schema doesn't already provide. Per the calibration baseline, 3 is correct when the schema does the heavy lifting.

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

Purpose5/5

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

The description opens with a specific verb+resource+scope: 'Per-type notification counts for the authenticated user's current team.' The phrase 'per-type' distinguishes it from the single-total sibling getUnreadNotificationCount, and the notion of counts (not records) distinguishes it from getNotificationFeed and listNotifications. An agent can tell what this tool produces without inspecting the schema.

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

Usage Guidelines4/5

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

The description gives clear usage context: 'Pass the same filters the feed is showing, so the counts describe the list the reader would land on' tells the agent when this tool is the right choice, and the mutual-exclusivity rule for severity/minSeverity with its 400 rejection is an explicit operational constraint. However, it never names the alternative notification tools (getNotificationFeed, listNotifications, getUnreadNotificationCount) or states a when-not-to-use condition, so routing among siblings relies on inference from tool names.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

B3.1/5.0
Disambiguation2/5

Despite detailed descriptions, many tool names are highly ambiguous, with multiple tools covering the same conceptual actions (e.g., acceptClarityCaptureSuggestion vs. acceptClarityTeamAssignmentSuggestion, or the many deleteClarity*Interview tools). The set is so large that distinguishing between, say, listClarityFolders, listClarityProcesses, and listClarityProcessSummaries requires reading deep into descriptions, reducing agent selection accuracy.

Naming Consistency4/5

The naming convention is predominantly verb_noun (e.g., createClarityProcess, listAgents, deleteQueue), and is remarkably consistent across the 316 tools. There are only minor deviations, such as 'fileSuggestedClarityProcesses' (verb + adjective noun) and 'bulkUpdateCasePriority' (where 'bulk' could be seen as a prefix), but overall the pattern holds strongly.

Tool Count1/5

With 316 tools, this server is extremely oversized for any single agent to manage effectively. The massive number of tools suggests poor modularization—many of these tools likely belong in separate, smaller servers focused on specific domains (e.g., Clarity, Pulse, Agent management). The cognitive load for an agent to choose from 316 options is very high, leading to frequent misselection.

Completeness4/5

The tool surface covers an extraordinarily wide range of operations across the Duvo platform: agents, runs, cases, queues, Clarity processes, skills, integrations, notifications, teams, and more. Most resource types have full CRUD and lifecycle management. Notable minor gaps exist (e.g., no tools for managing specific notification batch severities dynamically, and some interview management is missing batch operations), but for the platform's scope, coverage is impressively thorough.

Resources