Skip to main content
Glama

Smile.io MCP by usefulapi

Server Details

Look up loyalty customers, points history, rewards and VIP tiers, and add points or activities.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
51.6% over 22 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
m190/usefulapi-mcp
GitHub Stars
0

TDQS

A3.9/5.0

Scored across 14 tools

Disambiguation4/5

Most tools have clearly distinct purposes, especially create_activity vs create_points_transaction and get vs list operations. However, smile_list_earning_rules has a contradictory description that also discusses reward fulfillments and customer codes, which could cause misselection.

Naming Consistency5/5

All tool names follow a consistent smile_ prefix and snake_case verb_noun pattern (create, get, list, purchase). The domain-specific verb 'purchase' is still predictable within the resource-action convention.

Tool Count4/5

14 tools is reasonable for a loyalty platform covering customers, points, rewards, referrals, activities, and VIP tiers. The count is not excessive, though some list/get pairs could potentially be consolidated.

Completeness3/5

Core write and get operations are present, but key list endpoints for points products, points transactions, and reward fulfillments appear missing or conflated in the list_earning_rules description. The stated count of 14 versus the fewer visible tools suggests incomplete coverage of redemption discovery and audit workflows.

Available Tools

14 tools
smile_create_activityRecord a customer activityA
Destructive
Inspect

WRITE: record that a customer performed an action (identified by an activity type token configured in Smile Admin, e.g. a custom 'newsletter signup' activity). Smile then asynchronously applies the store's earning rules and may issue points or rewards. Identify the customer by customer_id OR customer_email (exactly one). Pass distinct_id (e.g. an order number) to make it idempotent — a second activity with the same token + distinct_id is rejected. Custom activity types need Smile's Plus/Enterprise plan. Requires the activity:write scope. Smile: POST /activities.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenYesActivity type token, e.g. activity_f57a9b5a8d0ac5.
customer_idNoSmile customer ID (or give customer_email).
distinct_idNoUnique id for this activity in your system; prevents duplicates for the same token.
customer_emailNoCustomer email (or give customer_id).
created_on_origin_atNoISO 8601 date-time the action actually happened, if earlier than now.

TDQS

A4.5/5.0
Behavior5/5

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

Adds substantial behavior beyond the annotations: asynchronous application of earning rules that may issue points/rewards, idempotency semantics (duplicate token+distinct_id is rejected), plan gating, and the required scope. The annotations only carry destructiveHint=true as a safety signal, so this extra context is genuinely valuable and does not contradict them.

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 a 'WRITE:' marker and packed with high-value constraints, but the many semicolon-joined clauses make it dense and slightly run-on compared to a tighter split into a purpose line plus a constraints line.

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?

Covers the write behavior, identity requirements, idempotency, plan and scope prerequisites, and the underlying endpoint. With no output schema, it does not state what the POST returns (e.g. activity id or resulting points), which is the one remaining gap for an agent that needs to chain calls.

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 coverage is 100%, so the baseline is 3, but the description adds real meaning: token refers to a Smile Admin-configured activity type, distinct_id is the idempotency key (e.g. an order number), and the customer_id/customer_email pair is mutually exclusive with exactly one required. It also notes created_on_origin_at semantics implicitly via the backdating concept.

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 and resource ('WRITE: record that a customer performed an action') and explains the token-based activity-type model. This is distinguishable from sibling writes like smile_create_points_transaction, which touches points directly rather than triggering earning rules.

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 usage constraints: identify the customer by exactly one of customer_id or customer_email, pass distinct_id for idempotency, custom types require Plus/Enterprise, and the activity:write scope is required. It stops short of naming an explicit alternative sibling to use instead, so it is context-rich but not full routing.

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

smile_create_points_transactionAdjust a customer's points balanceA
Destructive
Inspect

WRITE: add or deduct points from a customer's balance (a manual adjustment, e.g. a goodwill credit or a correction). points_change > 0 adds, < 0 deducts; Smile rejects a deduction that would make the balance negative. Undo by creating an opposite adjustment. description is shown to the customer; internal_note is merchant-only. To reward a customer for completing an action, prefer smile_create_activity. Requires the points_transaction:write scope. Smile: POST /points_transactions.

ParametersJSON Schema
NameRequiredDescriptionDefault
customer_idYesSmile customer ID.
descriptionNoCustomer-visible reason, e.g. "Points correction".
internal_noteNoMerchant-only note, never shown to the customer.
points_changeYesPoints to add (positive) or deduct (negative).

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only supply destructiveHint=true; the description goes well beyond it by explaining sign semantics (positive adds, negative deducts), the server-side rejection of deductions that would drive the balance negative, the undo strategy, and field-level visibility to the customer. This is exactly the behavioral context an agent needs before issuing a destructive write.

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

Conciseness5/5

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

Front-loaded with the WRITE marker and purpose, then ordered by operational concern: sign semantics, failure mode, undo, field visibility, alternative tool, scope, endpoint. No filler sentences.

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?

For a four-parameter destructive mutation with no output schema, the description covers everything an agent needs: purpose, polarity rules, rejection behavior, reversal, field visibility, alternative routing, auth scope, and endpoint.

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% and the schema already documents sign semantics and the customer-visible vs merchant-only distinction. The description largely restates that; its only marginal addition is the negative-balance rejection behavior. Baseline 3 is appropriate when 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?

Opens with an explicit 'WRITE:' marker and a specific verb+resource ('add or deduct points from a customer's balance'), then scopes it as a manual adjustment with concrete examples. It also explicitly names the sibling it is not for ('To reward a customer for completing an action, prefer smile_create_activity'), so an agent can differentiate without opening schemas.

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?

Gives the when (goodwill credit, correction), the when-not with a named alternative (smile_create_activity for action rewards), and the recovery path (undo by creating an opposite adjustment). The required scopes and underlying endpoint are also stated.

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

smile_get_customerGet a customerA
Read-only
Inspect

Fetch one customer by Smile customer ID: name, email, state, points_balance, referral_url, vip_tier_id, and optionally their VIP status with current and next tier. Smile: GET /customers/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeNoRelated objects to include, e.g. ["vip_status.vip_tier", "vip_status.next_vip_tier"].
customer_idYesSmile customer ID.

TDQS

A3.9/5.0
Behavior4/5

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

readOnlyHint=true already establishes this as a safe read, so the description only has to add context. It does: it discloses the concrete payload shape (name, email, state, points_balance, referral_url, vip_tier_id) and explains that VIP tier/next-tier data is only returned when the optional include is used. Missing are failure behavior (unknown ID) and any auth/rate-limit notes.

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?

A single dense sentence front-loads the verb, lookup key, and return contents, with a short API-endpoint note appended for developer context. No filler, though the field enumeration makes it slightly long for what it conveys.

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?

With no output schema available, the description compensates by enumerating the returned fields and clarifying what include adds, which is the main thing an agent needs. It is close to complete for a simple read-by-ID tool; only error/permission behavior 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 description coverage is 100%, so both parameters are already documented in the schema, including the include enum values. The description restates the include behavior ('optionally their VIP status with current and next tier') in prose without adding format or edge-case detail, which is the expected baseline-3 outcome.

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 and resource ('Fetch one customer by Smile customer ID') and scopes it to a single record, which separates it from the smile_list_customers sibling without needing to name it. It also enumerates the returned fields, so an agent knows exactly what this call yields.

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

Usage Guidelines3/5

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

Usage is implied by 'by Smile customer ID' (you need an ID, so this is a lookup rather than a browse), but there is no explicit when-to-use/when-not guidance and no pointer to smile_list_customers for the discovery case. Adequate but leaves the agent to infer routing.

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

smile_get_points_productGet a points productA
Read-only
Inspect

Fetch one points product (a way to redeem points) by ID, including its reward. Smile: GET /points_products/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
points_product_idYesSmile points product ID.

TDQS

A3.8/5.0
Behavior3/5

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

readOnlyHint=true already tells the agent this is a safe read, so the bar is lower. The description adds useful context by disclosing that the response includes the product's reward, which is not implied by the annotations or schema. It says nothing about behavior on a missing/invalid ID, but for a simple read that gap is minor.

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

Conciseness5/5

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

Two compact sentences, zero filler. The core action and scope are front-loaded, and the trailing 'Smile: GET /points_products/{id}' endpoint reference is a single low-cost clause.

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?

For a one-parameter read tool with annotations covering its safety profile and no output schema, the description covers purpose, lookup key, and the notable return element (the reward). Only the absence of any error/not-found behavior or cross-reference to siblings keeps it short of complete.

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% and the single parameter (points_product_id) is fully documented in the schema with type and bounds. The description only restates 'by ID' and adds no format or constraint detail beyond the schema, so the baseline 3 applies.

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 and resource ('Fetch one points product ... by ID') and clarifies the domain concept ('a way to redeem points'). The word 'one' plus the ID qualifier distinguishes it from the sibling smile_list_points_products without either schema being opened.

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

Usage Guidelines3/5

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

The 'by ID' phrasing implies this is the lookup for a known product ID, which is implicit usage guidance. However, it never states when to use this versus smile_list_points_products or smile_purchase_points_product, nor any prerequisite such as needing a valid ID first.

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

smile_get_points_settingsGet points settingsB
Read-only
Inspect

Fetch the points program's configuration, e.g. the points currency label ("Points", "Stars"). Smile: GET /points_settings.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, and the description confirms this is a GET endpoint, but that is largely redundant with the structured data. It does add one useful behavioral detail, the kind of data returned (a currency label such as "Points" or "Stars"), which is valuable context given there is no output schema, though it does not describe the full configuration shape.

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

Conciseness5/5

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

A single tight sentence that front-loads the action and resource, followed by a concrete example of the returned data. Nothing is wasted and nothing is buried.

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

Completeness3/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 carries the burden of explaining what comes back, yet it only illustrates one example field (the currency label) of what is described as a whole configuration object. For a read-only zero-param tool this is sufficient to call correctly, but not enough to know what the response contains.

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?

The tool takes zero parameters, so per the rubric the baseline is 4. The description correctly implies a parameter-free global fetch rather than one scoped by ID, but there is no additional parameter nuance to convey.

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 states a specific verb and resource ("Fetch the points program's configuration") and even names the underlying endpoint, which lets an agent distinguish it from sibling list/get tools such as smile_get_referral_settings. It stops short of explicitly contrasting itself with those siblings, so it lands at 4 rather than 5.

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?

There is no statement of when to call this versus alternatives. The closest sibling, smile_get_referral_settings, is an equally valid configuration lookup and the description does not say which configuration applies to which task, leaving the agent to infer 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.

smile_get_points_transactionGet a points transactionB
Read-only
Inspect

Fetch one points transaction by ID. Smile: GET /points_transactions/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
points_transaction_idYesSmile points transaction ID.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so safety is covered by structured data. The description adds the upstream route (GET /points_transactions/{id}), which is mildly useful context, but says nothing about not-found errors, missing-permission behavior, or what a returned transaction contains.

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

Conciseness5/5

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

Two short sentences, zero filler, with the core action front-loaded. Nothing is wasted.

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

Completeness3/5

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

Adequate for a simple read-only lookup whose annotations cover the safety profile, but with no output schema the description leaves the return shape entirely unspecified, and it offers no error handling context.

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% and the single parameter is fully documented in the schema, so the baseline is 3. The description only echoes 'by ID' and adds no format, range, or lookup-mechanics detail beyond the schema.

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+resource ('Fetch one points transaction') and constrains it to a single record by ID, which implicitly separates it from smile_list_points_transactions. It does not name that sibling explicitly, but the singular/plural distinction is unambiguous.

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?

No when-to-use or when-not-to-use guidance; the only signal is the implicit 'by ID' scoping. It never names smile_list_points_transactions as the alternative for browsing, nor states any prerequisite such as needing a known ID.

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

smile_get_referral_settingsGet referral settingsA
Read-only
Inspect

Fetch the referral program's configuration: whether it is active, and the sender (advocate) and receiver (friend) rewards. Smile: GET /referral_settings.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description goes beyond that by disclosing exactly what data comes back (active status plus sender/receiver rewards) and the underlying HTTP endpoint, which is valuable since there is no output schema. It does not discuss auth, rate limits, or error behavior, keeping it short of a 5.

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

Conciseness5/5

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

A single compact sentence front-loads the verb and resource, enumerates the return fields inline, and closes with the API mapping. Nothing is wasted and nothing essential is buried.

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?

With no output schema and no parameters, the description carries the burden of telling the agent what comes back, and it enumerates the active flag and both reward types. It stops short of covering edge cases (e.g., behavior when the program is unconfigured) or auth/error conditions, so it is strong but not exhaustive.

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?

The tool has zero parameters and 100% schema description coverage, so the baseline of 4 applies. The description correctly adds no parameter detail because there is nothing to document.

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 states a specific verb ('Fetch') and resource ('the referral program's configuration'), and even enumerates the returned fields (active flag, advocate reward, friend reward). It is clearly distinguishable from the sibling 'get_points_settings' by resource, though it never explicitly names or contrasts against any sibling tool.

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

Usage Guidelines3/5

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

No explicit when-to-use guidance or alternatives are given. For a zero-parameter read-only configuration getter the usage is strongly implied (call it when you need the referral program's config), which fits the 'implied usage' bar of 3, but nothing tells the agent when not to use it or which sibling to prefer.

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

smile_list_customersList customersA
Read-only
Inspect

List loyalty-program customers, newest first, with their points balance, state and VIP tier id. Look a customer up by exact email, or filter by state or last-updated time. Cursor-paginated (metadata.next_cursor). Smile: GET /customers.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoExact email address to look up.
limitNoMaximum number of results, 1-250 (Smile default 50).
stateNocandidate = not yet joined, member = in the program, disabled = excluded.
cursorNoCursor from the previous response's metadata.next_cursor (or previous_cursor). Omit for the first page.
updated_at_minNoOnly records updated at/after this ISO 8601 date-time, e.g. 2026-01-01T00:00:00Z.
include_vip_statusNoInclude each customer's vip_status object (include=vip_status).

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description goes further by disclosing the sort order (newest first) and cursor pagination via metadata.next_cursor, which is genuinely useful behavior beyond the annotations, though it says nothing about rate limits or result size limits beyond 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.

Conciseness5/5

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

Three compact sentences, front-loaded with the resource and returned fields, then filtering options, then pagination. Every sentence carries information and none is wasted.

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?

For a read-only list tool with no output schema, the description covers the returned fields, ordering, filter dimensions, and pagination mechanism, and annotations cover the safety profile. An agent has everything needed to call it correctly.

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 the schema already documents all six parameters including enum values and limits. The description only restates which filters exist (email, state, updated_at) without adding syntax or format detail beyond the schema, which is the expected baseline.

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?

Names a specific verb and resource ('List loyalty-program customers') plus the returned fields (points balance, state, VIP tier id) and the default ordering. It is clearly distinguishable from the sibling smile_get_customer single-record fetch.

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?

The description states the three selection modes: exact-email lookup, filter by state, or filter by last-updated time. It gives clear usage context but never names smile_get_customer as the alternative for single-record retrieval, so no explicit exclusion is offered.

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

smile_list_earning_rulesList earning rules (ways to earn)A
Read-only
Inspect

List the enabled earning rules — the ways customers earn points or rewards (placing an order, signing up, birthdays, custom activities), with reward, reward_value, earning_limit and any VIP-tier restriction. Cursor-paginated. Smile: GET /earning_rules.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results, 1-250 (Smile default 50).
cursorNoCursor from the previous response's metadata.next_cursor (or previous_cursor). Omit for the first page.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so safety is covered; the description adds meaningful behavior beyond that: it restricts results to enabled rules only, names the fields in each rule, and states the pagination style (cursor-paginated) with the required vocabulary. It stops short of noting auth scopes, rate limits, or what happens if the store has no rules configured.

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 core action and resource, followed by a dense but useful enumeration of returned fields and a terse raw-endpoint reference. Every clause carries information; the only slight redundancy is pairing 'Cursor-paginated' with a schema that already explains the cursor.

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?

There is no output schema, so the description must convey the return shape — and it does, listing reward, reward_value, earning_limit and VIP-tier restriction. Combined with annotations covering the read-only profile and a fully documented two-parameter schema, an agent has everything needed to call it correctly.

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 both limit (1-250, default 50) and cursor semantics are already fully documented in the schema. The description's 'Cursor-paginated' phrase reinforces usage but adds no syntax or format detail beyond the schema, so the baseline 3 applies.

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?

Names a specific verb (List) and resource (earning rules), then defines the resource in plain language and enumerates the salient fields returned. Easily distinguished from siblings like smile_list_points_transactions or smile_list_vip_tiers.

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

Usage Guidelines3/5

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

The word 'enabled' implies a scoping filter (disabled rules are excluded), and the tool is clearly a read/list operation, but there is no explicit when-to-use, when-not-to-use, or pointer to an alternative sibling for related data such as points transactions or reward fulfillments.

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

smile_list_points_productsList points products (ways to redeem)A
Read-only
Inspect

List points products — the rewards customers can buy with points. 'fixed' products cost points_price; 'variable' products trade variable_points_step points for variable_points_step_reward_value, between variable_points_min and variable_points_max. Each embeds its reward. Page-numbered (page, page_size); a page shorter than page_size is the last. Smile: GET /points_products.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number, starting at 1.
page_sizeNoResults per page, 1-250 (default 50).
exchange_typeNoOnly fixed- or variable-price products.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so safety is covered. The description adds real behavioral context beyond that: the pagination termination rule ('a page shorter than page_size is the last') and the fact that each product embeds its reward. It omits auth requirements or any rate-limit detail, but for a read-only list that is acceptable.

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 tool's purpose, then dense but relevant clauses covering pricing models, embedding, pagination, and endpoint. Every sentence earns its place; it is slightly compressed but not padded.

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?

For a read-only, three-parameter list tool with no output schema, the description supplies the domain model, pagination semantics, and filter meaning an agent needs to call it correctly. Only the absence of explicit sibling routing keeps it from a 5.

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 coverage is 100%, so page and page_size are fully documented and the baseline is 3. The description goes further by explaining the meaning of the exchange_type enum values ('fixed' cost points_price vs 'variable' trading steps within a min/max), which the bare enum label does not convey.

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 (List) and resource (points products) and immediately defines what the resource is ('the rewards customers can buy with points'). The 'List' vs sibling 'get_points_product'/'purchase_points_product' distinction is inherent and clear without opening a schema.

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

Usage Guidelines3/5

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

Usage is only implied: the reader infers this is the unfiltered-list tool and that get_points_product fetches one. There is no explicit when-to-use, no guidance on when to reach for exchange_type filtering, and no named alternative such as get_points_product or purchase_points_product.

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

smile_list_points_transactionsList points transactionsA
Read-only
Inspect

List points transactions (every earn, spend and manual adjustment), newest first — e.g. a customer's full points history. Each has points_change (+/-), a customer-visible description and a merchant internal_note. Cursor-paginated. Smile: GET /points_transactions.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results, 1-250 (Smile default 50).
cursorNoCursor from the previous response's metadata.next_cursor (or previous_cursor). Omit for the first page.
customer_idNoOnly this customer's transactions.
updated_at_minNoOnly records updated at/after this ISO 8601 date-time, e.g. 2026-01-01T00:00:00Z.

TDQS

A4.2/5.0
Behavior4/5

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

readOnlyHint=true already establishes the safe-read profile, so the description's added value is the shape of the result: newest-first ordering, cursor pagination, and the per-row fields points_change (+/-), customer-visible description and merchant internal_note. That internal_note/customer-visible distinction is genuinely useful behavioral context an agent would not get from annotations alone. No permission or rate-limit detail is given.

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

Conciseness5/5

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

Two compact sentences, front-loaded with the resource and scope, then the record shape, then pagination and the API endpoint. Every clause carries information; nothing is padding.

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?

With no output schema, the description dutifully characterizes the returned rows and their ordering and paging behavior, which is the main gap an agent would otherwise face. It leaves the filtering semantics of customer_id and updated_at_min to the schema, which is acceptable at 100% schema coverage.

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 limit, cursor, customer_id and updated_at_min are already fully documented. The description only reinforces the cursor concept via 'Cursor-paginated' and implies customer scoping, adding no syntax or constraint detail beyond the schema. Baseline 3 applies.

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 and resource ('List points transactions') and immediately enumerates the scope of what is listed (every earn, spend and manual adjustment). Ordering (newest first) and a concrete use case (a customer's full points history) make it trivially distinguishable from the singular smile_get_points_transaction and from smile_create_points_transaction.

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?

The example 'a customer's full points history' tells the agent the context in which this tool is the right choice, and 'Cursor-paginated' plus 'Omit for the first page' frames the paging workflow. It never explicitly excludes itself in favor of the sibling fetch-one tool, so it stops short of full when/when-not guidance.

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

smile_list_reward_fulfillmentsList reward fulfillmentsA
Read-only
Inspect

List rewards that have been issued to customers — usually discount codes — with code, fulfillment_status (pending/issued/cancelled/failed), usage_status (used/unused/untracked), used_at and expires_at. Use customer_id to answer 'what codes does this customer have?'. Cursor-paginated. Smile: GET /reward_fulfillments.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results, 1-250 (Smile default 50).
cursorNoCursor from the previous response's metadata.next_cursor (or previous_cursor). Omit for the first page.
customer_idNoOnly this customer's rewards.
usage_statusNo
updated_at_minNoOnly records updated at/after this ISO 8601 date-time, e.g. 2026-01-01T00:00:00Z.
fulfillment_statusNo

TDQS

A4.2/5.0
Behavior4/5

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

The readOnlyHint annotation already establishes this as a safe read, and the description adds the pagination model ('Cursor-paginated') plus the concrete field set and status vocabularies returned. No rate limits, ordering, or default-page-size behavior beyond what the schema states, so it is good but not exhaustive.

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

Conciseness5/5

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

Three front-loaded elements: what is listed, how to use it for a customer lookup, then pagination and endpoint. No filler, no restatement of the title, and the most decision-relevant content comes first.

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?

With no output schema, the description usefully compensates by naming the returned fields (code, fulfillment_status, usage_status, used_at, expires_at). Six optional params are handled adequately overall, though the unmentioned limit and updated_at_min filters rely wholly on the schema.

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 a middling 67% and the description mostly restates enum values the schema already defines (pending/issued/cancelled/failed, used/unused/untracked). It does add intent for customer_id, but says nothing about limit or updated_at_min, so it does not meaningfully compensate for the coverage gap.

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 and resource ('list rewards that have been issued to customers — usually discount codes') and immediately characterizes the domain, which separates it from siblings like smile_list_points_transactions or smile_list_points_products. It even enumerates the salient response fields and status values, so an agent knows exactly what comes back.

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?

Provides explicit situational guidance with 'Use customer_id to answer "what codes does this customer have?"', which maps a user intent directly onto a parameter. It lacks any when-not guidance or named alternative (e.g., points transactions vs. reward fulfillments), so it stops short of a 5.

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

smile_list_vip_tiersList VIP tiersA
Read-only
Inspect

List the VIP program's tiers, sorted by milestone (the threshold to reach each tier), optionally with each tier's perks and entry rewards. Smile: GET /vip_tiers.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeNoNested objects to include, e.g. ["perks", "entry_rewards"].

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safe-read profile is covered. The description adds the default ordering (by milestone threshold) and notes perks/entry rewards are only returned when requested, which is genuine extra context, though it omits pagination or return-shape details.

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 tight sentences with the core purpose and sorting behavior front-loaded, followed by the endpoint reference. Every clause carries information, though the trailing endpoint notation is developer metadata rather than agent-facing guidance.

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?

For a zero-required-parameter list tool with no output schema, the description adequately covers what is returned (tiers with milestone thresholds, optionally perks and entry rewards) plus ordering. Only pagination/response-envelope behavior is unaddressed, which is minor here.

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 the single 'include' parameter is already documented with its enum values. The description restates its effect ('optionally with each tier's perks and entry rewards') but adds no syntax or default behavior beyond the schema, so the baseline 3 applies.

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 and resource ('List the VIP program's tiers') and even names the underlying endpoint (GET /vip_tiers). No sibling tool covers VIP tiers, so ambiguity with siblings is nil and an agent can select this immediately.

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

Usage Guidelines3/5

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

Usage is implied by the resource itself — an agent needing the tier list will recognize this tool. However, no when-to-use/when-not guidance or alternative routing is given (there are no competing siblings, so the cost is low).

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

smile_purchase_points_productRedeem a customer's points for a rewardA
Destructive
Inspect

WRITE — SPENDS THE CUSTOMER'S POINTS: redeem points on the customer's behalf by purchasing a points product; Smile deducts the points and issues the reward (the response's points_purchase.reward_fulfillment usually holds a discount code). Only do this when the customer asked for it. For a 'variable' product pass points_to_spend; leave it out for 'fixed' products. There is no API to cancel a redemption — a mistaken one can only be compensated with smile_create_points_transaction. Requires the points_purchase:write scope. Smile: POST /points_products/{id}/purchase.

ParametersJSON Schema
NameRequiredDescriptionDefault
customer_idYesSmile customer ID.
points_to_spendNoPoints to spend — variable-price products only.
points_product_idYesSmile points product ID.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only supply destructiveHint=true; the description goes far beyond by disclosing that points are deducted, the reward is issued, the response's points_purchase.reward_fulfillment usually holds a discount code, the operation is irreversible, and it requires the points_purchase:write scope. Rich, decision-relevant behavioral context.

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

Conciseness5/5

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

Front-loads the critical WRITE/spends-points warning, then layers usage, parameter conditions, irreversibility, scope, and endpoint. Every sentence earns its place with no padding.

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?

For a destructive, no-output-schema mutation, the description covers safety, parameter conditions, irreversibility, the compensating tool, auth scope, and returns. Nothing an agent needs to call it safely 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?

Schema coverage is 100% so the baseline is 3, but the description adds usage semantics for points_to_spend beyond the schema field text: pass it for 'variable' products and leave it out for 'fixed' ones, clarifying the conditional requirement beyond what the schema states.

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 (redeem/purchase) and resource (points product) with a clear scope: it spends the customer's points and issues a reward. It distinguishes itself from read-oriented siblings like smile_get_points_product and smile_list_points_products by explaining the mutation it performs.

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?

Gives explicit when-to-use ('only do this when the customer asked for it'), a when-not/irreversibility warning ('no API to cancel a redemption'), and names the alternative (smile_create_points_transaction) for compensating mistakes. This is the strongest tier of usage guidance.

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.

  1. 14 tool updates
    • Changedsmile_create_activity1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsmile_create_points_transaction1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsmile_get_customer1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsmile_get_points_product1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsmile_get_points_settings1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsmile_get_points_transaction1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsmile_get_referral_settings1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsmile_list_customers1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsmile_list_earning_rules1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsmile_list_points_products1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsmile_list_points_transactions1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsmile_list_reward_fulfillments1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsmile_list_vip_tiers1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsmile_purchase_points_product1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  2. 14 tool updates
    • First observedsmile_create_activity
    • First observedsmile_create_points_transaction
    • First observedsmile_get_customer
    • First observedsmile_get_points_product
    • First observedsmile_get_points_settings
    • First observedsmile_get_points_transaction
    • First observedsmile_get_referral_settings
    • First observedsmile_list_customers
    • First observedsmile_list_earning_rules
    • First observedsmile_list_points_products
    • First observedsmile_list_points_transactions
    • First observedsmile_list_reward_fulfillments
    • First observedsmile_list_vip_tiers
    • First observedsmile_purchase_points_product

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables authenticated management of salon and clinic scheduling data, including appointments, customers, professionals, services, products, finances, loyalty, commissions, and subscription clubs across multiple business units.
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    Enables Claude and other MCP clients to read and write a Loyverse point-of-sale account, covering catalogue items, inventory levels, loyalty customers, receipts and refunds through natural language. Includes a one-call sales summary that aggregates any date range into totals and ranked breakdowns by day, item, category, payment type, employee or store.
    41
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.