A PostgreSQL-based data pipeline for marketing analytics that fetches GA4 and Google Search Console data, flattens reports, loads them into a database, generates content ideas from search opportunities, and tracks content experiments with feedback loops.
This server has significant definition quality gaps. Tool names lack clear action verbs (e.g., 'idea_templates_for_proxuma' instead of 'generate_content_ideas_for_proxuma'). Most parameter descriptions are minimal or missing entirely. Input schemas are present but sparse, many parameters lack type constraints, enums, or validation guidance. Output schemas are not documented. Error handling is absent from tool definitions. The server reads from a PostgreSQL database and Google APIs but exposes no error recovery guidance. Only 3 of 14 tools have descriptions exceeding 100 characters; most are under 80 chars and lack actionable context for LLM selection.
Fetches page × query performance data from Google Search Console API and saves raw output to JSON file.
Fetches Google Search Console opportunities from the database, returning queries with high impressions but low clicks, grouped by query with aggregated metrics.
Fetches top GA4 pages by session count from the database for a given brand.
Flattens raw GA4 events report output into a flat JSON structure with landing page, event name, event count, and total users.
Flattens raw GA4 traffic report output into a flat JSON structure with landing page, session source, session medium, sessions, and total users.
Flattens raw Google Search Console searchanalytics.query output into a flat JSON structure with page, query, clicks, impressions, CTR, and position.
Brand-specific tool names lack action verbs. 'idea_templates_for_proxuma' and 'idea_templates_for_dxfferent' should be 'generate_content_ideas_for_proxuma' and 'generate_content_ideas_for_dxfferent' to signal intent clearly.
Output schemas are not documented. Tools like 'fetch_gsc_opportunities', 'generate_for_brand', and 'flatten_gsc_report' return complex objects but provide no schema definition. LLMs cannot plan downstream calls without knowing return structure.
Parameter descriptions are minimal or absent. 'limit' parameters lack guidance on valid ranges (e.g., 'limit: max 100'). 'brand' parameter accepts only 'proxuma' or 'dxfferent' but this constraint is not declared as an enum in the schema.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 32 | 2026-07-28+ | v2 |
Generates a comprehensive content strategy report for a brand, including top GA4 pages, GSC opportunities, and templated content ideas.
Generates content idea templates for Dxfferent brand based on a GSC opportunity, with templates for blog posts, downloadables, and educational content.
Generates content idea templates for Proxuma brand based on a GSC opportunity, with templates for landing pages, blog posts, and feature-led content.
Inserts content experiment records into the PostgreSQL database from generated content ideas, storing brand, goal, topic, content type, title, and notes.
Lists all available Google Search Console sites that the authenticated service account has access to.
Loads flattened GA4 events report data from JSON files into the PostgreSQL database, creating data_runs and ga4_events records.
Loads flattened GA4 traffic report data from JSON files into the PostgreSQL database, creating data_runs and traffic_events records.
Loads flattened GSC data from JSON files into the PostgreSQL database, creating data_runs and search_queries records.
No error handling guidance. Tools that write to PostgreSQL (load_gsc, load_ga4_traffic, insert_experiments_from_ideas) provide no recovery hints if the database is unavailable, a file is malformed, or a constraint is violated.
list_gsc_sites has no input schema (empty object). While the tool takes no parameters, the schema should still be explicitly defined as type 'object' with no properties.