The Uberall Platform MCP server is a hosted Model Context Protocol server that lets AI assistants and agents securely read, analyze, and update your Uberall data using natural language. It exposes Uberall capabilities across Locations Hub, Listings, Reviews, Social, Homepage, and Dashboard as MCP tools, and works with any MCP-compatible client.
It is a remote server: there is nothing to install or run locally. You connect your MCP client to a single HTTPS endpoint and authenticate with your Uberall account.
This hosted server replaces the previous local (stdio)
uberall-mcp-server, which is now deprecated.
| Environment | URL | Transport |
|---|---|---|
| Production | https://mcp.uberall.com/mcp | Streamable HTTP |
| Sandbox | https://mcp.sandbox.uberall.com/mcp | Streamable HTTP |
- An active Uberall account with access to the data you want to query. If you are not set up yet, get in touch (see Getting Started).
- An MCP-compatible client that supports remote, streamable-HTTP servers.
- One of the two supported authentication methods below. For the API-key method, see Get your API keys.
The server supports two ways to authenticate, depending on your account type.
Most users connect via OAuth 2.0. Your MCP client opens an Uberall login page in the browser; after you sign in and approve, the client is connected — no API key handling required.
Note: token refresh is not yet supported, so you will occasionally be asked to re-authenticate. While a session is active the experience is seamless.
Accounts with the API_ADMIN role can authenticate by sending their Uberall API key as a bearer token:
Authorization: Bearer <UBERALL_API_KEY>Find your key under Org settings → API Keys in the Uberall app — see Get your API keys for the full walkthrough. Use the private server key (X-API-KEY / privateKey); for details on Uberall's keys and token lifecycle, see Authentication and versioning.
The server works with any MCP client that supports remote, streamable-HTTP servers. Point your client at the endpoint and authenticate with either OAuth or a bearer API key.
Most clients accept a JSON server definition like this (OAuth — the first request opens an Uberall login in your browser):
{
"type": "http",
"url": "https://mcp.uberall.com/mcp"
}For API_ADMIN users, supply your API key as a bearer token instead (replace UBERALL_API_KEY):
{
"type": "http",
"url": "https://mcp.uberall.com/mcp",
"headers": { "Authorization": "Bearer UBERALL_API_KEY" }
}Refer to your MCP client's own documentation for where to register a remote/streamable-HTTP server — typically a settings screen, a CLI command, or a JSON config file. To try the server before wiring it into a client, you can also point the MCP Inspector at the endpoint above.
Most tools are read-only: they retrieve and analyze your Uberall data without changing it. A small number are write tools, marked WRITE in the tables below — these change your data or publish content to third-party directories. See Write tools before using them.
Each tool is exposed under a domain-prefixed name in the form <prefix>_<tool>. The tables below list the tool by its base name; the prefix for each domain is shown in its heading. For example, find_business in Locations Hub is exposed as locationsHub_find_business.
| Tool | What it does |
|---|---|
find_business | Find businesses (accounts) by name, identifier, status, location count, or product plan. |
find_location | Find locations by search criteria, ID, status, or business. |
get_business_by_id | Retrieve a single business by its numeric ID. |
get_location_by_id | Retrieve a single location by its numeric ID. |
get_keywords_for_locations | Retrieve keywords associated with locations. |
get_labels | Retrieve labels available to apply to locations. |
update_location WRITE | Update a single location: name, address, contact details, opening hours, descriptions, keywords, categories, and status. Only the fields you supply change. |
| Tool | What it does |
|---|---|
get_listings_details | Detailed breakdown of a location's listings across directories (Google, Facebook, Yelp, Apple, …): sync state, URLs, required actions. |
get_google_page_details | Google Business Profile data for a location: place ID, verification, categories, address, phone, status. |
get_facebook_page_details | Facebook page details connected to a location. |
get_businesses_by_connection_status | Businesses filtered by directory connection status (e.g. disconnected), with reconnect URLs. |
get_locations_by_connection_status | Locations filtered by directory connection status, with reconnect URLs and reasons. |
| Tool | What it does |
|---|---|
get_feed_items | Reviews, comments, Q&A, and mentions, filterable by location, channel, date, status, rating, keywords, and more. Returns top-level items only. |
get_feed_item_children | The replies and comments threaded under a feed item. The only way to reach a reply's own ID. |
get_crossfeed_config | Channel configuration for the account: supported directories and the content types they support. |
reply_to_review WRITE | Post a reply to a review or feed item. Published publicly under the business's name. |
edit_review_reply WRITE | Replace the text of an existing reply. |
delete_review_reply WRITE | Delete a reply. Attempts a native deletion on the originating platform and cascades to child comments. |
| Tool | What it does |
|---|---|
search_social_posts | Search existing social posts, filterable by location, business, status, directory, and publication date. |
Headline performance and Location Performance Score (LPS) insights.
| Tool | What it does |
|---|---|
get_key_metrics | Headline metrics (Google searches, impressions, clicks, review rating, reply rate, response time, revenue estimator), current vs. previous period. |
get_location_score | Location Performance Score with pillar breakdown (visibility, reputation, engagement) and per-product completeness. |
get_location_ranking | Locations ranked by Location Performance Score. |
get_location_benchmark | Compares your score against peer businesses in the same category and locality. |
get_location_tasks | Open tasks to improve locations, with type, priority, product area, and deep link. |
get_suggestions | Improvement recommendations per location. |
Analytics over a date range.
| Tool | What it does |
|---|---|
get_impressions_and_clicks | Customer-activity metrics (impressions, clicks, calls, direction requests) across Google, Facebook, Bing, and Yelp. |
get_listing_health | Listing-health counts across directories: in sync vs. needs attention. |
get_profile_completeness | How complete location profiles are: average completeness, missing-data counts, and tiers. |
get_review_response_time | How quickly locations reply to reviews: average response time and replied counts. |
get_review_summary | Review summary: average rating, totals, and per-star breakdown. |
get_review_trend | Review rating trend over time with interaction counts. |
get_search_keywords | Top Google search keywords that led customers to your locations. |
get_visibility_index | Visibility Index (0–100) over time across search and maps. |
Most of this server is read-only. The tools marked WRITE above are not, and they behave differently enough to be worth reading about before you use them.
| Tool | Effect | Reversible? |
|---|---|---|
locationsHub_update_location | Updates fields on one location. Changes propagate to connected directories. | The previous values are recorded in the location's update history, but a directory that has already synced the change will not roll it back on its own. |
reviews_reply_to_review | Publishes a reply visible to the public on Google, Facebook, and other directories. | No. Deleting the reply afterwards does not un-publish it from the directory. |
reviews_edit_review_reply | Overwrites the text of an existing reply. | No. Reliable only before the reply is published — after that, whether an edit reaches the platform is directory-dependent. |
reviews_delete_review_reply | Deletes the data point, attempting a native deletion on the originating platform, and cascades to child comments. | No. |
Because these tools act on live, customer-visible data, have your assistant show you the exact change before it calls them. Most MCP clients prompt for confirmation on tools that declare themselves as modifying data; all four do.
None of the write tools are retried automatically. A retried reply would post the same text twice, publicly, so a failure is surfaced rather than silently repeated. If a call fails, confirm before retrying.
update_location is a partial update: only the fields you pass are changed, and everything you omit is left exactly as it is. To clear a field, pass it as an empty string. A call that supplies no fields at all is rejected rather than treated as a no-op.
Changing the location's name, country, street, ZIP, city, province, phone, or primary category can send its Google and Facebook listings back into re-verification, which temporarily affects visibility. The tool warns about this on each of those fields.
If your user lacks write permission for a field, the API silently drops that field rather than failing the call — the tool surfaces those dropped fields in its response, so check them instead of assuming everything applied.
The tool covers the core listing record only: name, address, contact details, opening hours, descriptions, keywords, categories, and status. Photos, videos, social profiles, custom fields, and other extended content are not updatable through it. Neither is bulk editing — update one location per call.
Replying needs the right ID, and the one you want is not always the obvious one.
To post a new reply, pass the dataPointId of the review you are answering, taken from a get_feed_items result.
To edit or delete an existing reply, you need the reply's own ID, and get_feed_items does not return it — it returns top-level items only, and the ownerReply field shows the reply's text but carries no ID. Resolve it in three steps:
get_feed_items→ find the review, take its compositeid(e.g.v2_google_review_3031865_1000025977).get_feed_item_childrenwith thatid→ find the child withauthor.isClient = true, which is the business's own reply.- Pass that child's
dataPointIdtoedit_review_replyordelete_review_reply.
Two IDs to avoid: the composite id is not accepted by the write tools, and dataPointSourceId identifies the listing rather than the item — it is the same value for every item from a location, so passing it acts on the wrong record instead of failing loudly.
Passing the review's dataPointId to delete_review_reply deletes the customer's review rather than your reply to it. Confirm which item is meant before calling.
On accounts with the reply-approval feature enabled, a reply is not published when it is submitted — it is queued for a person to approve. The tool response says which happened: check the warnings list, and fall back to the reply's entry under dataPoint.comments (or dataPoint.approvalNeeded) if warnings is empty. Do not assume a successful call means the reply is live.
Approving and rejecting queued replies is deliberately not available through this server. That review step exists so a person sees the text before it goes public, so it stays with a person.
Publication is also asynchronous in every case: a successful response means the reply was accepted by Uberall, not that it is already visible on the directory.
Once connected, ask your assistant natural-language questions such as:
- "Which of my locations are disconnected from Google, and how do I reconnect them?"
- "Summarize the reviews with fewer than 3 stars from the last 30 days."
- "Show the listing sync status for location 2946407."
- "Find all businesses on the Advanced product plan with more than 50 locations."
- "How have my impressions and clicks trended over the last 30 days, and which locations have the lowest performance score?"
- "Which of my locations are missing a phone number?"
- "Update the opening hours for location 2946407 to close at 6pm on Saturdays."
- "Draft a reply to the 2-star review of the Berlin store from last week, show it to me, and post it once I approve."
Why am I occasionally asked to sign in again? Token refresh is not yet supported for OAuth, so sessions are not renewed automatically — browser clients re-authenticate more often than desktop apps. Separately, Uberall access tokens require a fresh manual login after long inactivity; see Access Token Lifecycle.
I get a 401 / "unauthorized" error. For OAuth, make sure you completed the browser sign-in. For the API-key method, confirm the bearer token belongs to an API_ADMIN account and is the private server key — see Get your API keys.
No tools show up, or the connector won't connect. Check that the URL is exactly https://mcp.uberall.com/mcp, that your client supports remote streamable-HTTP servers, and that authentication completed. Remote MCP servers can also be blocked by a corporate VPN or firewall.
Can I try it without touching production data? Yes — point the connector at the sandbox endpoint https://mcp.sandbox.uberall.com/mcp. See the Sandbox Environment for what it supports.
Questions or issues: api@uberall.com.
For how Uberall handles your data, see the Privacy Policy.
Social (
social_prefix)