Reviewshake MCP by usefulapi
Read reviews and widgets; subscribe or unsubscribe customers and manage widgets in Reviewshake.
Should I use this
Quality & Safety
Findings (2)
- LOWin reviewshake_unsubscribe_customer
- LOWin reviewshake_delete_review_sources
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"reviewshake": {
"url": "https://reviewshake.usefulapi.io/mcp"
}
}
}Remote endpoints
https://reviewshake.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (10)
🟢reviewshake_list_locations
List the locations (branches) on this Reviewshake account, with their slugs. Use a location slug in reviewshake_subscribe_customer. Reviewshake API: GET /api/v1/locations.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢reviewshake_list_reviews(rating, client_slug, location, source_name, start_date, ...)
List reviews collected for this account, newest first, with rating, text and source. Filter by rating, client, location, review source or date range. Reviewshake API: GET /api/v1/reviews.
Input Schema
{
"type": "object",
"properties": {
"rating": {
"description": "Only reviews with this star rating (1-5).",
"type": "integer",
"minimum": 1,
"maximum": 5
},
"client_slug": {
"description": "Only the client with this slug (from the Reviewshake dashboard).",
"type": "string",
"minLength": 1
},
"location": {
"description": "Only reviews for this location name.",
"type": "string",
"minLength": 1
},
"source_name": {
"description": "Only reviews from this review source, for example Google or Facebook.",
"type": "string",
"minLength": 1
},
"start_date": {
"description": "Only reviews on or after this date (yyyy-mm-dd).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"end_date": {
"description": "Only reviews on or before this date (yyyy-mm-dd).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"page": {
"description": "Page number (default 1). A page past the last one returns an empty list.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (1-100, default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢reviewshake_list_invitations(client_slug, page, per_page)
List the review invitations Reviewshake has sent, optionally for one client. Use it to check whether a customer was invited. Reviewshake API: GET /api/v1/invitations.
Input Schema
{
"type": "object",
"properties": {
"client_slug": {
"description": "Only the client with this slug (from the Reviewshake dashboard).",
"type": "string",
"minLength": 1
},
"page": {
"description": "Page number (default 1). A page past the last one returns an empty list.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (1-100, default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢reviewshake_list_widgets
List the review widgets (embeddable review displays) on this account, with their type and settings. Reviewshake API: GET /api/v1/widgets.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢reviewshake_get_widget(widget_id)
Get one review widget by id, with its type and settings. Reviewshake API: GET /api/v1/widgets/{id}.
Input Schema
{
"type": "object",
"properties": {
"widget_id": {
"type": "string",
"minLength": 1,
"description": "The widget id (from reviewshake_list_widgets)."
}
},
"required": [
"widget_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴reviewshake_subscribe_customer(campaign_name, client, location_slug, first_name, last_name, ...)
Subscribe one customer to a review campaign, so Reviewshake sends them a review invitation. This contacts a real person: send only when the user asked. Give an email or a phone number. Reviewshake API: POST /api/v1/customer/subscribe.
Input Schema
{
"type": "object",
"properties": {
"campaign_name": {
"type": "string",
"minLength": 1,
"description": "The campaign name as set in Reviewshake, for example \"order created\"."
},
"client": {
"type": "string",
"minLength": 1,
"description": "The client name the customer belongs to."
},
"location_slug": {
"type": "string",
"minLength": 1,
"description": "The location slug the customer belongs to (from reviewshake_list_locations)."
},
"first_name": {
"type": "string",
"minLength": 1,
"description": "The customer's first name."
},
"last_name": {
"description": "The customer's last name.",
"type": "string"
},
"email": {
"description": "The customer's email address. Optional when a phone number is given.",
"type": "string"
},
"phone": {
"description": "The customer's phone number in international format, for example +12025550123.",
"type": "string"
}
},
"required": [
"campaign_name",
"client",
"location_slug",
"first_name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴reviewshake_unsubscribe_customer(client, first_name, last_name, email, phone)
Stop review invitations for one customer, found by email or phone. This changes who gets messages: send only when the user asked. Reviewshake API: POST /api/v1/customer/unsubscribe.
Input Schema
{
"type": "object",
"properties": {
"client": {
"type": "string",
"minLength": 1,
"description": "The client name the customer belongs to."
},
"first_name": {
"description": "The customer's first name.",
"type": "string"
},
"last_name": {
"description": "The customer's last name.",
"type": "string"
},
"email": {
"description": "The customer's email address. Optional when a phone number is given.",
"type": "string"
},
"phone": {
"description": "The customer's phone number in international format.",
"type": "string"
}
},
"required": [
"client"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴reviewshake_create_widget(widget_type, ex_star_rating, max_reviews)
Create a review widget (an embeddable review display) with the chosen type. The widget is public once embedded on a site. Reviewshake API: POST /api/v1/widgets.
Input Schema
{
"type": "object",
"properties": {
"widget_type": {
"type": "string",
"enum": [
"List",
"Caroussel",
"Slider",
"Grid",
"Quote"
],
"description": "The widget type."
},
"ex_star_rating": {
"description": "Star ratings to leave out of the widget, for example [1, 2].",
"maxItems": 5,
"type": "array",
"items": {
"type": "integer",
"minimum": 1,
"maximum": 5
}
},
"max_reviews": {
"description": "The most reviews the widget shows.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
}
},
"required": [
"widget_type"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴reviewshake_delete_widget(widget_id, confirm)
Delete one review widget. It cannot be undone, and embeds of it stop working. Pass confirm: true only when the user asked for this deletion. Reviewshake API: DELETE /api/v1/widgets/{id}.
Input Schema
{
"type": "object",
"properties": {
"widget_id": {
"type": "string",
"minLength": 1,
"description": "The widget id (from reviewshake_list_widgets)."
},
"confirm": {
"type": "boolean",
"const": true,
"description": "Must be true. Set it only when the user asked for this deletion."
}
},
"required": [
"widget_id",
"confirm"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴reviewshake_delete_review_sources(source_ids, confirm)
Delete one or more review sources (the Google, Facebook or other review pages the account collects from). It cannot be undone. Pass confirm: true only when the user asked for this deletion. Reviewshake API: DELETE /api/v1/bulk_review_sources.
Input Schema
{
"type": "object",
"properties": {
"source_ids": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"description": "The review source ids to delete."
},
"confirm": {
"type": "boolean",
"const": true,
"description": "Must be true. Set it only when the user asked for this deletion."
}
},
"required": [
"source_ids",
"confirm"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence