Crowntowncompost Mcp

io.github.chrischallPublished by GitHub account chrischallv1.2.0Updated Nov 7, 2026

Customer access to the Crown Town Compost portal: pickups, invoices, and skips (AI-built).

Overview

AI-generated overview

Connects an assistant to a Crown Town Compost customer portal account to read pickups, invoices and impact, and to skip services or contact support.

What you can do
  • Check account health, dashboard, subscription, service addresses and environmental impact
  • Read contact details and notification preferences
  • Review pickup schedule, observed arrival windows, service history and upcoming collection days
  • List invoices with amounts, status and Stripe payment links
  • Skip or un-skip a collection day, update account details, report a missed pickup, message support
When to use it
Useful for a Crown Town Compost customer who wants to ask an assistant about upcoming pickups, past collections, invoices or account settings, and to make small portal changes such as skipping a pickup without opening the website.
Requirements
Runs locally as an npm package over stdio, so Node.js and an MCP host are needed. Requires either CROWNTOWN_USERNAME plus CROWNTOWN_PASSWORD, or a CROWNTOWN_SESSION_COOKIE from a signed-in browser session. Network access to portal.crowntowncompost.com. Optional settings cover the session cache file and confirmation behaviour.
Before you install
The server stores portal credentials or a session cookie, and by default caches the session on disk unless CROWNTOWN_SESSION_CACHE is false. Several tools write to the real account: skipping a service, changing contact details, reporting a missed pickup and sending a support message, which notifies staff. Confirmation prompts or a two-step token are used, but MCP_CONFIRM_MODE=auto lets the model proceed after reviewing the preview itself. Payments are out of scope; invoice links open Stripe…

Installation

In SourceWeft

  1. Open Crowntowncompost Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

crowntowncompost-mcp

MCP server for the Crown Town Compost customer portal — check your pickups, invoices, and upcoming collection days, skip a service, report a missed pickup, and update your account, all in natural language.

Developed and maintained by AI (Claude Code). Use at your own discretion.

What it talks to

crowntowncompost.com is a marketing site with no customer data. Everything lives at portal.crowntowncompost.com, a Django app (a white-labeled StopSuite hauler platform). This server authenticates server-side with a session cookie you already hold, or with your own portal username and password — a normal form login that returns one — and reads the same pages and JSON endpoints the website uses. No browser extension, no bot-wall workaround, no third-party service in the middle.

Install

sh
npm install -g crowntowncompost-mcp

Then add it to your MCP host. Two configurations work — supply either a session cookie you already hold (nothing else needed), or the login pair so the server can mint one:

json
{  "mcpServers": {    "crowntowncompost": {      "command": "npx",      "args": ["-y", "crowntowncompost-mcp"],      "env": {        "CROWNTOWN_USERNAME": "[email protected]",        "CROWNTOWN_PASSWORD": "your-portal-password"      }    }  }}

To use a session cookie instead, set CROWNTOWN_SESSION_COOKIE to a Cookie header value from a signed-in browser session (sessionid=…; csrftoken=…) and leave the username and password unset. The portal login is then never run, and no password is stored anywhere.

Setting both is also valid, and is the most robust configuration: the cookie is used first, and when the portal eventually expires it the login quietly mints a replacement. With a cookie alone, an expired session is reported as expired — the server says so plainly rather than claiming nothing is configured.

Locally you can instead copy .env.example to .env. The server boots without credentials (so a host's install-time probe succeeds); the configuration error surfaces on the first tool call.

Tools

Reads

ToolWhat it returns
crowntown_healthcheckWhether credentials work, plus account status; on failure error.kind says which hop broke (no_credential, credential_rejected, session_expired, edge_blocked, timeout, transport, http)
crowntown_get_dashboardAccount status, subscription (plan, price, renewal date), next service date, service addresses + pickup days, and your environmental impact
crowntown_get_accountContact details and notification preferences
crowntown_get_pickup_schedulePickup day(s) and time window per address — the official set-out-by time plus an observed arrival window (earliest/latest/typical, consistent vs varies) derived from your collection history
crowntown_list_service_historyPast collection stops — date, outcome, time, weight, services. Paginated; filter by success/missing/empty/inaccessible/unacceptable
crowntown_list_upcoming_servicesUpcoming collection days, each with the ids needed to skip it
crowntown_list_invoicesBilling history with amounts, status, and Stripe payment links

Writes (all confirmation-gated)

ToolWhat it does
crowntown_skip_serviceSkip or un-skip an upcoming collection day
crowntown_update_accountUpdate contact details / notification preferences
crowntown_report_missed_pickupReport that a collection was missed
crowntown_contact_supportSend a message to customer support

Every mutating tool asks you to confirm before it writes anything. A client that can show a confirmation prompt (Claude Code) gets that prompt (unless MCP_CONFIRM_ELICITATION=off). Elsewhere (claude.ai, Claude Desktop) the first call sends nothing and returns status: "confirmation-required" with a preview of exactly what would be sent plus a confirmToken; only a repeat call with the same arguments and that token proceeds. The token works once, expires, and is refused (DRAFT_CHANGED) if what would be sent changed in between — including values the tool reads first, such as the account form crowntown_update_account re-saves or the reply-to email/phone the support form pre-fills. Where a re-read can prove the change stuck (skips, account updates) the tool re-reads and reports verified; where it can't (support messages, missed-pickup reports) it says so rather than claiming success.

Confirmations

variabledefault
MCP_CONFIRM_MODEask-userWhat a write does on a client that cannot show a confirmation prompt (claude.ai, Claude Desktop). ask-user: two steps — the first call does nothing and returns a preview plus a token, and the model must get your approval in chat before calling again with it. auto: the same two steps, but the model may use the token after reviewing the preview itself. refuse: writes are refused on such clients. A client that can show prompts (Claude Code) always gets the real prompt, unless MCP_CONFIRM_ELICITATION=off. An unrecognised value is treated as refuse.
MCP_CONFIRM_ELICITATIONonoff never shows a confirmation prompt, so every client gets the MCP_CONFIRM_MODE behaviour. Set it for a client that says it can show prompts but never does (the write hangs — opencode 2.0.x). Any other value is treated as on, with a warning on stderr.
MCP_CONFIRM_TTL_SECONDS600How long a token stays valid.
MCP_CONFIRM_SECRETrandom per processSigning key; set it only if tokens must survive a server restart.

Payments are deliberately out of scope — crowntown_list_invoices returns the hosted invoice URL for you to open in a browser.

Without the MCP

The skills/crowntown-portal skill does the same things with curl in a shell — useful in scripts or on a machine where this server isn't installed. It documents the Django CSRF handshake, both JSON endpoints, and every write's field list.

Development

sh
npm installnpm run buildnpm test

Tests mock the network — no credentials needed and nothing hits the live portal. tests/server-boot.test.ts spawns the real built artifacts (the npm bin and the bundle, the latter without node_modules) and runs the MCP handshake against them.

Endpoint shapes are documented in docs/CROWNTOWN-API.md, including which parts are live-verified and which are not.

License

MIT

Source: README.md at commit 2d42606

Tools

11

crowntown_healthcheck

Verify Crown Town Compost auth + connectivity

Confirm credentials are configured, log in to the Crown Town Compost portal, fetch the dashboard, and report {authenticated, account_status, service_addresses}. On failure, error.kind says which hop broke: no_credential (nothing configured), credential_rejected (the portal refused the username/password), session_expired (a supplied session cookie is no longer honoured), edge_blocked (a CDN/WAF refused the request before the portal saw it, so the credentials were never judged), timeout, transport or http. Read-only; never returns the credentials.

Takes no parameters.

crowntown_get_dashboard

Get account dashboard summary

Get your Crown Town Compost dashboard: account status, active subscription (plan, price, renewal date), next service date, service address(es) and their pickup day(s), and your composting environmental impact (lbs diverted, seedlings, miles offset, gallons of gas). Read-only.

Takes no parameters.

crowntown_get_account

Get account contact details

Get your account contact details (first name, last name, phone) and notification preferences (email reminders, service notifications). Read-only — use crowntown_update_account to change them.

Parametersview

crowntown_update_account

Update account contact details / preferences

Update your contact details and/or notification preferences. Reads your current account form, changes ONLY the field(s) you specify, and re-saves the rest verbatim. The preview shows the current values and the resulting state. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).

Parametersphonelast_namefirst_nameconfirmTokensend_email_remindersservice_notifications

crowntown_list_service_history

List service history (pickups)

List past collection stops for your account — date, status (Success/Missing/Empty/Inaccessible/Unacceptable), collection time, weight, and services rendered. Paginated and filterable by status. Read-only.

Parameterspagestatusper_page

crowntown_list_upcoming_services

List upcoming (skippable) services

List upcoming scheduled collection days from the service calendar, each with the identifiers needed to skip it (rid, clid), the service date, and whether it is currently scheduled or already skipped. view "brief" answers one line per day instead: "Compost pickup — <ISO date> — scheduled|skipped". Read-only — use crowntown_skip_service to actually skip/unskip.

Parametersview

crowntown_get_pickup_schedule

Get pickup schedule (days + time window)

Get the pickup schedule for each service address: pickup day(s), next service date, the official set-out-by time, and an observed arrival-time window (earliest/latest/typical and whether it is consistent or varies) derived from the recorded collection times in your service history. Crown Town Compost publishes no guaranteed arrival window, so the observed window is empirical. Read-only.

Parametershistory_sample

crowntown_skip_service

Skip or un-skip an upcoming service

Skip (or un-skip) an upcoming collection day. Pass the rid + clid from crowntown_list_upcoming_services. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).

ParametersridrequiredclidrequiredactionconfirmToken

crowntown_list_invoices

List billing history (invoices)

List your Crown Town Compost invoices — number, date, amount, status, whether payable, and links (Stripe PDF / receipt / hosted invoice page). Paginated. view "brief" answers one line per invoice instead ("Invoice <number> <amount> — <ISO date> — <status>", inside the untrusted-data envelope) and lists only the payable invoices unless payable_only is false. Read-only.

Parameterspageviewper_pagepayable_only

crowntown_report_missed_pickup

Report a missed pickup

Report that a scheduled collection was missed. This notifies Crown Town Compost staff. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).

ParametersdaterequiredcommentconfirmToken

crowntown_contact_support

Send a message to customer support

Send a message to Crown Town Compost customer support. The reply-to email and phone default to the ones the support form pre-fills from your account, and the preview shows the exact values that will be sent. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).

ParametersemailphonemessagerequiredconfirmToken

Version history

16
  1. v1.2.0LatestNov 4, 2026
  2. v1.1.8Oct 29, 2026
  3. v1.1.7Oct 17, 2026
  4. v1.1.6Oct 16, 2026
  5. v1.1.5Oct 10, 2026
  6. v1.1.4Oct 7, 2026
  7. v1.1.3Oct 5, 2026
  8. v1.1.2Oct 3, 2026
  9. v1.1.1Sep 25, 2026
  10. v1.1.0Sep 24, 2026
  11. v1.0.3Sep 23, 2026
  12. v1.0.2Sep 23, 2026
  13. v1.0.1Sep 21, 2026
  14. v1.0.0Sep 20, 2026
  15. v0.6.0Sep 18, 2026
  16. v0.5.2Sep 16, 2026

Score

80% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.