Skip to main content
Glama

get_circle

Read-only

Get a Circle by ID. Returns the Circle including its members and per-member channel presence booleans (an identifier is NEVER returned — SEC-PM-006).

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

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

Input Schema

NameRequiredDescriptionDefault
idYesCircle ID

Output Schema

NameRequiredDescriptionDefault
idYesMongoDB ObjectId
nameYes
statusYesLifecycle state of a Circle (archived = soft-retired)
membersYes
user_idYes
created_atYes
owner_nameYesHow this Circle's members know its owner; null when unset
profile_idYes
updated_atYes
environmentYes
member_countYes
proof_me_enabledYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": {},
      +  "description": "A Circle — a named group of trusted contacts",
      +  "properties": {
      +    "created_at": {
      +      "type": "string"
      +    },
      +    "environment": {
      +      "type": "string"
      +    },
      +    "id": {
      +      "description": "MongoDB ObjectId",
      +      "type": "string"
      +    },
      +    "member_count": {
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "members": {
      +      "items": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "enrolled_at": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "enrolled_phone_hint": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "has_telegram": {
      +            "type": "boolean"
      +          },
      +          "has_whatsapp": {
      +            "type": "boolean"
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "last_verified_at": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "mesh_opt_out": {
      +            "type": "boolean"
      +          },
      +          "mesh_opted_in": {
      +            "type": "boolean"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "status": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "name",
      +          "status",
      +          "has_telegram",
      +          "has_whatsapp",
      +          "mesh_opted_in",
      +          "mesh_opt_out",
      +          "enrolled_phone_hint",
      +          "enrolled_at",
      +          "last_verified_at"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "name": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "owner_name": {
      +      "description": "How this Circle's members know its owner; null when unset",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "profile_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "proof_me_enabled": {
      +      "type": "boolean"
      +    },
      +    "status": {
      +      "description": "Lifecycle state of a Circle (archived = soft-retired)",
      +      "type": "string"
      +    },
      +    "updated_at": {
      +      "type": "string"
      +    },
      +    "user_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "id",
      +    "user_id",
      +    "name",
      +    "owner_name",
      +    "profile_id",
      +    "environment",
      +    "proof_me_enabled",
      +    "status",
      +    "member_count",
      +    "members",
      +    "created_at",
      +    "updated_at"
      +  ],
      +  "type": "object"
      +}
  2. Changed1 schema field changed
    • removedInput schema / additionalProperties
      Removed value: -false
  3. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Consistent with readOnlyHint=true. Beyond annotations it discloses a non-obvious data-redaction behavior — an identifier is NEVER returned (citing SEC-PM-006) — plus the auth prerequisite, both of which an agent could not infer from structured fields. It does not discuss errors or behavior when the ID is invalid or the circle is not found.

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?

Two short, front-loaded blocks: capability/return shape first, access requirements second. The SEC-PM-006 ticket reference is internal noise an agent cannot act on, the only real waste.

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 and annotations already cover return values and safety, and the description adds the auth gate plus the redaction guarantee. Adequate for a single-parameter read tool; only failure-mode behavior (unknown ID, unauthenticated call result) is unaddressed.

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 coverage is 100% and the single `id` parameter is already documented as 'Circle ID' with a 24-hex pattern. The description adds nothing on format or sourcing of that ID, so the schema does the work; baseline 3 applies.

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?

States a specific verb and resource ('Get a Circle by ID') and goes further to say what the response contains: members and per-member channel presence booleans. The 'by ID' framing implicitly separates it from list_circles, though no sibling is named explicitly.

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?

Gives concrete operational guidance: a Proof account is required, the client must be authenticated first (with a concrete Claude Code path via /mcp), and it explicitly rules out a tempting wrong route by noting start_login does NOT open this tool. It stops short of routing to list_circles when the ID is unknown.

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.