Overview · MCP · REST · Claude · ChatGPT and OpenAI
Developers · MCP
Piloxa over MCP
Streamable HTTP at https://piloxa.com/mcp. JSON-RPC over POST, no key. Each request below is sent to Piloxa by our test suite on every change, and the build fails if the answer loses a field this page promises.
Connect
No key and no account. Keep the Mcp-Session-Id response header and send it back on later calls: it ties a letter to your session for status and partner attribution.
curl -sS https://piloxa.com/mcp \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-06-18",
"capabilities": {},
"clientInfo": {
"name": "your-app",
"version": "1.0"
}
}
}'
The answer always includes: protocolVersion, serverInfo.name, instructions, capabilities.tools.
List the tools
Each tool carries readOnlyHint. Only prepare_certified_letter changes anything, and it never mails or charges.
curl -sS https://piloxa.com/mcp \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {}
}'
The answer always includes: tools.0.name, tools.0.inputSchema, tools.0.annotations.readOnlyHint.
Check a letter (read only)
Stores nothing. Returns whether the letter is ready, what is missing, the recommended service and its exact current price.
curl -sS https://piloxa.com/mcp \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "check_certified_letter",
"arguments": {
"letter_text": "Dear Northwind Appliance Repair,\n\nI paid $480 on August 14 for a repair that was never done. Please refund it within 14 days of receiving this letter.\n\nSincerely,\nJordan Example",
"recipient_address_block": "Northwind Appliance Repair\n4821 Example Avenue, Suite 210\nSpringfield, IL 62704",
"sender_address_block": "Jordan Example\n12 Oak Street\nPeoria, IL 61602"
}
}
}'
The answer always includes: structuredContent.ready_to_prepare, structuredContent.estimated_page_count, structuredContent.recommended_service, structuredContent.current_estimated_price.total, structuredContent.next_action.
Get the exact price (read only)
The price is computed on every call. Do not copy it into your own code; ask again.
curl -sS https://piloxa.com/mcp \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "quote_certified_letter",
"arguments": {
"page_count": 1,
"service": "CERTIFIED_ERR"
}
}
}'
The answer always includes: structuredContent.total, structuredContent.total_cents, structuredContent.service.
Prepare for the person’s approval
Returns approval_url. Give it to the person: they read the exact document, pay and approve there. Nothing is mailed or charged by this call.
curl -sS https://piloxa.com/mcp \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "prepare_certified_letter",
"arguments": {
"letter_text": "Dear Northwind Appliance Repair,\n\nI paid $480 on August 14 for a repair that was never done. Please refund it within 14 days of receiving this letter.\n\nSincerely,\nJordan Example",
"recipient_address_block": "Northwind Appliance Repair\n4821 Example Avenue, Suite 210\nSpringfield, IL 62704",
"sender_address_block": "Jordan Example\n12 Oak Street\nPeoria, IL 61602",
"service": "CERTIFIED_ERR"
}
}
}'
The answer always includes: structuredContent.approval_url.
Explain a tracking status (read only)
curl -sS https://piloxa.com/mcp \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "explain_certified_mail_status",
"arguments": {
"status": "Notice Left (No Authorized Recipient Available)"
}
}
}'
The answer always includes: structuredContent.meaning, structuredContent.next, structuredContent.guide_url.
Search Piloxa’s Certified Mail guides (read only)
curl -sS https://piloxa.com/mcp \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "search",
"arguments": {
"query": "certified mail refused"
}
}
}'
The answer always includes: structuredContent.results.0.id, structuredContent.results.0.url.
Read the resources
piloxa://pricing, piloxa://services, piloxa://agent-instructions and the guides.
curl -sS https://piloxa.com/mcp \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "resources/list",
"params": {}
}'
The answer always includes: resources.0.uri.
List the skills
The MCP Skills extension (io.modelcontextprotocol/skills). The same files are at /skills/index.json.
curl -sS https://piloxa.com/mcp \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "skills/list",
"params": {}
}'
The answer always includes: skills.0.uri, skills.0.frontmatter.name.
What no integration can do
- Mail or charge anything. Nothing is printed, mailed or charged until a person reviews the exact document, the recipient and the total, and approves and pays on the review page. An assistant can check, quote and prepare; it cannot send.
- Read a person’s past letters anonymously. Status answers only for letters prepared in the same session.
- Decide a legal deadline. A deadline is the person’s to state; Piloxa only notices that a letter mentions one.