1. MCP Server
  • Synup Local SEO API - Getting Started
  • Locations
    • Location Attributes
      MARKDOWN
    • Photo specifications for your business location
      MARKDOWN
    • Star and Unstar Photos
      MARKDOWN
    • Create a new business location
      POST
    • Update business location
      POST
    • List all locations
      GET
    • List particular locations
      GET
    • Search locations
      GET
    • Get locations by store codes
      GET
    • Get Photos by Location IDs
      GET
    • Upload Photos to a Location
      POST
    • Check Bulk Photo Upload Status
      GET
    • Star/Unstar Location Photos
      POST
    • Delete Location Photos
      POST
    • Archive multiple locations
      POST
    • Cancel scheduled location archival
      POST
    • Activate archived locations
      POST
    • List Active Subscriptions
      GET
    • Get a list of supported countries and their states
      GET
    • Get SubCategories and AdditionalCategories
      GET
    • Get Site Details for Your Plan
      GET
    • Location Indexing Rate
      GET
    • Available advanced filter values
      GET
    • Download locations
      GET
    • Filter locations
      GET
    • Google verification location stats
      GET
    • Location add-on count
      GET
    • Location package count
      GET
    • Available search filter values
      GET
  • Organizing locations
    • Organizing locations
    • Create a new folder
    • List all folders
    • List all folders under an account in hierarchical structure
    • Get details of a folder
    • Rename a folder
    • Add locations to a folder
    • Remove locations from a folder
    • Delete a folder
    • List locations under a folder
    • List all tags
    • List locations by tags
    • Add location to a tag
    • Remove location from a tag
    • Default folder
  • User Management
    • User Attributes
    • Create User with Role
    • List Users
    • List Users by ID
    • Add Locations to User
    • Add User and folder
    • List User Roles
    • Add folders to user
    • List User Resources
    • Update a User
    • Remove Folders for User
    • Remove Locations for User
  • Grid Rank
    • Local Rank Grid
    • Create Rank Grid Report
    • Fetch All Grid Reports for Location
    • Fetch Rank Grid Report By ID
  • Review Campaigns
    • Review Campaign Info Attributes
    • Create a review campaign
    • Add customers to a review campaign
    • List review campaigns
    • List review campaign customers
  • Listings
    • Listings
    • Listing Status Webhooks
    • Get premium listings
    • Get voice listings for a location
    • Get duplicate listings for a location
    • Get all duplicate listings for an account
    • Mark listings as duplicates
    • Mark listings as not duplicates
    • Get AI listings
  • Connected Accounts
    • Connected Accounts
    • Connect Google Profile to Account
    • Connect Facebook Page to Account
    • Bulk connect link for Apple
    • List all connected accounts
    • List folders under a Google account
    • Create GMB Listing
    • Disconnect GMB Profile
    • Disconnect Facebook Account
    • Fetch Connected Account Details
    • Trigger New Matches
    • List Connection Suggestions
    • Fetch Connected Account Listings
    • Confirm Connected Account Matches
    • Connect a location with a listing of a connected account
    • Disconnect Location from Listing
    • create location from connected account listing
    • Apple confirmed matches
    • Connect link for Apple
    • Renew connect link for Apple
    • List location connections
  • Rankings
    • Rankings Analytics Attributes
    • Add keywords
    • List Keywords
    • Get keywords performance
    • Archive a keyword
    • Get Rollup Keyword Performance
    • Get Rankings Distribution By Time
  • Profile Analytics
    • Profile Analytics
    • Get Bing Analytics
    • Get Facebook Page Analytics
    • Get Google My Business Analytics
  • Reviews
    • Reviews
    • Review Sources
      • Get a list of interaction sources for location
      • Get a list of interaction sources for account
      • Add / Edit interaction source
    • Fetch all interactions
    • List Interactions by IDs
    • Respond to an Interaction
    • Edit Response for Interaction
    • Archive Response for Interaction
    • Get Interaction Analytics
    • Add Review Widget
    • Edit Review Widget
    • Rollup Review API
  • Automations
    • Temporary Close Location with a reopening date
  • Error Codes
    • ERROR CODES
  • Social
    • Social Overview
    • Create a brand
    • Assign a user to a single brand
    • Assign multiple brands
  • Posts
    • Posts Overview
    • Create an Announcement post
    • Create an Event post
    • Create an Offer post
    • Fetch posts for a location
    • Get a single post
    • Delete a post
    • Create a bulk post
    • Fetch a bulk post by ID
    • Fetch bulk posts for a location
  • Menus
    • Menus Overview
    • Create a menu
    • Fetch menus for a location
    • Add an item to an existing section
    • Update menu currency
    • Assign a menu to a location
  • MCP Server
    • Synup MCP — Getting Connected
    • Synup MCP — Putting It to Work
  • Local Post Ideas
    • Refresh local ideas
    • Suggest local posts for date
    • Analyze reference image
    • Archive local idea
    • Archive local series
    • Branch local chat session
    • Close local chat session
    • Generate all local series posts
    • Generate local holiday idea variant
    • Generate local series post
    • Local active chat session
    • Local calendar
    • Local chat history
    • Local chat sessions
    • Local content series detail
    • Local content series list
    • Local extended config
    • Local holiday idea variants
    • Local idea job status
    • Local image credits
    • Local location info
    • Local observances
    • Local observances with ideas
    • Local pipeline status
    • Local post idea
    • Local post idea counts
    • Local post ideas
    • Local reference images
    • Local scraped context
    • Regenerate local idea
    • Regenerate local idea content
    • Regenerate local idea image
    • Schedule local series
    • Scrape location
    • Send local chat message
    • Set location image credits
    • Start local chat session
    • Switch local chat mode
    • Trigger local pipeline
    • Update local idea
    • Upsert extended location config
  • Social Post Ideas
    • Active chat session
    • Analyze reference image
    • Archive idea
    • Archive series
    • Branch chat session
    • Brand info
    • Calendar
    • Chat history
    • Chat sessions
    • Close chat session
    • Content series detail
    • Content series list
    • Create content series
    • Extended brand config
    • Generate all series posts
    • Generate calendar day
    • Generate holiday idea variant
    • Generate idea visual
    • Generate observance idea
    • Generate series post
    • Holiday idea variants
    • Idea job status
    • Image credits
    • Link post idea to social post
    • Observances
    • Observances with ideas
    • Pipeline status
    • Post idea
    • Post idea counts
    • Post ideas
    • Reference images
    • Refresh ideas
    • Regenerate idea
    • Regenerate idea content
    • Regenerate idea image
    • Schedule series
    • Scrape brand
    • Scraped brand context
    • Send chat message
    • Series posts
    • Set brand image credits
    • Start chat session
    • Suggest posts for date
    • Switch chat mode
    • Trigger pipeline
    • Update extended brand config
    • Update idea
  • Webhooks
    • Synup Webhooks
    • Webhooks
      • Directory listing synced (success/incomplete)
      • New review received for a location
      • New response to a review received
      • Listing connected
      • Listing disconnected
      • Listing re-authorization required
      • Listing became inaccessible
      • Google verification passed
      • Google verification failed
      • Location created
      • Location updated
      • Location deleted
      • Share-of-Voice snapshot completed
      • Grid rank report ready
      • Daily review analytics snapshot
      • Weekly review analytics snapshot
      • Review campaign sent
      • Campaign recipients added
      • Campaign message status changed
      • Campaign feedback submitted
      • Campaign message send rejected
      • Review posted (campaign-attributed)
      • Social post created
      • Social post published
      • Social post deleted
      • Social post rejected
      • Social post failed
      • Boost created
      • Boost active
      • Boost rejected
      • Boost stopped
      • Social channel connected
      • Social channel disconnected
      • Social channel archived
      • Ad account status changed
      • AI post idea generated
      • AI idea scheduled as post
      • AI idea series completed
      • AI idea scrape completed
      • AI idea scrape failed
      • AI idea image generated
      • AI idea image generation failed
    • Endpoint verification handshake
  • Schemas
    • Schemas
      • FolderSchema
        • Schemas
          • ListFoldersResponse
          • FolderInfo
      • LocationResponseSchema
      • LocationResponseErrorSchema
      • SubCategory
      • SubscriptionsResponse
      • CreateFolderRequest
      • FolderNode
      • ListingsResponse
      • LocationListResponse
      • ConnectGoogleInput
      • ConnectFacebookInput
      • DisconnectGoogleRequest
      • TriggerMatchesRequest
      • FetchListingsRequest
      • ConfirmMatchesRequest
      • ConnectListingRequest
      • DisconnectListingRequest
      • ConnectedAccountDetailsResponse
      • ConnectionSuggestionsResponse
      • Keyword
      • Keyword
      • Keyword
      • UnauthorizedError
      • UnauthorizedError
      • UnauthorizedError
      • UnauthorizedError
      • InsightMetric
      • InsightMetric
      • CreateGridReportInput
      • AllGridReportsResponse
      • GridReportResponse
      • CreateUserInput
      • UsersResponse
      • UsersResponse
      • UsersByIdsResponse
      • AnalyticsOverview
      • Interaction
      • Interaction
      • InteractionsResponse
      • ResponseInteraction
      • AddLocationsInput
      • UserRole
      • UserRole
      • CreateReviewCampaignRequest
      • ReviewCampaignsResponse
      • ReviewCampaignCustomersResponse
      • PremiumListing
      • Subscription
      • CreateFolderResponse
      • Listing
      • ConnectGoogleResponse
      • ConnectFacebookResponse
      • DisconnectGoogleResponse
      • ConnectedAccount
      • TriggerMatchesResponse
      • ConfirmMatchesResponse
      • ConnectListingResponse
      • DisconnectListingResponse
      • Error
      • Error
      • BadRequestError
      • BadRequestError
      • BadRequestError
      • NotFoundError
      • UnauthorizedError
      • UnauthorizedError
      • CreateGridReportResponse
      • GridReport
      • GridReport
      • CreateUserResponse
      • PageInfo
      • PageInfo
      • UserDetail
      • AnalyticsTimeline
      • Response
      • Response
      • PageInfo
      • AddLocationsResponse
      • Pagination
      • Pagination
      • CustomerInput
      • ReviewCampaign
      • ReviewCampaignInfo
      • Tag
      • SearchResponse
      • LocationPhoto
      • CustomAttribute
      • Folder
      • Site
      • ConnectedAccountsResponse
      • LocationListing
      • ListingRecord
      • ConnectionSuggestion
      • NotFoundError
      • NotFoundError
      • RankPoint
      • RankPoint
      • CreatedUser
      • UserEdge
      • UserEdge
      • SiteWiseAnalytics
      • InteractionEdge
      • LocationAddStatus
      • LandingPageTemplate
      • EmailTemplate
      • ReviewCampaignCustomer
      • LocationEdge
      • FetchListingsResponse
      • User
      • User
      • MetricWithDelta
      • Interaction
      • EmailTemplate
      • SmsTemplate
      • SuggestedLocationInfo
      • SMSTemplate
      • CampaignStat
      • ReviewSite
      • BusinessHours
      • AddCustomersRequest
    • Business hours
    • paymentMethods
    • Contact Support
    • LocationInfo
    • AppleOauthBulkRequest
    • AddKeywordRequest
    • AppleConfirmedMatches
    • AppleOauthRequest
    • AppleRenewOauthRequest
    • LocationAdvancedSearchFilterType
    • DownloadLocationsInBulkType
    • LocationSummaryConnectionType
    • GoogleVerificationLocationStats
    • LocationAddOnCount
    • LocationPackageCount
    • LocationSearchFilterType
    • DefaultFolderType
    • ReferenceImageAnalysis
    • ArchiveLocalIdeaRequest
    • ArchiveLocalSeriesRequest
    • BranchLocalChatSessionRequest
    • CloseLocalChatSessionRequest
    • GenerateAllLocalSeriesPostsRequest
    • GenerateLocalHolidayIdeaVariantRequest
    • GenerateLocalSeriesPostRequest
    • LocalCalendarDay
    • LocalContentSeries
    • ExtendedLocationConfig
    • LocalIdeaJobStatus
    • LocalLocationInfo
    • LocalObservance
    • LocalObservanceWithIdea
    • LocalPipelineStatus
    • LocalPostIdea
    • ReferenceImageOption
    • PostIdeaCounts
    • ScrapedLocationContext
    • RefreshLocalIdeasRequest
    • RegenerateLocalIdeaRequest
    • RegenerateLocalIdeaContentRequest
    • RegenerateLocalIdeaImageRequest
    • ScheduleLocalSeriesRequest
    • ScrapeLocationRequest
    • SendLocalChatMessageRequest
    • SetLocationImageCreditsRequest
    • StartLocalChatSessionRequest
    • SuggestLocalPostsForDateRequest
    • SwitchLocalChatModeRequest
    • TriggerLocalPipelineRequest
    • UpdateLocalIdeaRequest
    • UpsertExtendedLocationConfigRequest
    • ArchiveIdeaRequest
    • ArchiveSeriesRequest
    • BranchChatSessionRequest
    • BrandInfo
    • CalendarDay
    • CloseChatSessionRequest
    • ContentSeries
    • CreateContentSeriesRequest
    • ExtendedBrandConfig
    • GenerateAllSeriesPostsRequest
    • GenerateCalendarDayRequest
    • GenerateHolidayIdeaVariantRequest
    • GenerateIdeaVisualRequest
    • GenerateObservanceIdeaRequest
    • GenerateSeriesPostRequest
    • LocationConnectedEvent
    • IdeaJobStatus
    • ImageCredits
    • LinkPostIdeaToSocialPostRequest
    • Observance
    • ObservanceWithIdea
    • PipelineStatus
    • PostIdea
    • RefreshIdeasRequest
    • RegenerateIdeaRequest
    • RegenerateIdeaContentRequest
    • RegenerateIdeaImageRequest
    • ScheduleSeriesRequest
    • ScrapeBrandRequest
    • ScrapedBrandContext
    • SendChatMessageRequest
    • SetBrandImageCreditsRequest
    • StartChatSessionRequest
    • SuggestPostsForDateRequest
    • SwitchChatModeRequest
    • TriggerPipelineRequest
    • UpdateExtendedBrandConfigRequest
    • UpdateIdeaRequest
    • AppleOauthBulkPayload
    • CoordinateInput
    • AppleConfirmedMatch
    • AppleOauthPayload
    • AppleRenewOauthPayload
    • LocationSummaryEdge
    • AddOnCount
    • SitePublisherCategory
    • LocalMutationResponse
    • LocalChatSessionResponse
    • LocalGenerateIdeasResponse
    • LocalRegenerateResponse
    • LocalImageCredits
    • LocalTriggerPipelineResponse
    • LocalScheduleSeriesResponse
    • LocalChatMessageResponse
    • MutationResponse
    • ChatSessionResponse
    • GenerateAllSeriesPostsResponse
    • RegenerateResponse
    • LinkPostIdeaToSocialPostResponse
    • TriggerPipelineResponse
    • ScheduleSeriesResponse
    • ChatMessageResponse
    • GenerateIdeasResponse
    • GmbConnectedListingInfo
    • Error
    • MutationError
    • AddKeywordResult
    • LocalError
    • LocalChatSession
    • LocalChatMessage
    • ChatSession
    • ChatMessage
    • FbConnectedListingInfo
    • ActionChip
    • AppleConnectedListingInfo
    • LocationConnectInfo
    • PageInfo
    • LocationConnectionsResponse
  1. MCP Server

Synup MCP — Getting Connected

Synup MCP lets you run your local presence — locations, reviews, rankings, social posts —
straight from the AI tools you already talk to, like Claude, Cursor, or Windsurf. No new
dashboard to learn. You just ask, and your assistant does the work in your Synup account.
This guide gets you connected. When you're in, head over to
Putting It to Work to start asking.

Find your tool#

Know what you're using? Jump straight to its setup:
Your toolHow you connectGo to
Claude.aiSign inConnect by signing in →
Claude DesktopSign inConnect by signing in →
Claude CodeAPI keySet up Claude Code →
CursorOne click or API keySet up Cursor →
WindsurfAPI keySet up Windsurf →
Using something else? Any tool that supports custom MCP connectors works — follow
Pick the way that fits you to choose your route.

In this guide#

What Synup MCP does
Pick the way that fits you
Connect by signing in — Claude.ai, Claude Desktop
Connect with an API key — Claude Code, Cursor, Windsurf
Read access or write access
A look under the hood
Keeping your assistant fast
When something doesn't work

What Synup MCP does#

Think of it as a secure handshake between your Synup account and your AI assistant. Once
that handshake is in place, your assistant can pull up your reviews, check your rankings,
update a location, or schedule a post — all from a plain-English request.
You're always in charge of how much it can touch. Connect for a look-only experience, or
give it the green light to make changes. We'll cover that in
Read access or write access.
↑ Back to top

Pick the way that fits you#

There are two ways in, and the right one depends on the tool you're using:
Signing in is the simplest. If you're using Claude.ai or Claude Desktop, you'll log
in to Synup right in your browser — nothing to copy or paste.
An API key is the way to go for code editors like Claude Code, Cursor, or Windsurf,
where you drop a small bit of config into a settings file.
Not sure? If you're working inside a chat window, sign in. If
you're in a code editor, use an API key.
↑ Back to top

Connect by signing in#

This is the no-fuss option for Claude.ai and Claude Desktop. You sign in to Synup the same
way you'd log in anywhere — no keys to manage.
1.
In Claude, open Settings → Connectors → Add custom connector.
2.
Paste in your server address. Use your own Synup domain with /mcp added to the
end
— the same web address you use to sign in to Synup (for example,
https://yourbrand.synup.com/mcp). Connecting through your own domain takes you
straight to your account.
3.
Click Add. Claude will pop open a Synup sign-in page.
4.
Log in, approve the access you're comfortable with, and you're done. Synup's tools show
up right in your conversation.
Using your own domain matters here: it's what sends you to the right sign-in page and
connects you to your account rather than the default one.
Changed your mind later? You can disconnect from that same Connectors screen anytime.
Menus look different? Claude's own setup guide is always the most current source:
Get started with custom connectors.
Wherever it asks for the server URL, use your Synup domain + /mcp.
↑ Back to top

Connect with an API key#

If you're in a code editor, you'll use an API key instead. Grab yours first from Synup
under Settings → Integrations, then follow the steps for your tool below.
A couple of quick heads-ups before you start:
Your API key is like a password. Keep it private, and swap the YOUR_API_KEY
placeholder below for your real one.
Point the address at your own Synup domain with /mcp on the end — the same web
address you sign in to Synup at (for example https://yourbrand.synup.com/mcp). In the
configs below, replace YOUR_SYNUP_DOMAIN with it.

Cursor#

The fastest route is one click:
To connect through your own Synup domain, set it up by hand — open ~/.cursor/mcp.json
and add:
{
  "mcpServers": {
    "synup": {
      "type": "http",
      "url": "https://YOUR_SYNUP_DOMAIN/mcp",
      "headers": { "X-api-key": "YOUR_API_KEY", "X-access-mode": "write" }
    }
  }
}
Cursor's own MCP guide stays current if their setup screens change:
cursor.com/docs/mcp.

Claude Code#

Paste this into your terminal (that's Terminal on a Mac, PowerShell on Windows) and press
Enter:
Then open Claude Code and run /mcp to make sure the connection took.
Anthropic's Claude Code guide stays current if the command changes:
docs.claude.com/en/docs/claude-code/mcp.

Windsurf#

Open your config file:
macOS / Linux: ~/.codeium/windsurf/mcp_config.json
Windows: %USERPROFILE%\.codeium\windsurf\mcp_config.json
{
  "mcpServers": {
    "synup": {
      "type": "http",
      "url": "https://YOUR_SYNUP_DOMAIN/mcp",
      "headers": { "X-api-key": "YOUR_API_KEY", "X-access-mode": "write" }
    }
  }
}
Save it, then restart your editor so the change takes effect.
Windsurf's own MCP guide stays current if their config format or menus change:
docs.windsurf.com/plugins/cascade/mcp.
↑ Back to top

Read access or write access#

When you connect, you're also deciding how much your assistant can do.
Read lets it look at everything but change nothing. It's the safe way to explore,
pull reports, or try things out.
Write lets it act — create, update, and delete on your behalf.
If you signed in, your access matches the permission you approved during sign-in. If you
used an API key, it's set by the X-access-mode value in your config (read or write).
A good rule of thumb: start in read, switch to write once you're ready to let the
assistant make changes.
↑ Back to top

A look under the hood#

Curious how the connection actually works? Here's the short version — feel free to
skip ahead if you just want to use it.
When you sign in, your assistant and Synup run a standard OAuth 2.1 exchange behind the
scenes: it discovers Synup's sign-in page, registers itself, sends you through the browser
login, and receives a secure token it uses from then on. Nothing sensitive is stored in
your client — the token is issued and refreshed by Synup.
If you'd rather pass credentials directly, here are the options:
Way inWhat you sendGood to know
Sign-in (OAuth)Browser loginMost convenient; nothing stored locally
API keyX-api-key: YOUR_API_KEYAdd X-user-email too if your account needs it
Bearer tokenAuthorization: Bearer …Accepts an API key, an encoded credential, or a Synup token
Environment varsSYNUP_API_KEY, SYNUP_USER_EMAILFor local or embedded setups with no headers
And the endpoint everything points at: your Synup domain followed by /mcp. The server is
tenant-aware — the domain you use is what routes you to your account and your sign-in page.
↑ Back to top

Keeping your assistant fast#

You might wonder why your assistant doesn't list every single tool the moment it connects.
That's on purpose. Rather than load all 120+ tools at once, it keeps a light footprint and
pulls in exactly the tool it needs, when it needs it. The upshot for you: faster, smoother
responses. There's nothing to set up — this just happens.
If you're building your own agent that calls tools by name and would rather see them all
up front, you can ask for everything at once by adding the header X-MCP-Mode: direct.
↑ Back to top

When something doesn't work#

The API key won't authenticate. Double-check there are no stray spaces, and that it
reads exactly X-api-key: YOUR_API_KEY. If you're unsure it's still valid, regenerate it
under Settings → Integrations.
Sign-in won't complete or keeps looping. Make sure pop-ups aren't blocked and you're
logged into the right Synup account. Removing and re-adding the connector restarts the
whole flow cleanly.
It just won't connect. Confirm the address is your Synup domain with /mcp on the end
and nothing missing, then fully restart your tool — not just the window, the whole app.
The config file throws an error. A single missing comma or quote will do it. Give the
JSON a quick once-over and restart.
↑ Back to top

✅ You're in. Next stop: Putting It to Work.
Stuck on any of the above? Reach out to your Synup account team.
Modified at 2026-06-25 11:16:46
Previous
Assign a menu to a location
Next
Synup MCP — Putting It to Work
Built with