Unified MCP Server for Google GDE (Advocu) and Microsoft MVP Activity Reporting
The server defines 12 tools with explicit schemas and descriptions. Most tools follow verb_noun naming conventions and have reasonably detailed parameter documentation. However, there are several significant gaps: (1) Many parameter descriptions lack actionable detail about constraints, ranges, or valid values; (2) Output schemas are not documented, the code does not specify what these tools return, making it impossible for LLMs to plan downstream steps or validate results; (3) Several tools have identical or near-identical schemas (submit_gde_workshop, submit_gde_mentoring, submit_gde_public_speaking share highly similar structures), suggesting potential consolidation; (4) Error handling and recovery guidance is not evident in tool descriptions; (5) The submit_gde_mentoring tool (tool #4) has notably sparse parameter descriptions compared to others (many fields lack 'description' keys); (6) Tool descriptions are generally adequate (100-150 chars) but could be more specific about when to use each vs. similar tools. Baseline: average tool description length is 194 chars, these average ~110 chars, below optimum. The two read-only tools (list_documentation, get_documentation) are well-defined.
Get a specific documentation file by name
List all available documentation resources
Submit a content creation activity to Google GDE program (Advocu)
Submit a Googler interaction activity to Google GDE program (Advocu)
Submit a mentoring activity to Google GDE program (Advocu)
Submit a product feedback activity to Google GDE program (Advocu)
Submit a public speaking activity to Google GDE program (Advocu)
Output schemas not documented. None of the 12 tools specify what they return. LLMs cannot determine downstream field availability or plan multi-step flows without knowing the response structure.
submit_gde_mentoring (tool #4) has sparse parameter descriptions. Many fields (title, description, country, etc.) lack 'description' keys entirely, forcing LLMs to infer intent from names alone. This violates the baseline that 100% of A+ tool params have descriptions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Submit a story activity to Google GDE program (Advocu)
Submit a workshop activity to Google GDE program (Advocu)
Submit a blog post activity to Microsoft MVP
Submit a speaking engagement/conference activity to Microsoft MVP
Submit a video activity to Microsoft MVP. Valid roles for videos: Host, Presenter, Speaker.
Conditional parameter dependencies not documented. For public_speaking, workshop, and mentoring tools: 'country' is required if eventFormat is 'In-Person' or 'Hybrid', and 'inPersonAttendees' is required under the same conditions. Schema declares these as non-required at root level, but descriptions don't explain the dependency. LLMs will omit these fields.
Near-duplicate tool definitions. submit_gde_workshop, submit_gde_public_speaking, and submit_gde_mentoring share nearly identical schemas (eventFormat, country, inPersonAttendees, metrics.attendees). No tool description explains why three separate tools exist or when to use each. Composition opportunity: consider a single 'submit_gde_event' tool with an 'eventType' enum.
Missing error recovery guidance in tool descriptions. None of the submission tools describe what happens on failure, what errors might occur (e.g., authentication, validation, API rate limits), or how to recover. Baseline: error responses must guide the LLM on next steps.
Parameter descriptions lack actionable constraint details. Example: 'tags' is an array with minItems=0, but descriptions don't say 'optional' or explain what tag formats are allowed. Similarly, 'metrics' is an object with required sub-fields, but descriptions don't clarify which metrics are mandatory vs. optional or what ranges are valid.
MVP tools expose additional technology areas as an optional array, but descriptions don't explain how they differ from the primary 'technologyFocusArea' or what format is expected (free-form string? enum from a predefined list?).