Reactions
Likes, follows, saves, shares and other reactions on anything on your site — comments, posts, products. Visitors see counts and their own state; you see who reacted and what is most popular. Every reaction type is set up via endpoints; no code needed.
Endpoints (10)
Create a reaction type, e.g. "like", "follow", "save" or "share". behavior "toggle": one per visitor per item, can be undone (like, follow, save). behavior "counter": every action counts, with a cooldown per visitor (share, search, view). access "anonymous": any visitor, tied to their browser session (a new session can react again). access "verified": signed-in visitors or tenants only, truly one per person. Reactions do not check that the item exists — use target_types to restrict what can be reacted to.
| Field | Type | Required | Description |
|---|---|---|---|
kind_key |
string | ✓ Yes | Short id, lowercase letters, digits, - and _. Example: "like". |
label |
string | ✓ Yes | Human-readable name. |
access |
string | ✓ Yes | "anonymous" or "verified". No default: choose deliberately. |
behavior |
string | ✓ Yes | "toggle" or "counter". Cannot change after the first reaction. |
target_types |
array | No | Allowed item types, e.g. ["comment"] or ["post","product"]. Default: any type. |
counter_cooldown_seconds |
integer | No | Counter only: seconds before the same visitor counts again for the same item (0-86400). Default 60. |
public_counts |
boolean | No | Show counts to visitors. Default true. |
per_ip_hourly |
integer | No | Anonymous only: max new reactions per IP address per hour (0 = off, max 1000). Default 60. |
Change a reaction type. Only send what changes. behavior is fixed after the first reaction. Set is_active false to pause.
| Field | Type | Required | Description |
|---|---|---|---|
kind_key |
string | ✓ Yes | |
label |
string | No | |
access |
string | No | |
behavior |
string | No | |
target_types |
array | No | |
counter_cooldown_seconds |
integer | No | |
public_counts |
boolean | No | |
per_ip_hourly |
integer | No | |
is_active |
boolean | No |
All reaction types of this project with their settings, plus the platform limits.
No input parameters required.
Who reacted to one item (toggle types only), newest first. Paginated.
| Field | Type | Required | Description |
|---|---|---|---|
kind_key |
string | ✓ Yes | |
target_type |
string | ✓ Yes | |
target_id |
string | ✓ Yes | |
page |
integer | No | |
per_page |
integer | No | Default 50, max 200. |
Items with the highest totals for a reaction type, e.g. the most liked posts.
| Field | Type | Required | Description |
|---|---|---|---|
kind_key |
string | ✓ Yes | |
target_type |
string | No | Only this item type. |
limit |
integer | No | Default 20, max 100. |
Remove all reactions of one type from one item and reset its total to zero, e.g. after abuse or when the item is deleted.
| Field | Type | Required | Description |
|---|---|---|---|
kind_key |
string | ✓ Yes | |
target_type |
string | ✓ Yes | |
target_id |
string | ✓ Yes |
The current visitor reacts to an item. Toggle types: turns it on (calling again changes nothing). Counter types: adds one, unless the cooldown is still running. Returns the new total and the visitor's own state. Only visitors can react.
| Field | Type | Required | Description |
|---|---|---|---|
kind_key |
string | ✓ Yes | |
target_type |
string | ✓ Yes | e.g. "comment", "post", "product". |
target_id |
string | ✓ Yes | Id of the item, e.g. the comment id. |
The current visitor undoes a toggle reaction (unlike, unfollow, unsave). Calling it when not reacted changes nothing.
| Field | Type | Required | Description |
|---|---|---|---|
kind_key |
string | ✓ Yes | |
target_type |
string | ✓ Yes | |
target_id |
string | ✓ Yes |
Totals for up to 100 items in one call, per reaction type, plus "mine" (whether the current visitor has reacted). Use this once per page for all items shown.
| Field | Type | Required | Description |
|---|---|---|---|
targets |
array | ✓ Yes | List of items, e.g. [{"type":"comment","id":"12"},{"type":"comment","id":"15"}]. Max 100. |
kinds |
array | No | Only these reaction types, e.g. ["like"]. Default: all active types. |
The items the current visitor has reacted to with a toggle type, e.g. their saved items or who they follow. Newest first.
| Field | Type | Required | Description |
|---|---|---|---|
kind_key |
string | ✓ Yes | |
target_type |
string | No | |
page |
integer | No | |
per_page |
integer | No | Default 50, max 200. |
MCP Tool Names
When using this integration through an AI assistant (Claude, ChatGPT, Cursor, etc.), the endpoints are available as MCP tools:
| Endpoint | MCP Tool Name |
|---|---|
| define-kind | reactions_define_kind |
| update-kind | reactions_update_kind |
| get-config | reactions_get_config |
| list-reactions | reactions_list_reactions |
| top-targets | reactions_top_targets |
| clear-target | reactions_clear_target |
| react | reactions_react |
| unreact | reactions_unreact |
| get-counts | reactions_get_counts |
| my-reactions | reactions_my_reactions |
Website