Skip to main content
Glama

get_profile

Read-only

Verify which mailbox and server build are connected before bulk actions, or when a documented field seems missing. Returns account email, message counts, version and install path.

Instructions

Return the authorized account: email address plus total message/thread counts, and WHICH SERVER is answering: serverVersion (the bare version ONLY for a release build; anything else names its commit, e.g. 0.23.0+a5ff4a7, +a5ff4a7.dirty when built from uncommitted sources, +unknown when the build left no record), build (commit, dirty, release, builtAt; absent when unknown), serverPath (the directory the running code was loaded from — an npm install, an npx cache or a clone's dist/) and account (the named mailwarden account, or (default)). USE WHEN: confirming WHICH mailbox is connected before a bulk or filter action, as a cheap liveness check, or when a tool or field documented for a version seems missing — serverVersion says whether the running build is the one you think, and serverPath which install it is. DO NOT USE: to enumerate messages — this returns only counts, not a listing (use search). SIDE EFFECTS: none.

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": "get_profile"
  }
}

Input Schema

NameRequiredDescriptionDefault

No arguments

Output Schema

NameRequiredDescriptionDefault
buildNo
accountYes
historyIdYes
serverPathYes
emailAddressYes
threadsTotalYes
messagesTotalYes
serverVersionYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changedv0.25.0
    • addedOutput schema / properties / account
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / build
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "builtAt": {
      +      "type": "string"
      +    },
      +    "commit": {
      +      "type": "string"
      +    },
      +    "dirty": {
      +      "type": "boolean"
      +    },
      +    "release": {
      +      "type": "boolean"
      +    }
      +  },
      +  "required": [
      +    "commit",
      +    "dirty",
      +    "release",
      +    "builtAt"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / serverPath
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / serverVersion
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "emailAddress",
      -  "messagesTotal",
      -  "threadsTotal",
      -  "historyId"
      -]New value: +[
      +  "emailAddress",
      +  "messagesTotal",
      +  "threadsTotal",
      +  "historyId",
      +  "serverVersion",
      +  "serverPath",
      +  "account"
      +]
  2. Changed2 schema fields changedv0.18.0
    • addedOutput schema / properties / historyId
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "emailAddress",
      -  "messagesTotal",
      -  "threadsTotal"
      -]New value: +[
      +  "emailAddress",
      +  "messagesTotal",
      +  "threadsTotal",
      +  "historyId"
      +]
  3. Addedv0.6.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false; the description goes well beyond by declaring 'SIDE EFFECTS: none' and explaining the semantics of version suffixes (+commit, .dirty, +unknown) and when `build` is absent — genuinely interpretable context the schema cannot convey.

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

Conciseness4/5

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

Front-loaded with the return payload, then USE WHEN / DO NOT USE / SIDE EFFECTS in scannable order. The long parenthetical about version-string formats is slightly verbose, but each variant (+a5ff4a7, .dirty, +unknown) carries real interpretive value, so it earns most of its space.

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

Completeness5/5

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

An output schema exists, so return values need not be exhaustively restated, yet the description covers purpose, timing, exclusions, and side effects for a zero-parameter read tool. Nothing an agent needs to decide whether to call it is missing.

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

Parameters4/5

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

Zero parameters, so the baseline is 4; there is nothing to disambiguate. The description spends its word budget on return-value semantics instead, which is the right allocation given no inputs exist.

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?

States the specific verb and resource (return the authorized account plus server identity) and enumerates exactly what comes back: email, counts, serverVersion, build, serverPath, account. It is unmistakably distinct from siblings like search or list_labels, which the DO NOT USE clause reinforces.

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

Usage Guidelines5/5

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

Explicit USE WHEN scenarios (confirming which mailbox before a bulk/filter action, cheap liveness check, diagnosing a missing tool/field by version) and an explicit DO NOT USE that routes the agent to `search` for message enumeration. Alternatives and the condition selecting them are named.

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