Skip to main content
Glama

bluesky_profile

Bluesky profile — handle, did, bio, counts, banner, verification{}, labels[], and associated{} (1 credit). Costs 1 credit. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesBluesky profile URL, @handle, or handle, e.g. bsky.app/profile/handle. The URL platform must match this endpoint's platform. Do not pass cross-platform URLs, e.g. YouTube to TikTok, Instagram to Facebook, LinkedIn to X/Twitter, or Pinterest to Rumble.
cacheNoSet true to serve from the response cache (default TTL). Default false — always fetch fresh. Prefer cacheMaxAge when you need 1d–30d freshness control.
cacheMaxAgeNoMax age of a cached response: 1d, 3d, 7d, 14d, or 30d. When set, enables caching with that TTL.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / cache / description
      Previous value: -"Set true to serve from the response cache (default TTL). Default false — always fetch fresh. Prefer cacheMaxAge when you need 1d–30d freshness control. Envelope includes cached + cachedAt on hits."New value: +"Set true to serve from the response cache (default TTL). Default false — always fetch fresh. Prefer cacheMaxAge when you need 1d–30d freshness control."
    • changedInput schema / properties / cacheMaxAge / description
      Previous value: -"Max age of a cached response: 1d, 3d, 7d, 14d, or 30d. When set, enables caching with that TTL. Envelope: cached + cachedAt."New value: +"Max age of a cached response: 1d, 3d, 7d, 14d, or 30d. When set, enables caching with that TTL."
  2. Changed3 schema fields changed
    • changedInput schema / properties / cache / description
      Previous value: -"Set true to serve from the 24h response cache. Default false — always fetch fresh data."New value: +"Set true to serve from the response cache (default TTL). Default false — always fetch fresh. Prefer cacheMaxAge when you need 1d–30d freshness control. Envelope includes cached + cachedAt on hits."
    • addedInput schema / properties / cacheMaxAge
      Added value: +{
      +  "description": "Max age of a cached response: 1d, 3d, 7d, 14d, or 30d. When set, enables caching with that TTL. Envelope: cached + cachedAt.",
      +  "type": "string"
      +}
    • changedInput schema / properties / url / description
      Previous value: -"Bluesky profile URL, @handle, or handle, e.g. bsky.app/profile/handle. The URL platform must match this tool's platform. Do not pass cross-platform URLs, e.g. YouTube to TikTok, Instagram to Facebook, LinkedIn to X/Twitter, or Pinterest to Rumble."New value: +"Bluesky profile URL, @handle, or handle, e.g. bsky.app/profile/handle. The URL platform must match this endpoint's platform. Do not pass cross-platform URLs, e.g. YouTube to TikTok, Instagram to Facebook, LinkedIn to X/Twitter, or Pinterest to Rumble."
  3. Changed1 schema field changed
    • changedInput schema / properties / cache / description
      Previous value: -"Responses are cached for 24 hours by default. Set false to bypass the cache and always fetch fresh data (default true)."New value: +"Set true to serve from the 24h response cache. Default false — always fetch fresh data."
  4. Changed1 schema field changed
    • addedInput schema / properties / cache
      Added value: +{
      +  "description": "Responses are cached for 24 hours by default. Set false to bypass the cache and always fetch fresh data (default true).",
      +  "type": "boolean"
      +}
  5. Added

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does a solid job: it discloses the 1-credit cost, states that empty results and failures are never charged, and explains caching behavior (cache=true gives a free 24h hit; default is always fresh). It does not explicitly state read-only behavior, but that is reasonably implied by 'profile' retrieval. The billing and caching specifics add meaningful transparency beyond basic expectations.

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 description is compact and front-loads the profile contents, but it contains redundancy: '(1 credit)' appears in the first clause and 'Costs 1 credit' repeats the same information in the second sentence. The caching guidance is concise, but the duplication means not every sentence earns its place.

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?

Given there is no output schema and no annotations, the description provides a good inventory of return fields, the credit cost, failure non-charging, and cache options. It doesn't cover rate limits or authentication, but for a straightforward profile fetch these may not be critical. The 'associated{}' and 'verification{}' notation is slightly cryptic but acceptable. Overall, it is reasonably complete for invoking the tool correctly.

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?

Schema description coverage is 100%, so the baseline is 3, but the description adds valuable semantic context: it clarifies that cache=true yields a free 24h cache hit, distinguishes this from default always-fresh behavior, and points to cacheMaxAge for 1d–30d freshness control. This goes beyond the schema's generic 'default TTL' and helps the agent make informed caching choices.

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 description clearly identifies the resource as a Bluesky profile and lists the returned fields (handle, did, bio, counts, banner, verification{}, labels[], associated{}), so an agent knows exactly what the tool produces. It lacks an explicit verb like 'fetch' or 'get', but the resource and payload scope are clear. It doesn't explicitly distinguish from sibling tools like bluesky_user_posts, but the platform and 'profile' focus make the purpose reasonably distinct.

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?

The description provides no guidance on when to use this tool versus alternative siblings such as bluesky_user_posts or bluesky_post_details. It does offer caching usage tips (cache=true for a free 24h cache hit, prefer cacheMaxAge for 1d–30d), but that is parameter handling rather than tool-selection guidance. No exclusions or alternative references are present.

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.