Reviewshake MCP by usefulapi

Read reviews and widgets; subscribe or unsubscribe customers and manage widgets in Reviewshake.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
84%
Naming quality
96%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • LOWTool 'reviewshake_unsubscribe_customer' name length outside 3-30 rangein reviewshake_unsubscribe_customer
  • LOWTool 'reviewshake_delete_review_sources' name length outside 3-30 rangein reviewshake_delete_review_sources

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,868Tokens (tool definitions)
~1.4 KBTypical response size
Moderate attention impact (1.46% of 128k context)

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

What it can do

Tool inventory

Tools (10)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded10 tools