MCP server for inspecting sponsored social media posts for FTC regulatory compliance, checking for clear and conspicuous disclosures, deceptive claims, and compliance with FTC endorsement guidelines
This server has severe definition quality issues. Only 1 tool is defined. The tool has a reasonable name (inspect_post_compliance, starts with a verb) and a moderately detailed description (154 chars, within the 10-1024 guideline). However, the input schema is visible and properly typed with two string parameters. The critical problem: there is NO documented output schema. The code shows the tool returns a dict with 5 fields (sentinel_check_id, ftc_clear_and_conspicuous, disclosure_placement_valid, deceptive_claim_risk_score_pct, compliance_audit_verdict, compliance_snapshot_url), but this schema is never declared in the tool definition or MCP registration. Additionally, the input parameters lack descriptions explaining what values are valid for ftc_disclosure_ruleset, is it an enum? What are the valid options? The rubric requires that 'every parameter needs a description explaining what it controls.' The parameter description 'The FTC disclosure ruleset to validate against (e.g. FTC_ENDORSEMENT_GUIDELINES_2026)' includes an example value, which the rubric explicitly forbids: 'Never include example values in the description... LLMs tend to reuse example values literally.' The server provides no error handling strategy, no recovery guidance, no permission gating, no audit trail logging, and no security validation.
Inspects sponsored social media posts for FTC regulatory compliance, checking for clear and conspicuous disclosures, valid disclosure placement, and deceptive claims
Output schema not documented. The tool returns a structured dict but no output schema is declared in the MCP tool definition or code. LLMs cannot plan downstream operations or extract required fields without knowing the response structure.
Input parameter descriptions include example values. LLMs latch onto example values like e.g. red, blue, green and pass them literally in real calls.' The ftc_disclosure_ruleset description includes 'e.g. FTC_ENDORSEMENT_GUIDELINES_2026', which an LLM may reuse literally instead of adapting to the actual use case.
No enum or constraint declared for ftc_disclosure_ruleset. The parameter accepts a string but does not specify what values are valid. This should be an enum (FTC_ENDORSEMENT_GUIDELINES_2026, FTC_ENDORSEMENT_GUIDELINES_2023, etc.) to prevent LLM hallucination of invalid ruleset names.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
No error handling or recovery guidance. The tool returns a hardcoded compliance verdict but includes no documentation of what errors might occur, how to recover, or how the LLM should handle edge cases (e.g., unsupported ruleset, malformed post text, API unavailability).
No permission gating or security validation. This tool inspects sponsored posts for FTC compliance but does not verify that the calling agent has authority to inspect a particular campaign or post. No audit trail is documented.
Input validation not visible. The tool accepts post_caption_text and ftc_disclosure_ruleset with no documented validation. What if post_caption_text is empty? What if ftc_disclosure_ruleset is an invalid string? No constraints (minLength, maxLength, pattern) are declared.