Skip to content

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.

Deletes · 3

14 tools: 3 can delete or cancel things and 11 only read.

Scanned Oct 21, 2026

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/mcp

Tools

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/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.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.