← Registry

eCommerce

tollbooth-dpyc.com

An MCP server for managing patron credits and Bitcoin Lightning payments, including balance checks, credit purchases, payment status, ledger crediting, and account statements.

1 endpoint81 known toolsFirst detected September 15, 2026Last detected September 15, 2026

ENDPOINT 1

https://goodearth-mcp.fastmcp.app/mcp

No auth detected

MCP server metadata

Name
goodearth-mcp
Version
4.0.3
Capabilities
loggingprompts.listChangedresources.listChangedtools.listChanged
Server instructions

Good Earth — region-scoped climate analytics for small specialty-crop and flower farms, monetized via Tollbooth DPYC Bitcoin Lightning micropayments. ## The block is the point A farm is not a pin. Ground is saved once as a BLOCK — a polygon or a pin, with a name — and every tool then takes that block by its id, its name or an alias. Geometry travels once, not on every call. Each tool samples the terrain inside the block and reports an aggregate PLUS the spread across it, because a bench and a hollow on the same acreage do not share a frost date. Blocks may OVERLAP or NEST — a meadow drawn inside the farm around it, one bed inside a field, a trial strip across two. That is intended: a block is a question about some ground, not a parcel on a survey, so an overlap is two honest questions and never a drawing error. Do not report one as a mistake or offer to redraw it. Name a block loosely. Its id, its name, an alias, or any part of its name that only one block has all work — "Meadow" finds "Lower Meadow", and a saved "North Farm (east parcel)" answers to "North Farm". When several blocks match, the error names every one with its id, so choose from that list rather than adding an alias to get past it. Start with goodearth_block_list. If the grower has saved nothing it answers with a worked example, so there is always ground to stand on; save theirs with goodearth_block_save and it takes over. What they grow, watch for and have seen is recorded per block with goodearth_block_item_save, which is why the season tools need no collections passed to them. ## First connection, for a grower's agent 1. Ask the grower for their Nostr npub (npub1…). Never ask for an nsec. 2. goodearth_request_npub_proof(patron_npub=…) sends them a Nostr DM. Tell them to reply to it from their Nostr client, then call goodearth_receive_npub_proof(patron_npub=…, dpop_token=…) once. Pass npub and dpop_token on every paid call after that. 3. goodearth_check_balance. If it is empty, goodearth_purchase_credits returns a Lightning invoice for the grower to pay, and goodearth_check_payment confirms it. 4. goodearth_block_list — their saved ground, or a worked example. Needing none of that: goodearth_service_status and the goodearth_oracle_* tools. goodearth_check_price previews a fare. The same tools drive the web app at https://goodearth.tollbooth-dpyc.com. ## Operator onboarding For the operator of this service, not a grower. Call goodearth_get_operator_onboarding_status to check readiness. 1. Register with an Authority (provides a Neon database automatically) 2. Deliver operator secrets via Secure Courier: - btcpay_host, btcpay_api_key, btcpay_store_id Call goodearth_request_credential_channel to start. ## Pricing Tool prices are set dynamically by the operator's pricing model. Use `goodearth_check_price` to preview costs and `goodearth_check_balance` to see your balance. ## Troubleshooting Tool Failures When a tool call fails, **read the error message** — it tells you what went wrong and what to do next. Common causes: - **proof is required** → Call `request_npub_proof` then `receive_npub_proof` to prove npub ownership. The cache expires after ~1 hour; renew with a fresh request/receive cycle. - **Insufficient credit balance** → Call `purchase_credits` to top up. - **Operator credentials not delivered yet** → This is a lifecycle state, not an error. The operator needs to deliver API credentials via Secure Courier. Do NOT tell the patron to 'fix the deployment' or 'inject environment variables' — credential delivery is a Secure Courier flow, not a platform configuration issue. - **Service unavailable / persistence layer unreachable / only bootstrap tools** → The MCP is warming up after idle (serverless cold start). This is normal — retry in 10-15 seconds. Do NOT diagnose as an infrastructure outage or suggest the operator check their deployment. The second request almost always succeeds. - **Upstream API authentication failure** → Only if the error explicitly mentions token expiry or an upstream auth error. **IMPORTANT — Don't Pester Your Customer:** Do NOT ask the patron to re-authenticate, re-authorize, or re-do OAuth unless the error message specifically says the upstream token is expired or invalid. Token expiry is only one of many possible causes. Speculatively re-running OAuth or credential flows wastes the patron's time and is the opposite of what DPYC stands for. ## Secure Courier — Human in the Loop All Secure Courier flows (`request_credential_channel` / `receive_credentials`, `request_npub_proof` / `receive_npub_proof`) require a human to read a Nostr DM and reply manually. After calling a `request_*` tool, **STOP and wait** for the user to confirm they have replied. Do NOT poll, retry, or speculatively call `receive_*` — each receive call **destructively drains** all DMs from the relay. If you call it before the human replies, their message will be lost. One request, one wait, one receive.

Known tools 81

goodearth_check_balance

Check a patron's credit balance at this operator.

Inferred read-only
goodearth_purchase_credits

Buy credits via Bitcoin Lightning.

Inferred read-only
goodearth_check_payment

Check the payment status of a Lightning invoice.

Potential side effects
goodearth_restore_credits

Credit a patron's ledger from a BTCPay-settled invoice.

Potential side effects
goodearth_account_statement

Generate a patron's account statement at this operator.

Inferred read-only
goodearth_account_statement_infographic

Generate a visual SVG infographic of your account statement.

Inferred read-only
goodearth_report_issue

File a field report about this service as a GitHub issue on the operator's repo.

Inferred read-only
goodearth_service_status

Check the health and configuration of this service.

Inferred read-only
goodearth_get_operator_onboarding_status

Report this operator's configuration readiness.

Inferred read-only
goodearth_get_patron_onboarding_status

Report a patron's credential readiness for this operator.

Inferred read-only
goodearth_session_status

Check operator readiness.

Inferred read-only
goodearth_request_credential_channel

Open a Secure Courier channel for credential delivery.

Inferred read-only
goodearth_receive_credentials

Pick up credentials from the Secure Courier.

Inferred read-only
goodearth_forget_credentials

Delete vaulted credentials for a specific service and npub.

Potential side effects
goodearth_update_patron_credential

Add or update a single patron credential field.

Potential side effects
goodearth_update_operator_credential

Add or update a single operator secret field.

Potential side effects
goodearth_delete_patron_credential

Remove a single patron credential field.

Potential side effects
goodearth_delete_operator_credential

Remove a single operator secret field.

Potential side effects
goodearth_get_patron_credential_fields

List stored patron credential field names (not values).

Inferred read-only
goodearth_request_npub_proof

Request npub ownership proof from a patron via Nostr DM.

Inferred read-only
goodearth_receive_npub_proof

Receive npub ownership confirmation from a patron.

Inferred read-only
goodearth_check_proof_status

Check whether a previously-cached dpop_token is still valid.

Inferred read-only
goodearth_oracle_how_to_join

Get DPYC onboarding instructions from the Oracle.

Inferred read-only
goodearth_oracle_get_tax_rate

Get the current DPYC certification tax rate.

Inferred read-only
goodearth_oracle_lookup_member

Look up a DPYC community member by npub.

Inferred read-only
goodearth_oracle_about

Describe the DPYC ecosystem via the Oracle.

Inferred read-only
goodearth_oracle_network_advisory

Get active network advisories from the Oracle.

Inferred read-only
goodearth_check_authority_balance

Check this operator's tax balance at the Authority.

Inferred read-only
goodearth_get_pricing_model

Get the active pricing model for this operator.

Inferred read-only
goodearth_set_pricing_model

Set the active pricing model.

Inferred read-only
goodearth_reset_pricing_model

Erase all pricing models and restore a viable default.

Potential side effects
goodearth_request_adoption

Ask a chosen Authority to adopt this operator (deferred courtship).

Inferred read-only
goodearth_adoption_status

Check this operator's adoption-request status at a chosen Authority.

Inferred read-only
goodearth_restore_neon_schema

Re-run ``ensure_schema()`` on every NeonVault this operator uses.

Inferred read-only
goodearth_list_canonical_identities

Return canonical (tool_id, mcp_name, …) for every tool the wheel exposes.

Inferred read-only
goodearth_get_nostr_profile

Read an npub's public Nostr profile (NIP-01 kind-0 metadata).

Inferred read-only
goodearth_publish_nostr_profile

Publish a CLIENT-SIGNED kind-0 profile to relays for an npub.

Potential side effects
goodearth_check_price

Preview the effective cost of a tool call.

Inferred read-only
goodearth_list_constraint_types

List all available constraint types and their parameter schemas.

Inferred read-only
goodearth_mint_coupon

Create a new operator-owned discount coupon.

Potential side effects
goodearth_list_coupons

List every coupon this operator has minted (newest first).

Inferred read-only
goodearth_update_coupon

Patch a coupon's editable fields.

Inferred read-only
goodearth_delete_coupon

Delete a coupon.

Potential side effects
goodearth_redeem_coupon

Claim a coupon by its name (the code the operator shared).

Inferred read-only
goodearth_list_my_coupons

List the coupons this patron has redeemed on this operator.

Inferred read-only
goodearth_forget_coupon

Remove a coupon from this patron's redemption list.

Potential side effects
goodearth_notarize_ledger

Build a Merkle tree of all patron balances and submit the root to Bitcoin via OpenTimestamps.

Inferred read-only
goodearth_get_notarization_proof

Generate a Merkle inclusion proof that a patron's balance was included in a Bitcoin-notarized snapshot.

Inferred read-only
goodearth_list_notarizations

List recent Bitcoin notarization records.

Inferred read-only
goodearth_gdd_season_curve

Growing degree day accumulation across a region, season to date.

Inferred read-only
goodearth_frost_window

When frost normally arrives on this ground, and whether it is coming this week.

Inferred read-only
goodearth_crop_gdd_status

Where every planting on a block stands, and whether it finishes before frost.

Inferred read-only
goodearth_soil_temp_projection

When the soil on this ground crosses a planting threshold.

Inferred read-only
goodearth_pest_threshold

Where a pest model's degree-day stages stand on this ground.

Inferred read-only
goodearth_calibration

Turn a block's own field reports into a correction on the model.

Inferred read-only
goodearth_almanac

The sky's own record for this ground — normal, actual, and what is coming.

Inferred read-only
goodearth_plan_the_season

The season-planning interview, as a workflow to follow.

Inferred read-only
goodearth_review_roster

Audit a roster against what this ground's record actually knows.

Inferred read-only
goodearth_task_save

Create or update one task.

Potential side effects
goodearth_task_list

One page of a region's tasks, ordered and filtered by the database.

Inferred read-only
goodearth_task_delete

Remove one task.

Potential side effects
goodearth_task_set_done

Mark one task done, or put it back.

Inferred read-only
goodearth_pest_catalog

Which pest stages are modelled for this ground this season.

Inferred read-only
goodearth_nearby_species

Search what is actually recorded near this ground, a page at a time.

Inferred read-only
goodearth_wildlife_catalog

Which animals are actually recorded around this ground.

Inferred read-only
goodearth_wildlife_calendar

When the other creatures working your season arrive.

Inferred read-only
goodearth_crop_suitability

Which crops finish on this ground, and with how much room to spare.

Inferred read-only
goodearth_tree_suitability

Whether a tree survives and gets its chill on this ground.

Inferred read-only
goodearth_tree_year

When spring reached this ground, and what the sap did.

Inferred read-only
goodearth_calendar_dataset

Compute this block's dated season as a dataset, and store it for publishing.

Inferred read-only
goodearth_calendar_fetch

Read a stored calendar dataset by its feed token.

Inferred read-only
goodearth_calendar_list

The calendar feeds you have published, and how often each is polled.

Inferred read-only
goodearth_calendar_revoke

Stop publishing a feed.

Inferred read-only
goodearth_planting_window

When to start seed, when to put it out, and the last day it still finishes.

Inferred read-only
goodearth_forget_my_ground

Delete every block you have here, and everything recorded on them.

Potential side effects
goodearth_block_save

Save a plot of land, so every other tool can work it by name.

Inferred read-only
goodearth_block_list

The ground you have saved, with its bounds.

Inferred read-only
goodearth_block_item_save

Record what you grow, watch for, or saw on a plot.

Inferred read-only
goodearth_block_item_list

What you grow, watch for, or saw on a plot — a page at a time.

Inferred read-only
goodearth_disease_risk

Hours of leaf wetness on this ground, and what the disease models make of them.

Inferred read-only
goodearth_drying_window

When the dew burns off this ground, the dry days ahead, and the next rain.

Inferred read-only

CONNECT WITH APPROVAL

Client installation

Review this server and its permissions before adding it. Secret placeholders must be set locally.

Codex

~/.codex/config.toml

[mcp_servers.goodearth-mcp]
url = "https://goodearth-mcp.fastmcp.app/mcp"
enabled = true
Claude Code

.mcp.json

{
  "mcpServers": {
    "goodearth-mcp": {
      "type": "http",
      "url": "https://goodearth-mcp.fastmcp.app/mcp"
    }
  }
}
Claude Desktop

Settings → Connectors → Add custom connector

Name: goodearth-mcp
Remote MCP URL: https://goodearth-mcp.fastmcp.app/mcp

Add this remote URL as a custom connector in Claude Desktop. Availability depends on the user plan and workspace policy.

Cursor

.cursor/mcp.json

{
  "mcpServers": {
    "goodearth-mcp": {
      "url": "https://goodearth-mcp.fastmcp.app/mcp"
    }
  }
}
Visual Studio Code

.vscode/mcp.json

Add to Visual Studio Code
{
  "servers": {
    "goodearth-mcp": {
      "type": "http",
      "url": "https://goodearth-mcp.fastmcp.app/mcp"
    }
  }
}
Generic MCP

Client-specific MCP configuration

{
  "name": "goodearth-mcp",
  "transport": "streamable-http",
  "url": "https://goodearth-mcp.fastmcp.app/mcp"
}
MCP Inspector

Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.

TRUST AND VERIFICATION EVIDENCE

Loading Trust v2 evidence…

Checking the associated registrable domain. The BuiltWith key remains server-side.

Indexed

Evidence is source-attributed and does not guarantee that a third-party server is safe. Risk labels are conservative metadata heuristics.