Skip to main content
Glama

SEO GSC Wizard MCP

Merchant Center data sources

get_gmc_data_sources
Read-only

Use this when the user asks whether their Merchant Center feeds are working, or why Shopping clicks or the product count dropped suddenly (a broken feed looks like a ranking loss in the performance reports). The data sources (feeds) of the Google Merchant Center account linked to a GSC Wizard site, with the latest processed upload or scheduled fetch of every file source: its processing state (SUCCEEDED / FAILED / IN_PROGRESS), when it ran, items total / created / updated, and the processing issues Google reported (title, code, item count, WARNING / ERROR). Each source carries its type (primary or supplemental product, local or regional inventory, promotion, reviews), input (API / FILE / UI / AUTOFEED), feed label, content language, target countries, per-destination state and fetch schedule. Rows list primary sources first, then supplemental, then the rest, each by displayName. findings lists what needs attention, most severe first: failed uploads, files processed with errors, scheduled fetches that stopped running, and primary sources with FREE_LISTINGS switched off. Not for per-product item issues: use get_product_listing_status. Fetch URLs are reduced to their scheme and host because feed URLs often embed credentials. Returns a notConfigured result (not an error) when Merchant Center is not connected or no Merchant Center account is linked to the site in the GSC Wizard app.

Input Schema

NameRequiredDescriptionDefault
siteUrlYesThe property URL as returned by list_sites (e.g. "sc-domain:example.com").
includeUploadsNoRead the latest upload of each file source (one Merchant API request per source, at most 25). false lists the sources only.

Output Schema

NameRequiredDescriptionDefault
hintNo
noteNo
rowsNo
rangeNo
reasonNo
thenByNo
accountNo
listKeyNoName of the top-level field that holds the rows sortedBy describes.
siteUrlNo
cachedAtNo
findingsNo
nextStepNo
orderingNo
sortedByNo
emptyNoteNo
probeNoteNo
sortOrderNo
thenOrderNo
truncatedNo
dataSourceNo
typeCountsNo
sourceCountNo
emptyBecauseNo
gmcAccountIdNo
methodLimitsNo
notConfiguredNo
truncationNoteNo
fileSourceCountNo
staleFetchCountNo
truncationReasonNo
failedUploadCountNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / listKey
      Added value: +{
      +  "$ref": "#/properties/siteUrl",
      +  "description": "Name of the top-level field that holds the rows sortedBy describes."
      +}
  2. Changed15 schema fields changed
    • changedOutput schema / additionalProperties
      Previous value: -falseNew value: +true
    • addedOutput schema / properties / emptyBecause
      Added value: +{
      +  "$ref": "#/properties/siteUrl"
      +}
    • changedOutput schema / properties / findings / items / additionalProperties
      Previous value: -falseNew value: +true
    • addedOutput schema / properties / methodLimits
      Added value: +{
      +  "$ref": "#/properties/siteUrl"
      +}
    • addedOutput schema / properties / nextStep
      Added value: +{
      +  "$ref": "#/properties/siteUrl"
      +}
    • addedOutput schema / properties / ordering
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "sortOrder": {
      +            "$ref": "#/properties/siteUrl"
      +          },
      +          "sortedBy": {
      +            "$ref": "#/properties/siteUrl"
      +          },
      +          "thenBy": {
      +            "$ref": "#/properties/siteUrl"
      +          },
      +          "thenOrder": {
      +            "$ref": "#/properties/siteUrl"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • changedOutput schema / properties / range / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "days": {
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "endDate": {
      -        "$ref": "#/properties/siteUrl"
      -      },
      -      "startDate": {
      -        "$ref": "#/properties/siteUrl"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": true,
      +    "properties": {
      +      "days": {
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "endDate": {
      +        "$ref": "#/properties/siteUrl"
      +      },
      +      "startDate": {
      +        "$ref": "#/properties/siteUrl"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / rows / items / additionalProperties
      Previous value: -falseNew value: +true
    • changedOutput schema / properties / rows / items / properties / destinations / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "destination": {
      -          "$ref": "#/properties/siteUrl"
      -        },
      -        "state": {
      -          "$ref": "#/properties/siteUrl"
      -        }
      -      },
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "destination": {
      +          "$ref": "#/properties/siteUrl"
      +        },
      +        "state": {
      +          "$ref": "#/properties/siteUrl"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / rows / items / properties / fetch / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "enabled": {
      -        "$ref": "#/properties/notConfigured"
      -      },
      -      "frequency": {
      -        "$ref": "#/properties/siteUrl"
      -      },
      -      "host": {
      -        "$ref": "#/properties/siteUrl"
      -      },
      -      "protocol": {
      -        "$ref": "#/properties/siteUrl"
      -      },
      -      "timeZone": {
      -        "$ref": "#/properties/siteUrl"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": true,
      +    "properties": {
      +      "enabled": {
      +        "$ref": "#/properties/notConfigured"
      +      },
      +      "frequency": {
      +        "$ref": "#/properties/siteUrl"
      +      },
      +      "host": {
      +        "$ref": "#/properties/siteUrl"
      +      },
      +      "protocol": {
      +        "$ref": "#/properties/siteUrl"
      +      },
      +      "timeZone": {
      +        "$ref": "#/properties/siteUrl"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / rows / items / properties / latestUpload / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "dataSourceId": {
      -        "$ref": "#/properties/siteUrl"
      -      },
      -      "issues": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "additionalProperties": false,
      -              "properties": {
      -                "code": {
      -                  "$ref": "#/properties/siteUrl"
      -                },
      -                "count": {
      -                  "$ref": "#/properties/range/anyOf/0/properties/days"
      -                },
      -                "description": {
      -                  "$ref": "#/properties/siteUrl"
      -                },
      -                "documentationUri": {
      -                  "$ref": "#/properties/siteUrl"
      -                },
      -                "severity": {
      -                  "$ref": "#/properties/siteUrl"
      -                },
      -                "title": {
      -                  "$ref": "#/properties/siteUrl"
      -                }
      -              },
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "itemsCreated": {
      -        "$ref": "#/properties/range/anyOf/0/properties/days"
      -      },
      -      "itemsTotal": {
      -        "$ref": "#/properties/range/anyOf/0/properties/days"
      -      },
      -      "itemsUpdated": {
      -        "$ref": "#/properties/range/anyOf/0/properties/days"
      -      },
      -      "processingState": {
      -        "$ref": "#/properties/siteUrl"
      -      },
      -      "uploadTime": {
      -        "$ref": "#/properties/siteUrl"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": true,
      +    "properties": {
      +      "dataSourceId": {
      +        "$ref": "#/properties/siteUrl"
      +      },
      +      "issues": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "additionalProperties": true,
      +              "properties": {
      +                "code": {
      +                  "$ref": "#/properties/siteUrl"
      +                },
      +                "count": {
      +                  "$ref": "#/properties/range/anyOf/0/properties/days"
      +                },
      +                "description": {
      +                  "$ref": "#/properties/siteUrl"
      +                },
      +                "documentationUri": {
      +                  "$ref": "#/properties/siteUrl"
      +                },
      +                "severity": {
      +                  "$ref": "#/properties/siteUrl"
      +                },
      +                "title": {
      +                  "$ref": "#/properties/siteUrl"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "itemsCreated": {
      +        "$ref": "#/properties/range/anyOf/0/properties/days"
      +      },
      +      "itemsTotal": {
      +        "$ref": "#/properties/range/anyOf/0/properties/days"
      +      },
      +      "itemsUpdated": {
      +        "$ref": "#/properties/range/anyOf/0/properties/days"
      +      },
      +      "processingState": {
      +        "$ref": "#/properties/siteUrl"
      +      },
      +      "uploadTime": {
      +        "$ref": "#/properties/siteUrl"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / properties / sortOrder
      Added value: +{
      +  "$ref": "#/properties/siteUrl"
      +}
    • addedOutput schema / properties / sortedBy
      Added value: +{
      +  "$ref": "#/properties/siteUrl"
      +}
    • addedOutput schema / properties / thenBy
      Added value: +{
      +  "$ref": "#/properties/siteUrl"
      +}
    • addedOutput schema / properties / thenOrder
      Added value: +{
      +  "$ref": "#/properties/siteUrl"
      +}
  3. Added

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover read-only/open-world/destructive=false, yet the description adds real behavioral context: a `notConfigured` result instead of an error when MC isn't connected, feed URLs intentionally truncated to scheme+host for credential safety, row ordering rules, and severity ordering in `findings`. That is exactly the kind of non-obvious behavior an agent needs to interpret results correctly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the usage trigger, which is the right ordering. It is a single dense paragraph and a few enumerations (per-destination state, fetch schedule, sort order) are more detail than most calls require, but almost every clause carries diagnostic value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only listing tool with an output schema, this covers the remaining gaps: connection preconditions (notConfigured), safety rationale for redacted URLs, and how to prioritize `findings`. Nothing an agent needs in order to call it or interpret the result is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (siteUrl, includeUploads) are documented in the schema, including the 'at most 25 requests' cost note and the default. The description never mentions includeUploads explicitly, only implying upload retrieval via 'the latest processed upload ... of every file source'. Baseline 3 applies since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (the Merchant Center data sources / feeds of the GMC account linked to a GSC Wizard site) and enumerates exactly what each row carries: processing state, timestamps, item counts, issues, source type, input, feed label, language, countries, per-destination state. It also positions itself against the sibling that handles item-level problems (get_product_listing_status), so an agent can discriminate without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit triggering questions ("are my feeds working?", "why did Shopping clicks or product count drop suddenly") and even explains the diagnostic logic that a broken feed masquerades as a ranking loss. It also names an exclusion and the alternative: "Not for per-product item issues: use get_product_listing_status."

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources