Read Google reviews and stats, draft AI replies, publish the ones you approve, request reviews.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer rmk_... — create an API key at https://app.reputemap.com/settings/api-keys (requires a paid plan or trial)
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Generate 2-3 reply drafts for one review using ReputeMap's tuned generator (the same one the app uses, with the business's saved voice and sign-off), and save the draft so it appears in the app's editor. NEVER publishes anything - drafts only.
UUID from list_reviews
optional one-off guidance for this draft, e.g. 'mention the new units' or 'keep it under 40 words'
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Generate 2-3 reply drafts for one review using ReputeMap's tuned generator (the same one the app uses, with the business's saved voice and sign-off), and save the draft so it appears in the app's editor. NEVER publishes anything - drafts only.
| Argument | Type | Description |
|---|---|---|
| review_id* | string | UUID from list_reviews |
| instructions | string | optional one-off guidance for this draft, e.g. 'mention the new units' or 'keep it under 40 words' |
{
"type": "object",
"required": [
"review_id"
],
"properties": {
"review_id": {
"type": "string",
"description": "UUID from list_reviews"
},
"instructions": {
"type": "string",
"maxLength": 300,
"description": "optional one-off guidance for this draft, e.g. 'mention the new units' or 'keep it under 40 words'"
}
},
"additionalProperties": false
}Review stats per location and org totals: review counts, average rating, 1-5 star breakdown, unanswered count, and activity in the trailing window (default 30 days).
| Argument | Type | Description |
|---|---|---|
| days | integer | |
| location_id | string | UUID from list_locations; omit for all locations |
{
"type": "object",
"properties": {
"days": {
"type": "integer",
"default": 30,
"maximum": 365,
"minimum": 1
},
"location_id": {
"type": "string",
"description": "UUID from list_locations; omit for all locations"
}
},
"additionalProperties": false
}Current month's API credit usage for this org (shared between the REST API and MCP tools).
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}List every business location this ReputeMap org manages, with ids to use in the other tools.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}List Google reviews for the org (newest first) with the published reply text inlined. Filter by location, star-rating range, replied/unreplied, or a trailing day window. Google moderates owner replies: reply_state is approved, pending (Google is checking it) or rejected (not shown on Google - has_reply is false and reply_policy_violation says why; write a new reply).
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| offset | integer | |
| rating_max | integer | |
| rating_min | integer | |
| since_days | integer | only reviews from the last N days |
| location_id | string | UUID from list_locations; omit for all locations |
| unanswered_only | boolean | true = only reviews without an owner reply on Google (a reply Google rejected counts as none) |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 20,
"maximum": 50,
"minimum": 1
},
"offset": {
"type": "integer",
"default": 0,
"minimum": 0
},
"rating_max": {
"type": "integer",
"maximum": 5,
"minimum": 1
},
"rating_min": {
"type": "integer",
"maximum": 5,
"minimum": 1
},
"since_days": {
"type": "integer",
"maximum": 365,
"minimum": 1,
"description": "only reviews from the last N days"
},
"location_id": {
"type": "string",
"description": "UUID from list_locations; omit for all locations"
},
"unanswered_only": {
"type": "boolean",
"description": "true = only reviews without an owner reply on Google (a reply Google rejected counts as none)"
}
},
"additionalProperties": false
}PUBLISH a reply to this review's public Google profile. This is a public, customer-visible action - call it ONLY when the user has explicitly approved this exact text (Google's policy: a person approves every reply; one call per approved reply, never in bulk). If Google refuses the request, the text is preserved in ReputeMap with a manual fallback (status 'manual_required') - words are never lost. Google also moderates replies: google_state 'pending' = it is checking the reply before showing it; status 'rejected_by_google' = it will not show it (policy_violation and detail say why) - write a different reply.
| Argument | Type | Description |
|---|---|---|
| text* | string | the exact reply text the user approved |
| review_id* | string | UUID from list_reviews |
{
"type": "object",
"required": [
"review_id",
"text"
],
"properties": {
"text": {
"type": "string",
"description": "the exact reply text the user approved"
},
"review_id": {
"type": "string",
"description": "UUID from list_reviews"
}
},
"additionalProperties": false
}Send ONE review-request email to a real customer, through ReputeMap's campaign engine (respects unsubscribes and the suppression list). This emails a real person - only use it when the user explicitly asks to request a review. Returns status 'sent', 'skipped' (opted out or suppressed), 'already_requested' (this location already asked this address - no second email is sent and no credit is spent) or 'failed'.
| Argument | Type | Description |
|---|---|---|
| name | string | customer name (optional) |
| email* | string | customer email address |
| location_id* | string | UUID from list_locations |
{
"type": "object",
"required": [
"location_id",
"email"
],
"properties": {
"name": {
"type": "string",
"description": "customer name (optional)"
},
"email": {
"type": "string",
"description": "customer email address"
},
"location_id": {
"type": "string",
"description": "UUID from list_locations"
}
},
"additionalProperties": false
}