# Tillhub MCP by usefulapi (remote · tillhub.usefulapi.io)

Read Tillhub products, stock, transactions, customers and retail reports from your AI assistant.

- Trust score: 18/100 (low)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `tillhub.usefulapi.io`: 18/100 (this document), [markdown](https://verifymcp.io/servers/io-usefulapi-tillhub/tillhub.md), [page](https://verifymcp.io/servers/io-usefulapi-tillhub/tillhub)

## Channel facts

- Endpoint: `https://tillhub.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.6.3`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.
  - HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly.
- **Schema Quality & AI Usability**: 0/100
  - Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 0/100
  - Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Tool Safety**: 0/100
  - Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Capabilities**: 0/100
  - Capabilities not yet verified: we couldn't read the endpoint's capabilities.

**Unverified: 5 categories.** Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

## Install

### How do I install the Tillhub MCP by usefulapi server?

Tillhub MCP by usefulapi is a hosted endpoint at https://tillhub.usefulapi.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http io-usefulapi-tillhub 'https://tillhub.usefulapi.io/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "io-usefulapi-tillhub": {
      "url": "https://tillhub.usefulapi.io/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "io-usefulapi-tillhub": {
      "type": "http",
      "url": "https://tillhub.usefulapi.io/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.io-usefulapi-tillhub]
url = "https://tillhub.usefulapi.io/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-usefulapi-tillhub": {
      "type": "remote",
      "url": "https://tillhub.usefulapi.io/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-usefulapi-tillhub --url 'https://tillhub.usefulapi.io/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-usefulapi-tillhub:
    url: "https://tillhub.usefulapi.io/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "io-usefulapi-tillhub": {
      "Transport": "http",
      "Url": "https://tillhub.usefulapi.io/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add io-usefulapi-tillhub -t streamable-http -u 'https://tillhub.usefulapi.io/mcp'
```

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-tillhub": {
      "type": "http",
      "url": "https://tillhub.usefulapi.io/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-01 (score 18, −47)

- [security regression] Endpoint reachability: reachable → not serving MCP
- [security regression] Tool safety: pass → unverified
- [security regression] Authorization: pass → unverified
- [security regression] Stability: 0.03 → unverified
- [functional regression] Schema quality: 100 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified

### 2026-10-31 (score 65, +3)

- [security improvement] Authorization: partial → pass
- [functional improvement] Stability: unverified → 0.03
- [functional improvement] MCP protocol: fail → pass
- [functional] New prompt “check_stock_and_recent_movements”
- [functional] New prompt “find_a_customer_record”
- [functional] New prompt “find_best_selling_products”
- [functional] New prompt “inspect_cash_register_closings”
- [functional] New prompt “review_sales_across_branches”
- [functional] MCP protocol version: 2025-06-18 → 2025-11-25
- [functional] Server version: 1.2.0 → 1.4.0
- [functional] Server version: 1.1.0 → 1.2.0
- [functional] Server version: 1.0.2 → 1.1.0

### 2026-10-30 (score 62)

First indexed and scored.

## MCP tools (27)

### `tillhub_get_account` (~38 tokens)

Get API user and account

The Tillhub user behind the API key: role, scopes, account id and name (no credentials). GET /api/v0/me.

### `tillhub_list_products` (~292 tokens)

List products

List products (articles, variants, vouchers) with name, number, barcode, prices, taxes and product group. Filter by type, group, tag, barcode or custom id (barcode and custom_id are fast exact lookups and ignore the other filters). Page with next_query. GET /api/v1/products/{account}.

Input parameters:

- `active` (boolean): Only active (true) or inactive (false) products.
- `barcode` (string): Exact barcode (ignores the other filters).
- `custom_id` (string): Exact product number / custom id (ignores the other filters).
- `deleted` (boolean): true = deleted products only; default non-deleted.
- `limit` (integer): Items per page, 1-100 (default 50).
- `next_query` (string): next_query from the previous reply to get the following page. It already contains the filters, so the other arguments are ignored.
- `product_group` (string): Product group id.
- `sellable` (boolean): Only products suitable for sale (true) or not (false).
- `tag` (string): Tag name.
- `type` (string): Product type.
- `updated_since` (string): Only products updated at or after this time. ISO 8601 date (2026-10-01) or date-time (2026-10-01T00:00:00Z).

### `tillhub_search_products` (~95 tokens)

Search products

Fuzzy search products by name and description (max 20 hits per page, with relevance score). GET /api/v2/products/{account}/search.

Input parameters:

- `limit` (integer): Hits per page, 1-20.
- `offset` (integer): Result offset for paging search results.
- `query` (string, required): Search text; partial words are matched.
- `sellable` (boolean): Only sellable products.

### `tillhub_get_product` (~64 tokens)

Get product

One product by id, optionally with the stock and prices of one branch. GET /api/v1/products/{account}/{id}.

Input parameters:

- `branch` (string): Branch id for branch-specific stock data.
- `product_id` (string, required): Tillhub product id (uuid).

### `tillhub_list_product_groups` (~94 tokens)

List product groups

List product groups (categories) with id and name. GET /api/v0/product_groups/{account}.

Input parameters:

- `active` (boolean): Only active (true) or inactive (false) groups.
- `deleted` (boolean): true = deleted groups only.
- `next_query` (string): next_query from the previous reply to get the following page. It already contains the filters, so the other arguments are ignored.

### `tillhub_list_tags` (~81 tokens)

List tags

List product tags. GET /api/v1/tags/{account}.

Input parameters:

- `deleted` (boolean): true = deleted tags only.
- `next_query` (string): next_query from the previous reply to get the following page. It already contains the filters, so the other arguments are ignored.
- `query` (string): Text search on the tag name.

### `tillhub_list_transactions` (~272 tokens)

List transactions

List sales and other register transactions (type, date, branch, register, staff, customer, amounts, payments, cart items). Always pass a date range for busy shops. Page with next_query. GET /api/v1/transactions/{account}.

Input parameters:

- `branch` (string): Branch id.
- `customer` (string): Customer id.
- `date_end` (string): Only transactions before this time. ISO 8601 date (2026-10-01) or date-time (2026-10-01T00:00:00Z).
- `date_start` (string): Only transactions on or after this time. ISO 8601 date (2026-10-01) or date-time (2026-10-01T00:00:00Z).
- `limit` (integer): Items per page, 1-100 (default 50).
- `next_query` (string): next_query from the previous reply to get the following page. It already contains the filters, so the other arguments are ignored.
- `receipt_number` (string): Receipt number (custom id).
- `register` (string): Register id.
- `staff` (string): Cashier staff id.
- `type` (string): Transaction type, for example sale, sale_cancel, expense, deposit.

### `tillhub_get_transaction` (~49 tokens)

Get transaction

One transaction by id with its full cart, payments and taxes. GET /api/v1/transactions/{account}/{id}.

Input parameters:

- `transaction_id` (string, required): Tillhub transaction id (uuid).

### `tillhub_transactions_report` (~243 tokens)

Transactions report

Detailed transactions report for a period, filterable by branch, register, staff, customer, type and currency. GET /api/v3/analytics/{account}/reports/transactions/overview.

Input parameters:

- `branch` (string): Branch id.
- `currency` (string): Currency ISO code, e.g. EUR.
- `customer` (string): Customer id.
- `date_end` (string): Only transactions before this time. ISO 8601 date (2026-10-01) or date-time (2026-10-01T00:00:00Z).
- `date_start` (string): Only transactions on or after this time. ISO 8601 date (2026-10-01) or date-time (2026-10-01T00:00:00Z).
- `next_query` (string): next_query from the previous reply to get the following page. It already contains the filters, so the other arguments are ignored.
- `register` (string): Register id.
- `staff` (string): Cashier staff id.
- `type` (string): Transaction type, for example sale, sale_cancel, expense, deposit.

### `tillhub_list_receipts` (~89 tokens)

List receipts

List receipts (printed or digital) of the account. Page with next_query. GET /api/v1/receipts/{account}.

Input parameters:

- `limit` (integer): Items per page, 1-100 (default 50).
- `next_query` (string): next_query from the previous reply to get the following page. It already contains the filters, so the other arguments are ignored.

### `tillhub_revenue_sum` (~172 tokens)

Revenue total for a period

Total revenue between two points in time, optionally for one branch number. GET /api/v0/analytics/{account}/aggregates/revenues/sum.

Input parameters:

- `branch_number` (string): Branch number (not the id).
- `end` (string, required): End of the period. ISO 8601 date (2026-10-01) or date-time (2026-10-01T00:00:00Z).
- `next_query` (string): next_query from the previous reply to get the following page. It already contains the filters, so the other arguments are ignored.
- `start` (string, required): Start of the period. ISO 8601 date (2026-10-01) or date-time (2026-10-01T00:00:00Z).

### `tillhub_sales_aggregate` (~183 tokens)

Sales per hour or day

Sales and revenue aggregated per hour or per day between two points in time. GET /api/v0/analytics/{account}/aggregates/sales.

Input parameters:

- `branch_number` (string): Branch number (not the id).
- `end` (string, required): End of the period. ISO 8601 date (2026-10-01) or date-time (2026-10-01T00:00:00Z).
- `next_query` (string): next_query from the previous reply to get the following page. It already contains the filters, so the other arguments are ignored.
- `precision` (string): Interval size (default day).
- `start` (string, required): Start of the period. ISO 8601 date (2026-10-01) or date-time (2026-10-01T00:00:00Z).

### `tillhub_top_products` (~171 tokens)

Top products

Best-selling products in a period, optionally for one branch number. GET /api/v0/analytics/{account}/reports/products/top.

Input parameters:

- `branch_number` (string): Branch number (not the id).
- `end` (string): End of the period (exclusive). ISO 8601 date (2026-10-01) or date-time (2026-10-01T00:00:00Z).
- `next_query` (string): next_query from the previous reply to get the following page. It already contains the filters, so the other arguments are ignored.
- `start` (string): Start of the period (inclusive). ISO 8601 date (2026-10-01) or date-time (2026-10-01T00:00:00Z).

### `tillhub_list_balances` (~145 tokens)

List cash-register balances

List cash-register closings (balances / Z-reports) with totals per register and day. Filter by branch, register or staff. Page with next_query. GET /api/v0/analytics/{account}/reports/balances.

Input parameters:

- `branch` (string): Branch id.
- `limit` (integer): Items per page, 1-100 (default 50).
- `next_query` (string): next_query from the previous reply to get the following page. It already contains the filters, so the other arguments are ignored.
- `query` (string): Text search.
- `register` (string): Register id.
- `staff` (string): Staff id.

### `tillhub_list_customers` (~246 tokens)

List customers

List customers with name, company, email, phone numbers and addresses. Filter by text, name, email, company or customer number. Page with next_query. GET /api/v1/customers/{account}.

Input parameters:

- `active` (boolean): Only active (true) or inactive (false) customers.
- `company` (string): Company name substring.
- `customer_number` (string): Exact customer number (ignores the other filters).
- `email` (string): Email substring.
- `firstname` (string): First name substring.
- `lastname` (string): Last name substring.
- `limit` (integer): Items per page, 1-100 (default 50).
- `next_query` (string): next_query from the previous reply to get the following page. It already contains the filters, so the other arguments are ignored.
- `query` (string): Text search over first name, last name, email, company and number.
- `updated_since` (string): Only customers updated at or after this time. ISO 8601 date (2026-10-01) or date-time (2026-10-01T00:00:00Z).

### `tillhub_search_customers` (~85 tokens)

Search customers

Fuzzy search customers by name, email and description (max 100 hits, with relevance score). GET /api/v2/customers/{account}/search.

Input parameters:

- `limit` (integer): Hits per page, 1-100.
- `offset` (integer): Result offset for paging search results.
- `query` (string, required): Search text; partial words are matched.

### `tillhub_get_customer` (~41 tokens)

Get customer

One customer by id. GET /api/v1/customers/{account}/{id}.

Input parameters:

- `customer_id` (string, required): Tillhub customer id (uuid).

### `tillhub_list_branches` (~139 tokens)

List branches

List branches (shops) with number, name and address. Use the ids to filter transactions, stock and prices. Page with next_query. GET /api/v1/branches/{account}.

Input parameters:

- `active` (boolean): Only active (true) or inactive (false) branches.
- `limit` (integer): Items per page, 1-100 (default 50).
- `name` (string): Name substring.
- `next_query` (string): next_query from the previous reply to get the following page. It already contains the filters, so the other arguments are ignored.
- `query` (string): Text search over several fields.

### `tillhub_list_registers` (~106 tokens)

List registers

List cash registers with number, name and branch. GET /api/v1/registers/{account}.

Input parameters:

- `active` (boolean): Only active (true) or inactive (false) registers.
- `branch` (string): Only registers of this branch id.
- `next_query` (string): next_query from the previous reply to get the following page. It already contains the filters, so the other arguments are ignored.
- `query` (string): Text search on the name.

### `tillhub_list_staff` (~118 tokens)

List staff

List staff members (cashiers) with name, number and branch. PINs and passwords are never returned. GET /api/v1/staff/{account}.

Input parameters:

- `active` (boolean): Only active (true) or inactive (false) staff.
- `branch` (string): Only staff of this branch id.
- `next_query` (string): next_query from the previous reply to get the following page. It already contains the filters, so the other arguments are ignored.
- `query` (string): Text search over name and email.

### `tillhub_list_payment_options` (~87 tokens)

List payment options

List payment options (cash, card, voucher, ...) configured for the account. GET /api/v0/payment_options/{account}.

Input parameters:

- `active` (boolean): Only active (true) or inactive (false) options.
- `next_query` (string): next_query from the previous reply to get the following page. It already contains the filters, so the other arguments are ignored.

### `tillhub_list_taxes` (~80 tokens)

List taxes

List tax (VAT) references with rates. GET /api/v0/taxes/{account}.

Input parameters:

- `active` (boolean): Only active (true) or inactive (false) taxes.
- `next_query` (string): next_query from the previous reply to get the following page. It already contains the filters, so the other arguments are ignored.

### `tillhub_list_discounts` (~90 tokens)

List discounts

List configured discounts. GET /api/v0/discounts/{account}.

Input parameters:

- `active` (boolean): Only active (true) or inactive (false) discounts.
- `branch` (string): Only discounts available in this branch id.
- `next_query` (string): next_query from the previous reply to get the following page. It already contains the filters, so the other arguments are ignored.

### `tillhub_list_stock` (~94 tokens)

List stock levels

Current stock per product and location. Filter by location (branch/warehouse id) or product id. GET /api/v0/stock/{account}.

Input parameters:

- `location` (string): Location id (branch or warehouse).
- `next_query` (string): next_query from the previous reply to get the following page. It already contains the filters, so the other arguments are ignored.
- `product` (string): Product id.

### `tillhub_list_stock_locations` (~67 tokens)

List stock locations

List stock locations (branches and warehouses) with their ids. GET /api/v0/stock/{account}/locations.

Input parameters:

- `next_query` (string): next_query from the previous reply to get the following page. It already contains the filters, so the other arguments are ignored.

### `tillhub_list_stock_book` (~237 tokens)

List stock movements

Stock book: every stock movement (sale, delivery, correction, transfer) with product, location, quantity and date. Filter by product, location, period or text. Page with next_query. GET /api/v1/stock/{account}/book.

Input parameters:

- `end` (string): Only movements before this time. ISO 8601 date (2026-10-01) or date-time (2026-10-01T00:00:00Z).
- `limit` (integer): Items per page, 1-100 (default 50).
- `location` (string): Location id.
- `next_query` (string): next_query from the previous reply to get the following page. It already contains the filters, so the other arguments are ignored.
- `product` (string): Product id.
- `query` (string): Text search over product name, barcode, group and location.
- `start` (string): Only movements on or after this time. ISO 8601 date (2026-10-01) or date-time (2026-10-01T00:00:00Z).

### `tillhub_list_orders` (~113 tokens)

List orders

List incoming or outgoing orders (goods orders between locations/suppliers). Page with next_query. GET /api/v0/orders/{account}.

Input parameters:

- `deleted` (boolean): true = deleted orders only.
- `direction` (string): Only incoming or outgoing orders.
- `limit` (integer): Items per page, 1-100 (default 50).
- `next_query` (string): next_query from the previous reply to get the following page. It already contains the filters, so the other arguments are ignored.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-usefulapi-tillhub/tillhub#diagnostics

## Score history

- 2026-11-05: 18
- 2026-11-04: 18
- 2026-11-03: 18
- 2026-11-02: 18
- 2026-11-01: 18
- 2026-10-31: 65
- 2026-10-30: 62

## Common questions

### What is the Tillhub MCP by usefulapi server?

Tillhub MCP by usefulapi is listed in the public MCP registry as io.usefulapi/tillhub. Read Tillhub products, stock, transactions, customers and retail reports from your AI assistant. This page covers its hosted endpoint (https://tillhub.usefulapi.io/mcp).

### Is the Tillhub MCP by usefulapi server safe to use?

Tillhub MCP by usefulapi scores 18 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Tillhub MCP by usefulapi server expose?

Tillhub MCP by usefulapi exposes 27 tools: tillhub_get_account, tillhub_list_products, tillhub_search_products, tillhub_get_product, tillhub_list_product_groups, and 22 more. Their descriptions and schemas cost roughly 3,491 tokens of context every time the server is loaded.

### Does the Tillhub MCP by usefulapi server require authentication?

Its publisher declares no required credentials for Tillhub MCP by usefulapi. We have not been able to confirm that against the live endpoint, and a server can require authorisation without declaring it here.

### Is the Tillhub MCP by usefulapi server still maintained?

Tillhub MCP by usefulapi is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What did VerifyMCP test on the Tillhub MCP by usefulapi server?

VerifyMCP ran 4 checks on Tillhub MCP by usefulapi, covering TLS certificate, HSTS header, DNSSEC and Transport. 7 items could not be completed, a gap on our side rather than a finding about Tillhub MCP by usefulapi: Authorization, HTTPS, Schema quality, Stability and 3 more. 5 categories score 0 for that reason, because we only credit what we can confirm. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- Remote endpoint: https://tillhub.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Website: https://usefulapi.io/tillhub/
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-tillhub/tillhub.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-tillhub/tillhub/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/io-usefulapi-tillhub/tillhub.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-tillhub/tillhub
