circle-mcp
Provides read-only access to Circle parental-control data, including family profiles, per-profile internet usage details, usage by category (games, social, video, etc.), and Circle device/account status.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@circle-mcpWhat's the internet usage for each family profile this week?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
circle-mcp
MCP server (stdio) exposing read-only Circle (Meetcircle/Aura) parental-control data: family profiles and per-profile internet usage.
Extracted from the airstream-dashboard Circle provider, which is where the API
client and its auth flow come from. Stdlib-only client; the only dependency is
the mcp SDK.
Tools
Tool | Purpose |
| Family profiles (pid, name, type) |
| Detailed usage for a profile ( |
| Usage by category (games, social, video, ...) |
| Circle device/account status |
Related MCP server: mcp-paypal
Setup
python3 -m venv .venv
.venv/bin/pip install -e .Configuration
Environment variables win; a secrets file fills the rest:
Env var | Secrets-file key | Purpose |
|
| Account email |
|
| Account password |
|
| Stable device identifier (any unique string) |
|
| Aura API client key ( |
|
| Optional pre-authenticated token (bypasses login) |
|
| Optional default profile for usage tools |
CIRCLE_SECRETS_FILE points at a conf file with circle.<key> = <value> lines,
which keeps credentials out of your MCP client config.
Claude Code registration: copy .mcp.json.example to .mcp.json and fill in your
credentials (or point CIRCLE_SECRETS_FILE at a conf file holding them). .mcp.json
is gitignored, since it typically embeds credentials or machine-specific paths.
API notes (2026-08)
Auth flow:
POST https://api.aurasvc.io/auth/session/signinwith headerAuthorization: Public <aura_public_key>and body{"alias": <email>, "password": ...}→access_token+refresh_token(refresh via/auth/session/refresh_token)POST https://auth.meetcircle-blue.co/api/v2/grant/adminwith{"deviceid": <device_id>, "jwt": <access_token>}→ admin tokenData endpoints on
https://vc.meetcircle-blue.cowithAuthorization: Bearer <admin_token>:/api/LOGS/usage/categories?user=<pid>&day=<d>&ndays=<n>(verified live)/api/LOGS/usage?user=<pid>&day=<d>&ndays=<n>/api/QUERY/users,/api/QUERY/circleinfo(unverified)
Error semantics on signin:
401 {"message": "NoCredential"}— missing/invalidAuthorization: Public <key>header401 {"message": "InvalidCredentials"}— key accepted, username/password rejected
Available Tools
4 toolsget_circle_statusB
Get Circle device/account status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the disclosure burden. 'Get' clearly signals a read-only operation, but the description does not state what the status contains, whether it is device-level or account-level, or what the response looks like. Adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word contributes to the meaning, making it appropriately concise for such a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with no parameters, and the description names the operation clearly. However, there is no output schema and no detail about what 'status' includes or when this tool is preferable to siblings, leaving some gaps for a no-annotation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema fully covers the input surface. A baseline of 4 is appropriate because there is no parameter information for the description to add.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb ('Get') and a specific resource ('Circle device/account status'), so an agent understands the operation. It does not explicitly differentiate from siblings like list_profiles or get_usage, but the 'status' focus is distinct enough by context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus the sibling tools. No conditions, exclusions, or alternative suggestions are provided, so the agent must infer appropriateness from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usageB
Get detailed internet usage for a profile.
Args: profile_pid: Profile ID from list_profiles (falls back to configured profile_pid) day: Days ago to start (0 = today) ndays: Number of days to include
| Name | Required | Description | Default |
|---|---|---|---|
| day | No | 0 | |
| ndays | No | 1 | |
| profile_pid | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only explains the arguments and does not disclose return format, pagination, rate limits, or any side effects. While 'Get' implies a read, it does not explicitly confirm read-only behavior or describe what 'detailed' means in practice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, starting with a one-line purpose followed by an Args section that cleanly explains parameters. There is no fluff; each sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given three optional parameters, no output schema, and no annotations, the description explains parameters but does not state what the tool returns (e.g., a summary, a list, or a breakdown). It also omits any error conditions or prerequisites beyond profile_pid. This leaves some ambiguity for an agent calling the tool for the first time.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It fully explains each parameter: profile_pid (with context), day (days ago to start), and ndays (number of days). This adds significant meaning beyond the bare schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb+resource: 'Get detailed internet usage for a profile.' It distinguishes itself from list_profiles by referencing it as a source for profile IDs, but does not explicitly differentiate from get_usage_categories, leaving some ambiguity about which usage tool to use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by explaining the profile_pid parameter as coming from list_profiles and noting a fallback to a configured profile. However, it does not provide explicit when-to-use/when-not-to-use guidance relative to siblings like get_usage_categories, leaving the selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usage_categoriesA
Get internet usage broken down by category (e.g. games, social, video) for a profile.
Args: profile_pid: Profile ID from list_profiles (falls back to configured profile_pid) day: Days ago to start (0 = today) ndays: Number of days to include
| Name | Required | Description | Default |
|---|---|---|---|
| day | No | 0 | |
| ndays | No | 1 | |
| profile_pid | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full disclosure burden. It does add meaningful behavioral context—the profile_pid fallback to a 'configured profile_pid' and the semantics of day ('0 = today') and ndays. However, it remains silent on output volume, error conditions, or data freshness, which a read tool could disclose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is efficiently structured: a single one-sentence opener followed by a scannable Args list with consistent 'name: meaning' lines. It front-loads the core purpose and wastes no words, with only the slightly awkward 'Days ago to start' phrasing preventing a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with a non-trivial date-window semantics and an external profile dependency, the description provides the essential contract: source of profile ID, window start, and window length. The only gap is the lack of a return-value sketch, but that's a minor omission for a category-breakdown tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Since schema description coverage is 0%, the description fully shoulders the documentation load by explaining all three parameters with provenance (profile_pid from list_profiles) and units (days ago, window size). This is a strong compensation for an empty schema, though the parameter meanings could have been more richly detailed (e.g., timezone handling for 'today').
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource ('Get internet usage broken down by category') with concrete examples (games, social, video). It's clear this returns categorized usage per profile, which conveys the tool's differentiating function, though it never explicitly contrasts itself with the sibling get_usage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied well by context—get category-level usage rather than totals—and the docs point the agent to list_profiles for the profile_pid, establishing an implicit dependency. However, there is no explicit when-to-use guidance or mention of alternatives (e.g., get_usage for aggregate totals), leaving the routing decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_profilesA
List Circle family profiles (pid, name, type). Use the pid with the usage tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It says 'List' which implies a read-only operation, and it names the returned fields. It does not discuss errors or edge cases, but for a simple listing tool this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, directly stating the purpose and the follow-up action. It is concise, front-loaded, and contains no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It explains the output fields and the next step (using pid with usage tools). Since there is no output schema, this gives enough context. It lacks details like pagination or filtering, but for a simple list it is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so schema coverage is trivially 100%. The description adds no input parameter meaning beyond the schema (there is nothing to document). The baseline score of 3 applies per the rubric.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists Circle profiles and explicitly mentions the output fields (pid, name, type). It distinguishes itself from sibling tools (usage, status) by focusing on profile data, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a direct usage hint: 'Use the pid with the usage tools,' indicating when this tool is needed (to obtain a pid for subsequent usage calls). It does not explicitly contrast with siblings but implies the workflow, so guidance is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
4 tool updates
v0.1.0- First observed
get_circle_status - First observed
get_usage - First observed
get_usage_categories - First observed
list_profiles
TDQS
The tools are mostly distinct: list_profiles is the discovery tool, get_usage provides raw usage, get_usage_categories provides categorized breakdown, and get_circle_status handles device health. get_usage and get_usage_categories could be confused at first, but their descriptions clearly separate raw totals from category breakdowns.
Tool names follow a consistent verb_noun pattern with snake_case: list_profiles, get_usage, get_usage_categories, get_circle_status. The only minor inconsistency is mixing list_ and get_ as the leading verb, but both clearly signal read operations.
Four tools is well-scoped for a focused read-only Circle internet usage server. Each tool covers a meaningful piece of functionality without unnecessary surface area.
The server provides profile discovery, raw usage lookup, category-level usage breakdown, and overall device status, which covers the main read-only workflows for a Circle usage monitor. Minor gaps such as per-device usage details or historical filtering beyond day/ndays could exist, but the core domain is well covered.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Read-only access to your net worth, wealth percentile, projections, splits and budget.
Read-only access to your bank, investment, and crypto accounts: balances, transactions, holdings.
Read-only access to your Nexly web analytics: traffic, pages, acquisition, events, and reports.
Read wearables and lab health data — sleep, activity, workouts, timeseries, lab tests and orders.
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables read-only access to FileMaker databases through the Data API, allowing users to retrieve records, analyze metadata, search across layouts, and infer relationships while maintaining data security.16-
- AlicenseNot gradedqualityCmaintenanceEnables read-only access to PayPal transactions, orders, invoices, and disputes for auditing cash flow and tracking billing.15MIT
- AlicenseNot gradedqualityCmaintenanceRead-only access to Stripe data including customers, charges, subscriptions, balance, and invoices.14MIT
- AlicenseNot gradedqualityBmaintenanceEnables read-only access to a Nightscout instance for glucose readings, treatments, and deterministic server-side aggregates, allowing users to discuss their diabetes data with an AI assistant without write permissions.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/TechBlueprints/circle-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server