MCP server for Magellan Data Spotlight batch pipeline — enables agents to submit company domain enrichment batches, process them asynchronously, and download results
Tools have basic descriptions and clear naming (verb_noun pattern), but lack critical schema documentation and parameter descriptions. Input schemas are visible in quickstart.py but minimal: only parameter names and types, no descriptions for individual parameters. Output schemas are completely undocumented. Descriptions are adequate (50-150 chars) but lack actionable context for LLM selection. No error handling guidance, no pagination support despite async operations, and no documentation of side effects or prerequisites.
Check available credits balance
CHARGES CREDITS on first call. Returns a short download link (1-hour TTL). Re-downloads are free forever — is_purchased persists. If the link expires (HTTP 410, 'link has expired'), just call this again at no cost.
Poll a run to completion. Free. Be patient — minutes, not seconds.
Kick off async processing. Free. One run per output type, returns immediately.
Create a batch. Free. Invalid URLs are reported but don't block creation.
Output schemas completely undocumented. LLMs cannot plan downstream calls or extract required fields (batch_id, run_id, download_url, balance). Violates pattern:tool requirement that responses be structured and documented.
Parameter descriptions missing entirely. 'urls' array lacks description of expected format (domain names? full URLs?). 'output_types' lacks enum constraint or description of valid values. 'run_id' and 'batch_id' lack explanation of where to obtain them.
No error handling guidance. Tool descriptions do not explain failure modes (invalid URLs, failed runs, expired links, insufficient credits) or recovery steps. LLMs cannot self-correct on errors.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Async polling tool lacks pagination and timeout guidance. 'poll_until_complete' description mentions 'minutes, not seconds' but does not specify max wait time, retry interval, or what to do if polling exceeds timeout. Agents may hang indefinitely.
Destructive operations lack confirmation or dry-run support. 'download_run' charges credits irreversibly on first call. No tool offers a cost estimate before charging, violating pattern:confirmation-request.