Example scripts and servers for integrating with the Postcard.bot API to send physical postcards
This is an examples repository, not a production MCP server. No MCP server implementation is present in the source code. The repository contains Node.js and Python example scripts that call the Postcard.bot API directly, plus Express/Flask webhook receivers. Tool definitions are inferred from the provided metadata, not from actual MCP tool registration code. Schemas are present but descriptions are minimal (10-50 chars, well below the 50-200 char baseline for LLM-optimized tools). No error handling guidance, no parameter validation, no security patterns. The webhook handlers are standalone HTTP servers, not MCP tools.
Send postcards to multiple recipients via the Postcard.bot bulk API from a CSV file
Send postcards to multiple recipients via the Postcard.bot bulk API from a CSV file
Check the status of a postcard or bulk job
Check the status of a postcard or bulk job
Receive and verify Postcard.bot webhook events with HMAC-SHA256 signature verification
Receive and verify Postcard.bot webhook events with HMAC-SHA256 signature verification
Send a single postcard via the Postcard.bot API
Not an MCP server implementation. Repository contains example scripts and webhook servers, not an MCP tool server with proper tool registration, capabilities negotiation, or protocol compliance.
Descriptions are too short (10-50 chars vs. baseline 50-200 chars). 'Send a single postcard via the Postcard.bot API' lacks context on when to use this vs. bulk_send, what happens on retry, or what the response contains.
Duplicate tools across languages (send_postcard vs. send_postcard_python, etc.). LLMs will waste reasoning cycles deciding between functionally identical tools. Consolidate into a single canonical tool per operation.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 33 | 2026-07-28+ | v2 |
Send a single postcard via the Postcard.bot API
No error handling guidance. Descriptions do not explain what happens on failure, whether errors are retryable, or what the LLM should do next. E.g., 'Invalid address' or 'API rate limit exceeded' need recovery hints.
bulk_send accepts only 'csv_file' path parameter with no validation, format description, or schema. No guidance on CSV structure, required columns, or error handling for malformed files.