Skip to main content
Glama
PinMeTo

PinMeTo Location MCP

Official
by PinMeTo

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PINMETO_APP_IDYesYour PinMeTo App ID
PINMETO_ACCOUNT_IDYesYour PinMeTo Account ID
PINMETO_APP_SECRETYesYour PinMeTo App Secret

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
pinmeto_get_locationA

Get details for a SINGLE location by store ID. Returns structured location data including address, contact info, and network connections.

Error Handling:

  • Not found (404): errorCode="NOT_FOUND" if store ID doesn't exist

  • Auth failure (401): errorCode="AUTH_INVALID_CREDENTIALS"

  • All errors: check structuredContent.errorCode and .retryable for programmatic handling

pinmeto_get_locationsA

Get ALL locations with pagination and filtering. Uses in-memory cache (5-min TTL) for fast queries on large datasets.

Examples:

  • Get first 50 locations: {}

  • Get next page: { offset: 50 }

  • Filter by city: { city: "Stockholm", limit: 20 }

  • Only open locations: { permanentlyClosed: false }

  • Force cache refresh: { forceRefresh: true }

Error Handling:

  • Partial results may be returned on API errors (check incomplete field)

  • Stale cache data returned with warning if fresh fetch fails

  • Check errorCode (string) and retryable (boolean) in structuredContent

pinmeto_search_locationsA

Search ALL locations by name, address, store ID, or location descriptor. Returns lightweight results for quick discovery. Use pinmeto_get_location with storeId for full details.

Error Handling:

  • Network issues: errorCode="NETWORK_ERROR", retryable=true

  • Auth failure (401): errorCode="AUTH_INVALID_CREDENTIALS"

  • All errors: check structuredContent.errorCode and .retryable for programmatic handling

pinmeto_get_google_insightsA

Fetch Google metrics for all locations, or a single location if storeId provided. Supports time aggregation (default: total) and period comparisons.

Comparison Options:

  • compare_with="prior_period": Compare with same-duration period before (MoM, QoQ)

  • compare_with="prior_year": Compare with same dates last year (YoY)

  • When comparison is active, each metric includes a comparison field with prior, delta, deltaPercent

Data Lag Warning:

  • Google data has ~10 day lag. Requests with recent end dates may return incomplete data.

  • Check structuredContent.warning and warningCode for data completeness.

Error Handling:

  • Rate limit (429): errorCode="RATE_LIMITED", message includes retry timing

  • Not found (404): errorCode="NOT_FOUND" if storeId doesn't exist

  • All errors: check structuredContent.errorCode and .retryable for programmatic handling

pinmeto_get_google_ratingsA

Fetch Google rating statistics (averageRating, totalReviews, distribution) for all locations, or a single location.

Returns aggregate statistics only. For individual review text and sentiment analysis, use pinmeto_get_google_reviews.

Caching:

  • Results cached for 5 minutes (shared with reviews tool)

  • Use forceRefresh=true to bypass cache

  • Check structuredContent.cacheInfo for cache status

Data Lag Warning:

  • Google data has ~10 day lag. Requests with recent end dates may return incomplete data.

  • Check structuredContent.warning and warningCode for data completeness.

Error Handling:

  • Rate limit (429): errorCode="RATE_LIMITED", message includes retry timing

  • Not found (404): errorCode="NOT_FOUND" if storeId doesn't exist

  • All errors: check structuredContent.errorCode and .retryable for programmatic handling

pinmeto_get_google_reviewsA

Fetch individual Google reviews with pagination and filtering for sentiment analysis.

For aggregate statistics (averageRating, totalReviews), use pinmeto_get_google_ratings instead.

Pagination:

  • limit: Max reviews to return (default: 50, max: 500)

  • offset: Skip first N reviews (for pagination)

  • Check hasMore in response to know if more pages exist

Filtering:

  • minRating/maxRating: Filter by rating range (1-5)

  • hasResponse: true for responded reviews, false for unresponded

Caching:

  • Results cached for 5 minutes (shared with ratings tool)

  • Use forceRefresh=true to bypass cache

  • Filters are applied client-side on cached data

Data Lag Warning:

  • Google data has ~10 day lag. Requests with recent end dates may return incomplete data.

Error Handling:

  • Rate limit (429): errorCode="RATE_LIMITED", message includes retry timing

  • Not found (404): errorCode="NOT_FOUND" if storeId doesn't exist

  • All errors: check structuredContent.errorCode and .retryable for programmatic handling

pinmeto_get_google_keywordsA

Fetch Google keywords for all locations, or a single location if storeId provided.

Data Lag Warning:

  • Google data has ~10 day lag. Current month data may be incomplete.

  • Check structuredContent.warning and warningCode for data completeness.

Error Handling:

  • Rate limit (429): errorCode="RATE_LIMITED", message includes retry timing

  • Not found (404): errorCode="NOT_FOUND" if storeId doesn't exist

  • All errors: check structuredContent.errorCode and .retryable for programmatic handling

pinmeto_get_google_review_insightsA

Summarize Google reviews into rating and sentiment statistics.

Computes aggregates over the matched reviews server-side and returns the summary instead of the raw reviews, which is far more token-efficient than fetching them. The returned data is descriptive statistics, not LLM-written prose: read it and draw your own conclusions for the user.

Analysis Types:

  • summary: Average rating, sentiment breakdown, rating distribution

  • comparison: The above, plus per-location metrics ranked by rating

  • issues, trends, themes: Accepted, but currently return the same payload as summary. No theme extraction, issue clustering, or period comparison is performed, and the response is flagged with warningCode UNDIFFERENTIATED_ANALYSIS_TYPE. To analyze review text, fetch pinmeto_get_google_reviews and read it yourself.

Large Dataset Handling:

  • <200 reviews: Processed immediately

  • 200-1000: Processed with token estimate in metadata

  • 1000-10000: Returns warning with options (set skipConfirmation=true to proceed)

  • 10000: Requires sampling strategy (representative or recent_weighted)

Sampling Strategies (which reviews get analyzed):

  • full: Analyze all reviews (default for <10000 reviews)

  • representative: Stratified sample by rating and location

  • recent_weighted: Prioritize recent reviews

Caching:

  • Results cached for 1 hour

  • Use forceRefresh=true to bypass cache

When NOT to use this tool:

  • Need raw review text: Use pinmeto_get_google_reviews

  • Need only aggregate stats: Use pinmeto_get_google_ratings

  • Need specific review lookup: Use pinmeto_get_google_reviews with filters

pinmeto_get_facebook_insightsA

Fetch Facebook metrics for all locations, or a single location if storeId provided. Supports time aggregation (default: total) and period comparisons.

Comparison Options:

  • compare_with="prior_period": Compare with same-duration period before (MoM, QoQ)

  • compare_with="prior_year": Compare with same dates last year (YoY)

  • When comparison is active, each metric includes a comparison field with prior, delta, deltaPercent

Error Handling:

  • Rate limit (429): errorCode="RATE_LIMITED", message includes retry timing

  • Not found (404): errorCode="NOT_FOUND" if storeId doesn't exist

  • All errors: check structuredContent.errorCode and .retryable for programmatic handling

pinmeto_get_facebook_brandpage_insightsA

Fetch Facebook metrics for all brand pages. Supports time aggregation (default: total) and period comparisons.

Comparison Options:

  • compare_with="prior_period": Compare with same-duration period before (MoM, QoQ)

  • compare_with="prior_year": Compare with same dates last year (YoY)

  • When comparison is active, each metric includes flat comparison fields (priorValue, delta, deltaPercent)

Error Handling:

  • Rate limit (429): errorCode="RATE_LIMITED", message includes retry timing

  • Auth failure (401): errorCode="AUTH_INVALID_CREDENTIALS"

  • All errors: check structuredContent.errorCode and .retryable for programmatic handling

pinmeto_get_facebook_ratingsA

Fetch Facebook ratings for all locations, or a single location if storeId provided.

Error Handling:

  • Rate limit (429): errorCode="RATE_LIMITED", message includes retry timing

  • Not found (404): errorCode="NOT_FOUND" if storeId doesn't exist

  • All errors: check structuredContent.errorCode and .retryable for programmatic handling

pinmeto_get_apple_insightsA

Fetch Apple metrics for all locations, or a single location if storeId provided. Supports time aggregation (default: total) and period comparisons.

Comparison Options:

  • compare_with="prior_period": Compare with same-duration period before (MoM, QoQ)

  • compare_with="prior_year": Compare with same dates last year (YoY)

  • When comparison is active, each metric includes a comparison field with prior, delta, deltaPercent

Error Handling:

  • Rate limit (429): errorCode="RATE_LIMITED", message includes retry timing

  • Not found (404): errorCode="NOT_FOUND" if storeId doesn't exist

  • All errors: check structuredContent.errorCode and .retryable for programmatic handling

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/PinMeTo/pinmeto-location-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server