{
  "markdown": "# proship-mcp\n\nStateless MCP (Model Context Protocol) server that lets any AI agent create Thailand Post shipments, print labels, and track parcels through [ProShip](https://proship.co.th).\n\n- **Endpoint:** `POST https://mcp.proship.me/mcp` (JSON-RPC 2.0, application/json)\n- **Docs:** open `https://mcp.proship.me/mcp` in a browser — the docs page is generated from the live tool registry\n- **Auth:** `Authorization: Bearer <ProShip API token>`, passed through verbatim to `api.proship.me`. Nothing is stored server-side. New users can call the public `signup` tool to get a token.\n\n## Tools\n\nPublic: `track_parcel`, `get_order_statuses`, `signup`.\nAuthenticated: `list_shops`, `create_order`, `list_orders`, `get_order`, `update_order_status`, `cancel_order`, `check_duplicate`, `print_label`.\n\nThe browser docs page at `/mcp` is the canonical, always-current tool reference.\n\n## Run\n\n```bash\nnpm install\nnpm start          # listens on PORT (default 3000)\nnpm test           # node:test suite, upstream fully mocked\n```\n\n## Environment\n\n| Var | Purpose | Default |\n|---|---|---|\n| `PORT` | listen port | `3000` |\n| `PUBLIC_URL` | absolute base used in label URLs and docs | `https://mcp.proship.me` |\n| `PROSHIP_API_BASE` | upstream API base | `https://api.proship.me` |\n| `PROSHIP_UTRACK_TOKEN` | optional server-side token enabling unauthenticated `track_parcel` | unset |\n| `PROSHIP_SYNTH_EMAIL_DOMAIN` | domain for synthesized signup emails | `proship.me` |\n\n## Deploy\n\nFly.io app `proship-mcp` (region `sin`):\n\n```bash\nfly deploy            # add --depot=false if the Depot builder fails\n```\n\n## Notes\n\n- Order ids are pipe-suffixed (`order-xxx|123`). GET/PUT/DELETE strip the suffix internally; `print_label` requires the full id. Always pass the full id between tools.\n- Weights are grams. Status codes use the Thai pipeline (`get_order_statuses`); code 6 means *out for delivery* despite upstream labeling it \"ERROR\".\n- The only server state is a 10-minute in-memory cache for label PDFs so `print_label` can return a URL.\n",
  "bytes": 2034,
  "sha": "3213c7395217fd0d4cfa9cce5a692e2c52c9c3f4782b850d679670ebf3f6abd4",
  "repo_slug": "proship1/proship-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_me_proship_mcp_proship_mcp_95306027/readme"
}