Skip to main content
Glama

Explain Shop Entitlements

entitlements_explain
Read-only

Resolves the Plan Builder entitlement snapshot for one shop of the given app: the plan it is on, whether it is paused, its currency/FX rate, and its feature/event terms, both objects keyed by the app-local key your @the-meridian/sdk isEnabled()/track() calls use. Unlike plans_list/features_list/events_list, the feature/event entries here use the @the-meridian/sdk Entitlements type's own field names verbatim (e.g. enabled, limit, includedQuantity, usedThisPeriod) rather than this server's usual snake_case, because this tool's whole purpose is showing exactly what the SDK's getEntitlements() would return for that shop right now, without calling Shopify. Never returns the shop's access token. Takes the app_id returned by apps_list and the shop's shop_domain (e.g. demo.myshopify.com). Requires both the plan_builder.view and crm.merchants.view permissions on the app, because the result is one merchant's subscription state.

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": {
      "app_id": "<app_id>",
      "shop_domain": "<shop_domain>"
    },
    "name": "entitlements_explain"
  }
}

Input Schema

NameRequiredDescriptionDefault
app_idYesThe app uuid returned by `apps_list`.
shop_domainYesThe Shopify shop domain to resolve entitlements for, e.g. demo.myshopify.com.
organization_idNoAn organisation uuid or slug. When supplied, `app_id` is resolved within that organisation and may be a slug instead of a uuid, mirroring the Meridian web app.

Schema Changelog

Changes observed during successful MCP inspections.

  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 declare read-only, non-destructive, closed-world, so the description is free to add genuinely new context — and it does: the result is a snapshot reflecting the SDK's live state rather than a Shopify call, it is scoped to one merchant's subscription, it requires two specific permissions, and it never returns the shop's access token. That last point is a real security-relevant disclosure an agent could not infer from the schema.

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?

Purpose and scope are front-loaded in the first clause, and the sibling differentiation plus field-naming caveat follow logically. The single dense paragraph is longer than typical but almost every clause carries decision-relevant information; the SDK field-name examples are slightly verbose but justify themselves by preventing shape confusion.

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?

With no output schema, the description must carry the return-value burden, and it does: it names the top-level contents, the keying convention (app-local key matching isEnabled()/track()), the exact field names to expect, and the one field that is excluded. Nothing an agent needs to call or interpret this tool is missing.

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 all three parameters are already documented, including organization_id resolution semantics that the description never mentions. The description adds provenance for app_id (from apps_list) and the shop_domain format, but those largely restate the schema. Baseline 3 is appropriate since the schema carries the parameter burden.

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 a specific verb+resource (resolves the Plan Builder entitlement snapshot for one shop of a given app) and enumerates the payload contents: plan, paused state, currency/FX rate, and feature/event terms. It explicitly distinguishes itself from plans_list/features_list/events_list, so an agent can route without opening sibling schemas.

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?

Explains the selecting condition well: use this to see exactly what the SDK's getEntitlements() would return right now without calling Shopify, versus the list tools that use the server's usual snake_case shape. It also states the prerequisite permissions (plan_builder.view and crm.merchants.view), which gates correct invocation. It stops short of explicit when-not guidance or naming an alternative for multi-shop or bulk entitlement inspection.

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.

Resources