Smaregi MCP by usefulapi
io.usefulapi/smaregiusefulapi.iostreamable-httpv1.0.0Scanned
Read Smaregi stores, products, customers, stock and transactions; manage customers, products, stock.
20 tools: 4 can delete or cancel things, 2 change things and 14 only read.
- Reads private data · 2
- Reads text others write · 20
- Can send data out · 2
- No findings
Anlyon alternative
6 of these tools change something. Run those as governed actions.
Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.
Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.
Import an OpenAPI spec →Tools
Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.
20 tools
Deletes or cancels 4Claude Code: deny
smaregi_adjust_stockWRITE: add (positive) or subtract (negative) a quantity to the stock of one product in one store.Reads text others writeNo findings
Why it is in this group
- The description's first verb is "write": a word for a change.
- The server marks it destructive (destructiveHint: true).
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it WRITE: add (positive) or subtract (negative) a quantity to the stock of one product in one store. Not idempotent: a repeat applies the change again. POST /stock/{product_id}/add.
Annotations the server declares
- title: Adjust stock level
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
smaregi_set_stockWRITE: set the absolute stock quantity of one product in one store, replacing the current quantity.Reads text others writeNo findings
Why it is in this group
- The name "smaregi_set_stock" says "set": a word for a change.
- The server marks it destructive (destructiveHint: true).
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it WRITE: set the absolute stock quantity of one product in one store, replacing the current quantity. Use smaregi_adjust_stock for a relative change. PATCH /stock/{product_id}.
Annotations the server declares
- title: Set stock level
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
smaregi_update_customerWRITE: change fields of one customer (only the fields you pass are changed).Reads text others writeNo findings
Why it is in this group
- The name "smaregi_update_customer" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it WRITE: change fields of one customer (only the fields you pass are changed). Overwrites the old values. PATCH /customers/{customer_id}.
Annotations the server declares
- title: Update customer
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
smaregi_update_productWRITE: change fields of one product (only the fields you pass are changed), for example its price or name.Reads text others writeNo findings
Why it is in this group
- The name "smaregi_update_product" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it WRITE: change fields of one product (only the fields you pass are changed), for example its price or name. Overwrites the old values. PATCH /products/{product_id}.
Annotations the server declares
- title: Update product
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
Changes things 2Claude Code: ask
smaregi_create_customerWRITE: create a customer (member).Reads text others writeCan send data outNo findings
Why it is in this group
- The name "smaregi_create_customer" says "create": a word for a change.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- outboundThe input takes a destination (input.phoneNumber): what the tool writes goes there.
Description, as the server wrote it WRITE: create a customer (member). customerCode, firstName and lastName are required; the contract's own required-column settings may demand more. Not idempotent: calling twice with a different code creates two customers. POST /customers.
Annotations the server declares
- title: Create customer
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
smaregi_create_productWRITE: create a product.Reads text others writeCan send data outNo findings
Why it is in this group
- The name "smaregi_create_product" says "create": a word for a change.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
Description, as the server wrote it WRITE: create a product. categoryId, productName and price are required. Not idempotent. POST /products.
Annotations the server declares
- title: Create product
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
Only reads 14Show 14 read-only tools
smaregi_get_categoryOne product category by id.Reads text others writeNo findings
Why it is in this group
- The name "smaregi_get_category" says "get": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it One product category by id. GET /categories/{category_id}.
Annotations the server declares
- title: Get category
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
smaregi_get_customerOne customer by id, optionally with the contract's custom fields.Reads text others writeNo findings
Why it is in this group
- The name "smaregi_get_customer" says "get": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it One customer by id, optionally with the contract's custom fields. Contains personal data. GET /customers/{customer_id}.
Annotations the server declares
- title: Get customer
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
smaregi_get_productOne product by id, optionally with store prices, bundled items, store assignments, reserved stock, attribute items and order settings.Reads text others writeNo findings
Why it is in this group
- The name "smaregi_get_product" says "get": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it One product by id, optionally with store prices, bundled items, store assignments, reserved stock, attribute items and order settings. GET /products/{product_id}.
Annotations the server declares
- title: Get product
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
smaregi_get_staffOne staff member by id.Reads text others writeNo findings
Why it is in this group
- The name "smaregi_get_staff" says "get": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it One staff member by id. GET /staffs/{staff_id}.
Annotations the server declares
- title: Get staff member
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
smaregi_get_storeOne store by id.Reads text others writeNo findings
Why it is in this group
- The name "smaregi_get_store" says "get": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it One store by id. GET /stores/{store_id}.
Annotations the server declares
- title: Get store
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
smaregi_get_transactionOne transaction (receipt) by its transaction id (transactionHeadId), optionally with line items, discounts and payments.Reads text others writeNo findings
Why it is in this group
- The name "smaregi_get_transaction" says "get": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it One transaction (receipt) by its transaction id (transactionHeadId), optionally with line items, discounts and payments. Contains personal data. GET /transactions/{transaction_id}.
Annotations the server declares
- title: Get transaction
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
smaregi_list_categoriesList product categories (departments): id, code, name, parent, level.Reads text others writeNo findings
Why it is in this group
- The name "smaregi_list_categories" says "list": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it List product categories (departments): id, code, name, parent, level. Use the ids when creating or filtering products. GET /categories.
Annotations the server declares
- title: List categories
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
smaregi_list_customersList customers (members): id, code, number, name, phone, e-mail, address.Reads private dataReads text others writeNo findings
Why it is in this group
- The name "smaregi_list_customers" says "list": a word for reading.
What it can reach
- private-dataThe description's first sentence says "list" and "mail": it reads mail.
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- untrusted-inputThe description's first sentence says "list" and "mail": it reads inbound email, which other people can write.
Description, as the server wrote it List customers (members): id, code, number, name, phone, e-mail, address. Smaregi cannot search by name, phone or e-mail: filter by customer code, member number, id range or update time, or page through. Contains shoppers' personal data. GET /customers.
Annotations the server declares
- title: List customers
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
smaregi_list_productsList products with id, category, code, name, price, cost and update time.Reads text others writeNo findings
Why it is in this group
- The name "smaregi_list_products" says "list": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it List products with id, category, code, name, price, cost and update time. Filter by category, code, group code, display flag or update time (a 31-day maximum range). GET /products.
Annotations the server declares
- title: List products
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
smaregi_list_staffsList staff members: id, code, name, role, e-mail.Reads private dataReads text others writeNo findings
Why it is in this group
- The name "smaregi_list_staffs" says "list": a word for reading.
What it can reach
- private-dataThe description's first sentence says "list" and "mail": it reads mail.
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- untrusted-inputThe description's first sentence says "list" and "mail": it reads inbound email, which other people can write.
Description, as the server wrote it List staff members: id, code, name, role, e-mail. Passwords are never returned. GET /staffs.
Annotations the server declares
- title: List staff
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
smaregi_list_stockList stock levels per store and product (stockAmount, reserved amount).Reads text others writeNo findings
Why it is in this group
- The name "smaregi_list_stock" says "list": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it List stock levels per store and product (stockAmount, reserved amount). Filter by store or product. Smaregi only lists a product once its quantity has changed at least once. An update-time filter needs both bounds (31 days at most). GET /stock.
Annotations the server declares
- title: List stock levels
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
smaregi_list_stock_changesThe stock change history of one product in one store: date, amount, division (sale, purchase, transfer, adjustment...).Reads text others writeNo findings
Why it is in this group
- The name "smaregi_list_stock_changes" says "list": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it The stock change history of one product in one store: date, amount, division (sale, purchase, transfer, adjustment...). GET /stock/changes/{product_id}/{store_id}.
Annotations the server declares
- title: List stock history
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
smaregi_list_storesList the stores (shops) of the Smaregi contract: id, code, name, address, phone.Reads text others writeNo findings
Why it is in this group
- The name "smaregi_list_stores" says "list": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it List the stores (shops) of the Smaregi contract: id, code, name, address, phone. Use the ids to filter stock and transactions. GET /stores.
Annotations the server declares
- title: List stores
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
smaregi_list_transactionsList sales transactions (receipts) in a time window of at most 31 days: id, date-time, division (1 = normal sale, 2 = deposit, 3 = withdrawal...), store, terminal, customer, totals…Reads text others writeNo findings
Why it is in this group
- The name "smaregi_list_transactions" says "list": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it List sales transactions (receipts) in a time window of at most 31 days: id, date-time, division (1 = normal sale, 2 = deposit, 3 = withdrawal...), store, terminal, customer, totals. Optionally with the line items (limit 100 then). Contains shoppers' personal data. GET /transactions.
Annotations the server declares
- title: List transactions
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: 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.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
80 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 2 outbound tools breaks every one.
- Reads private data2
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write20
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out2
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
{
"permissions": {
"deny": [
"mcp__smaregi__smaregi_create_customer",
"mcp__smaregi__smaregi_create_product"
]
}
}Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Findings
Matches of fixed checks, with the text they matched.
No check matched anything in these tool definitions. That is not a safety guarantee.
History
Changes to its tool definitions and to its remote endpoint, newest first.
No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http smaregi https://smaregi.usefulapi.io/mcpclaude mcp add --transport http smaregi https://smaregi.usefulapi.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__smaregi__smaregi_list_stores",
"mcp__smaregi__smaregi_get_store",
"mcp__smaregi__smaregi_list_staffs",
"mcp__smaregi__smaregi_get_staff",
"mcp__smaregi__smaregi_list_categories",
"mcp__smaregi__smaregi_get_category",
"mcp__smaregi__smaregi_list_products",
"mcp__smaregi__smaregi_get_product",
"mcp__smaregi__smaregi_list_customers",
"mcp__smaregi__smaregi_get_customer",
"mcp__smaregi__smaregi_list_stock",
"mcp__smaregi__smaregi_list_stock_changes",
"mcp__smaregi__smaregi_list_transactions",
"mcp__smaregi__smaregi_get_transaction"
],
"ask": [
"mcp__smaregi__smaregi_create_customer",
"mcp__smaregi__smaregi_create_product"
],
"deny": [
"mcp__smaregi__smaregi_update_customer",
"mcp__smaregi__smaregi_update_product",
"mcp__smaregi__smaregi_set_stock",
"mcp__smaregi__smaregi_adjust_stock"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as smaregi. Review it before you use it.
Capability tags behind 20 rules
- mcp__smaregi__smaregi_list_stores untrusted-input
- mcp__smaregi__smaregi_get_store untrusted-input
- mcp__smaregi__smaregi_list_staffs private-data, untrusted-input
- mcp__smaregi__smaregi_get_staff untrusted-input
- mcp__smaregi__smaregi_list_categories untrusted-input
- mcp__smaregi__smaregi_get_category untrusted-input
- mcp__smaregi__smaregi_list_products untrusted-input
- mcp__smaregi__smaregi_get_product untrusted-input
- mcp__smaregi__smaregi_list_customers private-data, untrusted-input
- mcp__smaregi__smaregi_get_customer untrusted-input
- mcp__smaregi__smaregi_list_stock untrusted-input
- mcp__smaregi__smaregi_list_stock_changes untrusted-input
- mcp__smaregi__smaregi_list_transactions untrusted-input
- mcp__smaregi__smaregi_get_transaction untrusted-input
- mcp__smaregi__smaregi_create_customer untrusted-input, outbound
- mcp__smaregi__smaregi_update_customer untrusted-input
- mcp__smaregi__smaregi_create_product untrusted-input, outbound
- mcp__smaregi__smaregi_update_product untrusted-input
- mcp__smaregi__smaregi_set_stock untrusted-input
- mcp__smaregi__smaregi_adjust_stock untrusted-input
Pin
Keep the decision: fail CI when the tools change, follow every change, or show a badge.
Pin in CI
Fail a build when the tools you reviewed are not the tools the server serves today.
curl -s "https://anlyon.dev/api/v1/servers/io.usefulapi/smaregi/verify?hash=8d9af6e2881b77e109209aacba7f9b7de8bd67f1aed32a05a3add5c43cc136ac" | jq -e '.changed == false'Pinned hash 8d9af6e2881b, from Oct 25, 2026, 21:19 UTC.
Watch
Get told when its tools change: a new tool, a new description, a new class.
https://anlyon.dev/servers/io.usefulapi/smaregi/changes.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/io.usefulapi/smaregi)Source: MCP Registry · repository. Synced Oct 25, 2026, 21:18 UTC.