Smile.io MCP by usefulapi
by usefulapi.io · remote · no sign-in to list tools · v1.16.3 · published by io.usefulapi
Look up loyalty customers, points history, rewards and VIP tiers, and add points or activities.
14 tools: 3 can delete or cancel things and 11 only read.
Scanned Oct 21, 2026
- Deletes or cancels3Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads11Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http smile-io https://smile-io.usefulapi.io/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
14 tools
Deletes or cancels 3Claude Code: deny
smile_create_activityWRITE: record that a customer performed an action (identified by an activity type token configured in Smile Admin, e.g.No findings
Why it is in this group
- The name "smile_create_activity" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Record a customer activity
- destructiveHint: true
smile_create_points_transactionWRITE: add or deduct points from a customer's balance (a manual adjustment, e.g.No findings
Why it is in this group
- The name "smile_create_points_transaction" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Adjust a customer's points balance
- destructiveHint: true
smile_purchase_points_productWRITE — 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_p…No findings
Why it is in this group
- The name "smile_purchase_points_product" says "purchase": a word that usually means money moves, which cannot be taken back.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Redeem a customer's points for a reward
- destructiveHint: true
Only reads 11Claude Code: allow
smile_get_customerFetch 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.No findings
Why it is in this group
- The name "smile_get_customer" says "get": a word for reading.
Description, as the server wrote it 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}.
Annotations the server declares
- title: Get a customer
- readOnlyHint: true
smile_get_points_productFetch one points product (a way to redeem points) by ID, including its reward.No findings
Why it is in this group
- The name "smile_get_points_product" says "get": a word for reading.
Description, as the server wrote it Fetch one points product (a way to redeem points) by ID, including its reward. Smile: GET /points_products/{id}.
Annotations the server declares
- title: Get a points product
- readOnlyHint: true
smile_get_points_settingsFetch the points program's configuration, e.g.No findings
Why it is in this group
- The name "smile_get_points_settings" says "get": a word for reading.
Description, as the server wrote it Fetch the points program's configuration, e.g. the points currency label ("Points", "Stars"). Smile: GET /points_settings.
Annotations the server declares
- title: Get points settings
- readOnlyHint: true
smile_get_points_transactionFetch one points transaction by ID.No findings
Why it is in this group
- The name "smile_get_points_transaction" says "get": a word for reading.
Description, as the server wrote it Fetch one points transaction by ID. Smile: GET /points_transactions/{id}.
Annotations the server declares
- title: Get a points transaction
- readOnlyHint: true
smile_get_referral_settingsFetch the referral program's configuration: whether it is active, and the sender (advocate) and receiver (friend) rewards.No findings
Why it is in this group
- The name "smile_get_referral_settings" says "get": a word for reading.
Description, as the server wrote it Fetch the referral program's configuration: whether it is active, and the sender (advocate) and receiver (friend) rewards. Smile: GET /referral_settings.
Annotations the server declares
- title: Get referral settings
- readOnlyHint: true
smile_list_customersList loyalty-program customers, newest first, with their points balance, state and VIP tier id.No findings
Why it is in this group
- The name "smile_list_customers" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List customers
- readOnlyHint: true
smile_list_earning_rulesList 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 an…No findings
Why it is in this group
- The name "smile_list_earning_rules" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List earning rules
- readOnlyHint: true
smile_list_points_productsList points products — the rewards customers can buy with points.No findings
Why it is in this group
- The name "smile_list_points_products" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List points products
- readOnlyHint: true
smile_list_points_transactionsList points transactions (every earn, spend and manual adjustment), newest first — e.g.No findings
Why it is in this group
- The name "smile_list_points_transactions" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List points transactions
- readOnlyHint: true
smile_list_reward_fulfillmentsList rewards that have been issued to customers — usually discount codes — with code, fulfillment_status (pending/issued/cancelled/failed), usage_status (used/unused/untracked), us…No findings
Why it is in this group
- The name "smile_list_reward_fulfillments" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List reward fulfillments
- readOnlyHint: true
smile_list_vip_tiersList the VIP program's tiers, sorted by milestone (the threshold to reach each tier), optionally with each tier's perks and entry rewards.No findings
Why it is in this group
- The name "smile_list_vip_tiers" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List VIP tiers
- readOnlyHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.16.3. Values in angle brackets are yours to fill in.
claude mcp add --transport http smile-io https://smile-io.usefulapi.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__smile-io__smile_list_customers",
"mcp__smile-io__smile_get_customer",
"mcp__smile-io__smile_list_points_transactions",
"mcp__smile-io__smile_get_points_transaction",
"mcp__smile-io__smile_list_points_products",
"mcp__smile-io__smile_get_points_product",
"mcp__smile-io__smile_list_reward_fulfillments",
"mcp__smile-io__smile_list_earning_rules",
"mcp__smile-io__smile_list_vip_tiers",
"mcp__smile-io__smile_get_points_settings",
"mcp__smile-io__smile_get_referral_settings"
],
"ask": [],
"deny": [
"mcp__smile-io__smile_create_points_transaction",
"mcp__smile-io__smile_create_activity",
"mcp__smile-io__smile_purchase_points_product"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as smile-io. Review it before you use it.