Good Earth
Server Details
Climate timing for gardens and small farms: frost, heat, soil and planting dates for your plot.
The last two health checks of this connector failed. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.
If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.
- Status
- Unhealthy
- Uptime
- 96.0% over 35 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- lonniev/goodearth-mcp
- GitHub Stars
- 0
- Server Listing
- Good Earth
TDQS
Scored across 85 tools
The 85 tools span several subsystems (farm agronomy, weather/soil/pests, calendars, tasks, payments, credentials, coupons, pricing, Authority/Nostr). Overlapping clusters such as service_status/session_status/get_operator_onboarding_status, check_balance/check_authority_balance/account_statement, and pest_catalog/pest_threshold create real misselection risk, though the unusually detailed descriptions and explicit cross-references mitigate much of it.
Every tool uses the same goodearth_ prefix and snake_case, with predictable noun/verb phrasing. There is no mixing of casing or chaotic verb styles, so the naming surface is easy to scan and anticipate.
85 tools is an extreme mismatch for a single MCP server, far beyond the 50-tool threshold for over-scoping. Many unrelated subsystems are bundled into one surface, making the set difficult to navigate as a coherent whole.
The server covers an enormous domain with CRUD/lifecycle support for most areas: blocks, plantings, tasks, calendars, payments, credentials, coupons, pricing, and Authority/Nostr interactions. Minor gaps exist (e.g., no per-block or per-block-item delete outside the global forget_my_ground, and no explicit task get), but agents can work around them.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
goodearth_pest_threshold1 field changed- changed
Input schema / properties / pests / descriptionPrevious value: -"The pests to evaluate, in any of three shapes.\n1. Your own thresholds, from an extension bulletin: {\"pest\": \"Aster leafhopper\", \"base_temp\": 50, \"biofix\": \"2026-05-01\", \"stages\": [{\"stage\": \"second flight\", \"gdd\": 1850}]}. biofix is optional; without it the count runs from Jan 1.\n2. A published model, cited rather than restated: {\"pest\": \"Japanese beetle\", \"model\": \"usa-npn\"} — the dates come from USA-NPN for your ground, and re-resolve each season instead of freezing whatever was pasted in.\n3. Something you simply keep an eye out for: {\"pest\": \"Vole\", \"watch\": true} — no stages, no dates.\nDo NOT invent degree-day figures to fill shape 1. Use 2 or 3."New value: +"The pests to evaluate, in any of three shapes.\n1. Your own thresholds, from an extension bulletin: {\"pest\": \"Aster leafhopper\", \"base_temp\": 50, \"biofix\": \"2026-05-01\", \"stages\": [{\"stage\": \"second flight\", \"gdd\": 1850}]}. biofix is optional; without it the count runs from the season's start: Jan 1, or Jul 1 south of the equator.\n2. A published model, cited rather than restated: {\"pest\": \"Japanese beetle\", \"model\": \"usa-npn\"} — the dates come from USA-NPN for your ground, and re-resolve each season instead of freezing whatever was pasted in.\n3. Something you simply keep an eye out for: {\"pest\": \"Vole\", \"watch\": true} — no stages, no dates.\nDo NOT invent degree-day figures to fill shape 1. Use 2 or 3."
66 tool updates
- Changed
goodearth_account_statement1 field changed- changed
Input schema / properties / dpop_token / descriptionPrevious value: -"Raw JSON of a kind-27235 Nostr event signed by npub —\nnot base64, not NIP-98 'Authorization: Nostr <b64>' framing. Its\n`u` tag must hold THIS tool's exact name (from tools/list), not\nthe endpoint URL; content:\"\", created_at within 60s of now, and a\nrandom `nonce` tag recommended. Or a cached dpop_token phrase."New value: +"Proof that the caller holds npub: the grant envelope from\nreceive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed\nby npub whose `u` tag is this tool's name."
- Changed
goodearth_account_statement_infographic1 field changed- changed
Input schema / properties / dpop_token / descriptionPrevious value: -"Raw JSON of a kind-27235 Nostr event signed by npub —\nnot base64, not NIP-98 'Authorization: Nostr <b64>' framing. Its\n`u` tag must hold THIS tool's exact name (from tools/list), not\nthe endpoint URL; content:\"\", created_at within 60s of now, and a\nrandom `nonce` tag recommended. Or a cached dpop_token phrase."New value: +"Proof that the caller holds npub: the grant envelope from\nreceive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed\nby npub whose `u` tag is this tool's name."
- Changed
goodearth_adoption_status2 fields changed- added
Input schema / properties / authority_npub / descriptionAdded value: +"The npub of the Authority the request was sent to." - added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds the operator's npub: the grant\nenvelope from receive_npub_proof, or the raw JSON of a kind-27235\nNostr event signed by the operator whose `u` tag is this tool's name."
- Changed
goodearth_almanac2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...) for credit billing."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_block_item_list2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...) for credit billing."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_block_item_save2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...) for credit billing."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_block_list2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...) for credit billing."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_block_save2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...) for credit billing."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_block_transform2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...) for credit billing."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_calendar_dataset2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...) for credit billing."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_calendar_list2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_calendar_revoke2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_calibration2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...) for credit billing."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_check_balance1 field changed- changed
Input schema / properties / dpop_token / descriptionPrevious value: -"Raw JSON of a kind-27235 Nostr event signed by npub —\nnot base64, not NIP-98 'Authorization: Nostr <b64>' framing. Its\n`u` tag must hold THIS tool's exact name (from tools/list), not\nthe endpoint URL; content:\"\", created_at within 60s of now, and a\nrandom `nonce` tag recommended. Or a cached dpop_token phrase."New value: +"Proof that the caller holds npub: the grant envelope from\nreceive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed\nby npub whose `u` tag is this tool's name."
- Changed
goodearth_check_payment1 field changed- changed
Input schema / properties / dpop_token / descriptionPrevious value: -"Raw JSON of a kind-27235 Nostr event signed by npub —\nnot base64, not NIP-98 'Authorization: Nostr <b64>' framing. Its\n`u` tag must hold THIS tool's exact name (from tools/list), not\nthe endpoint URL; content:\"\", created_at within 60s of now, and a\nrandom `nonce` tag recommended. Or a cached dpop_token phrase."New value: +"Proof that the caller holds npub: the grant envelope from\nreceive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed\nby npub whose `u` tag is this tool's name."
- Changed
goodearth_check_price2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub: the grant envelope from\nreceive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed\nby npub whose `u` tag is this tool's name." - added
Input schema / properties / npub / descriptionAdded value: +"Optional patron npub; with it, the preview includes that\npatron's coupons and constraint effects."
- Changed
goodearth_check_proof_status1 field changed- changed
Input schema / properties / dpop_token / descriptionPrevious value: -"Required. The grant envelope returned by\n``receive_npub_proof``."New value: +"Proof that the caller holds npub: the grant envelope from\nreceive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed\nby npub whose `u` tag is this tool's name."
- Changed
goodearth_companions2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...) for credit billing."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_crop_gdd_status2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...) for credit billing."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_crop_suitability2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...) for credit billing."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_delete_coupon2 fields changed- added
Input schema / properties / coupon_id / descriptionAdded value: +"The id of the coupon to delete (from list_coupons)." - added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds the operator's npub: the grant\nenvelope from receive_npub_proof, or the raw JSON of a kind-27235\nNostr event signed by the operator whose `u` tag is this tool's name."
- Changed
goodearth_delete_operator_credential1 field changed- changed
Input schema / properties / dpop_token / descriptionPrevious value: -"Operator proof for this tool."New value: +"Proof that the caller holds npub: the grant envelope from\nreceive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed\nby npub whose `u` tag is this tool's name."
- Changed
goodearth_delete_patron_credential1 field changed- changed
Input schema / properties / dpop_token / descriptionPrevious value: -"Raw JSON of a kind-27235 Nostr event signed by npub —\nnot base64, not NIP-98 'Authorization: Nostr <b64>' framing. Its\n`u` tag must hold THIS tool's exact name (from tools/list), not\nthe endpoint URL; content:\"\", created_at within 60s of now, and a\nrandom `nonce` tag recommended. Or a cached dpop_token phrase."New value: +"Proof that the caller holds npub: the grant envelope from\nreceive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed\nby npub whose `u` tag is this tool's name."
- Changed
goodearth_disease_risk2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...) for credit billing."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_drying_window2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...) for credit billing."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_forget_coupon3 fields changed- added
Input schema / properties / coupon_id / descriptionAdded value: +"The id of the redeemed coupon to remove (from\nlist_my_coupons)." - added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub: the grant envelope from\nreceive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed\nby npub whose `u` tag is this tool's name." - added
Input schema / properties / npub / descriptionAdded value: +"The patron's Nostr public key (npub1...)."
- Changed
goodearth_forget_credentials1 field changed- changed
Input schema / properties / dpop_token / descriptionPrevious value: -"Raw JSON of a kind-27235 Nostr event signed by npub —\nnot base64, not NIP-98 'Authorization: Nostr <b64>' framing. Its\n`u` tag must hold THIS tool's exact name (from tools/list), not\nthe endpoint URL; content:\"\", created_at within 60s of now, and a\nrandom `nonce` tag recommended. Or a cached dpop_token phrase."New value: +"Proof that the caller holds npub: the grant envelope from\nreceive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed\nby npub whose `u` tag is this tool's name."
- Changed
goodearth_forget_my_ground2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...) — whose ground to forget."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_frost_window2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...) for credit billing."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_gdd_season_curve2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...) for credit billing."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_get_nostr_profile1 field changed- added
Input schema / properties / npub / descriptionAdded value: +"The Nostr public key (npub1...) whose profile to read."
- Changed
goodearth_get_patron_credential_fields1 field changed- changed
Input schema / properties / dpop_token / descriptionPrevious value: -"Raw JSON of a kind-27235 Nostr event signed by npub —\nnot base64, not NIP-98 'Authorization: Nostr <b64>' framing. Its\n`u` tag must hold THIS tool's exact name (from tools/list), not\nthe endpoint URL; content:\"\", created_at within 60s of now, and a\nrandom `nonce` tag recommended. Or a cached dpop_token phrase."New value: +"Proof that the caller holds npub: the grant envelope from\nreceive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed\nby npub whose `u` tag is this tool's name."
- Changed
goodearth_get_patron_onboarding_status1 field changed- changed
Input schema / properties / dpop_token / descriptionPrevious value: -"A kind-27235 Nostr event signed by patron_npub for this tool."New value: +"Proof that the caller holds npub: the grant envelope from\nreceive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed\nby npub whose `u` tag is this tool's name."
- Changed
goodearth_list_coupons1 field changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds the operator's npub: the grant\nenvelope from receive_npub_proof, or the raw JSON of a kind-27235\nNostr event signed by the operator whose `u` tag is this tool's name."
- Changed
goodearth_list_my_coupons2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub: the grant envelope from\nreceive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed\nby npub whose `u` tag is this tool's name." - added
Input schema / properties / npub / descriptionAdded value: +"The patron's Nostr public key (npub1...)."
- Changed
goodearth_mint_coupon1 field changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds the operator's npub: the grant\nenvelope from receive_npub_proof, or the raw JSON of a kind-27235\nNostr event signed by the operator whose `u` tag is this tool's name."
- Changed
goodearth_nearby_species2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...) for credit billing."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_oracle_lookup_member1 field changed- added
Input schema / properties / npub / descriptionAdded value: +"The Nostr public key (npub1...) of the member to look up."
- Changed
goodearth_pest_catalog2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...) for credit billing."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_pest_threshold2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...) for credit billing."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_plan_the_season2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...) for credit billing."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_planting_window2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...) for credit billing."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_purchase_credits1 field changed- changed
Input schema / properties / dpop_token / descriptionPrevious value: -"Raw JSON of a kind-27235 Nostr event signed by npub —\nnot base64, not NIP-98 'Authorization: Nostr <b64>' framing. Its\n`u` tag must hold THIS tool's exact name (from tools/list), not\nthe endpoint URL; content:\"\", created_at within 60s of now, and a\nrandom `nonce` tag recommended. Or a cached dpop_token phrase."New value: +"Proof that the caller holds npub: the grant envelope from\nreceive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed\nby npub whose `u` tag is this tool's name."
- Changed
goodearth_receive_credentials1 field changed- changed
Input schema / properties / dpop_token / descriptionPrevious value: -"Required. The session phrase returned by\nrequest_credential_channel for this exact channel."New value: +"Proof that the caller holds npub: the grant envelope from\nreceive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed\nby npub whose `u` tag is this tool's name."
- Changed
goodearth_receive_npub_proof1 field changed- changed
Input schema / properties / dpop_token / descriptionPrevious value: -"Required. The dpop_token returned by request_npub_proof."New value: +"Proof that the caller holds npub: the grant envelope from\nreceive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed\nby npub whose `u` tag is this tool's name."
- Changed
goodearth_redeem_coupon3 fields changed- added
Input schema / properties / code / descriptionAdded value: +"The coupon code the operator shared." - added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub: the grant envelope from\nreceive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed\nby npub whose `u` tag is this tool's name." - added
Input schema / properties / npub / descriptionAdded value: +"The patron's Nostr public key (npub1...)."
- Changed
goodearth_report_issue1 field changed- changed
Input schema / properties / dpop_token / descriptionPrevious value: -"Raw JSON of a kind-27235 Nostr event signed by npub —\nnot base64, not NIP-98 'Authorization: Nostr <b64>' framing. Its\n`u` tag must hold THIS tool's exact name (from tools/list), not\nthe endpoint URL; content:\"\", created_at within 60s of now, and a\nrandom `nonce` tag recommended. Or a cached dpop_token phrase."New value: +"Proof that the caller holds npub: the grant envelope from\nreceive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed\nby npub whose `u` tag is this tool's name."
- Changed
goodearth_request_adoption1 field changed- changed
Input schema / properties / dpop_token / descriptionPrevious value: -"operator-npub ownership proof (inline kind-27235 or cached token)."New value: +"Proof that the caller holds npub: the grant envelope from\nreceive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed\nby npub whose `u` tag is this tool's name."
- Changed
goodearth_reset_pricing_model1 field changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds the operator's npub: the grant\nenvelope from receive_npub_proof, or the raw JSON of a kind-27235\nNostr event signed by the operator whose `u` tag is this tool's name."
- Changed
goodearth_restore_credits1 field changed- changed
Input schema / properties / dpop_token / descriptionPrevious value: -"A kind-27235 Nostr event signed by the OPERATOR's nsec\nfor this tool. Patron proofs are rejected."New value: +"Proof that the caller holds npub: the grant envelope from\nreceive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed\nby npub whose `u` tag is this tool's name."
- Changed
goodearth_restore_neon_schema1 field changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds the operator's npub: the grant\nenvelope from receive_npub_proof, or the raw JSON of a kind-27235\nNostr event signed by the operator whose `u` tag is this tool's name."
- Changed
goodearth_review_roster2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...) for credit billing."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_set_pricing_model2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds the operator's npub: the grant\nenvelope from receive_npub_proof, or the raw JSON of a kind-27235\nNostr event signed by the operator whose `u` tag is this tool's name." - added
Input schema / properties / model_json / descriptionAdded value: +"The complete pricing model as a JSON object; it\nreplaces the active model."
- Changed
goodearth_soil_temp_projection2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...) for credit billing."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_sunlight2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...) for credit billing."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_task_delete2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...)."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_task_list2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...)."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_task_save3 fields changed- added
Input schema / properties / done / descriptionAdded value: +"True records the task as already done." - added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...)."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_task_set_done2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...)."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_tree_suitability2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...) for credit billing."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_tree_year2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...) for credit billing."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_update_coupon11 fields changed- added
Input schema / properties / clear_total_uses / descriptionAdded value: +"True makes total redemptions unlimited." - added
Input schema / properties / clear_uses_per_patron / descriptionAdded value: +"True makes discounted calls per patron unlimited." - added
Input schema / properties / coupon_id / descriptionAdded value: +"The id of the coupon to change (from list_coupons)." - added
Input schema / properties / discount_percent / descriptionAdded value: +"A new percentage off the base price (0-100)." - added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds the operator's npub: the grant\nenvelope from receive_npub_proof, or the raw JSON of a kind-27235\nNostr event signed by the operator whose `u` tag is this tool's name." - added
Input schema / properties / name / descriptionAdded value: +"A new code for patrons to type." - added
Input schema / properties / tool_ids / descriptionAdded value: +"The tools the coupon discounts: tool ids or MCP tool names,\n[\"*\"] for every paid tool, [] to unbind it." - added
Input schema / properties / total_uses / descriptionAdded value: +"A new number of redemptions across all patrons." - added
Input schema / properties / uses_per_patron / descriptionAdded value: +"A new number of discounted calls per patron." - added
Input schema / properties / valid_from / descriptionAdded value: +"A new ISO-8601 datetime when the coupon becomes active." - added
Input schema / properties / valid_until / descriptionAdded value: +"A new ISO-8601 datetime when the coupon expires."
- Changed
goodearth_update_operator_credential1 field changed- changed
Input schema / properties / dpop_token / descriptionPrevious value: -"Operator proof for this tool."New value: +"Proof that the caller holds npub: the grant envelope from\nreceive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed\nby npub whose `u` tag is this tool's name."
- Changed
goodearth_update_patron_credential1 field changed- changed
Input schema / properties / dpop_token / descriptionPrevious value: -"Raw JSON of a kind-27235 Nostr event signed by npub —\nnot base64, not NIP-98 'Authorization: Nostr <b64>' framing. Its\n`u` tag must hold THIS tool's exact name (from tools/list), not\nthe endpoint URL; content:\"\", created_at within 60s of now, and a\nrandom `nonce` tag recommended. Or a cached dpop_token phrase."New value: +"Proof that the caller holds npub: the grant envelope from\nreceive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed\nby npub whose `u` tag is this tool's name."
- Changed
goodearth_wildlife_calendar2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...) for credit billing."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
- Changed
goodearth_wildlife_catalog2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content \"\", a `u` tag holding this tool's exact name from tools/list, created_at within 60 s of now, and a random `nonce` tag." - changed
Input schema / properties / npub / descriptionPrevious value: -"Required. Your Nostr public key (npub1...) for credit billing."New value: +"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it."
1 tool update
- Added
goodearth_request_echo
2 tool updates
- Changed
goodearth_block_list1 field changed- added
Input schema / properties / groupAdded value: +{ + "default": "", + "description": "Only the ground in this group, or in a group inside it, e.g. 'North Farm'.", + "type": "string" +}
- Changed
goodearth_block_save2 fields changed- changed
Input schema / properties / blocks / descriptionPrevious value: -"Several blocks in one call, each {name, geometry, block?, aliases?, base_temp?, retired?} — the fields above, per block. A garden laid out as beds is one call, not one per bed. Up to 100; all are checked before any is saved, and one problem refuses the lot."New value: +"Several blocks in one call, each {name, geometry, block?, aliases?, base_temp?, retired?, groups?} — the fields above, per block. Regrouping many plots is one call. A garden laid out as beds is one call, not one per bed. Up to 100; all are checked before any is saved, and one problem refuses the lot." - added
Input schema / properties / groupsAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The groups this ground belongs to. A group inside a group is a path: 'North Farm / Orchard' is in 'North Farm' too. Omit to keep the groups it has; pass [] to clear them." +}
1 tool update
- Added
goodearth_block_transform
1 tool update
- Changed
goodearth_block_save9 fields changed- added
Input schema / properties / blocksAdded value: +{ + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Several blocks in one call, each {name, geometry, block?, aliases?, base_temp?, retired?} — the fields above, per block. A garden laid out as beds is one call, not one per bed. Up to 100; all are checked before any is saved, and one problem refuses the lot." +} - removed
Input schema / properties / geometry / additionalPropertiesRemoved value: -true - added
Input schema / properties / geometry / anyOfAdded value: +[ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } +] - added
Input schema / properties / geometry / defaultAdded value: +null - changed
Input schema / properties / geometry / descriptionPrevious value: -"Its bounds: a GeoJSON Polygon, or {lat, lon, radius_m}. It may overlap or sit inside another block — a meadow within the farm around it is two blocks, each answered for its own ground."New value: +"Its bounds: a GeoJSON Polygon, or {lat, lon, radius_m}. It may overlap or sit inside another block — a meadow within the farm around it is two blocks, each answered for its own ground. Omit when passing `blocks`." - removed
Input schema / properties / geometry / typeRemoved value: -"object" - added
Input schema / properties / name / defaultAdded value: +"" - changed
Input schema / properties / name / descriptionPrevious value: -"What you call this ground, e.g. 'North Field'. Unique among your blocks."New value: +"What you call this ground, e.g. 'North Field'. Unique among your blocks. Omit when passing `blocks`." - removed
Input schema / requiredRemoved value: -[ - "name", - "geometry" -]
3 tool updates
- Changed
goodearth_calibration1 field changed- changed
Input schema / properties / observations / descriptionPrevious value: -"Optional. Omit and this reads the field reports already recorded for the block. Pass a list to calibrate against those instead, without recording them: a frost report is {\"kind\": \"frost\", \"observed_on\": \"2026-10-02\"}; a crop stage is {\"kind\": \"stage\", \"observed_on\": \"2026-07-31\", \"crop\": \"Dahlia\", \"stage\": \"first bloom\", \"gdd_target\": 1200, \"set_out\": \"2026-05-24\"}. Both accept an optional note."New value: +"Optional. Omit and this reads the field reports already recorded for the block. Pass a list to calibrate against those instead, without recording them: a frost report is {\"kind\": \"frost\", \"observed_on\": \"2026-10-02\"}; a crop stage is {\"kind\": \"stage\", \"observed_on\": \"2026-07-31\", \"crop\": \"Dahlia\", \"stage\": \"first bloom\", \"gdd_target\": 1200, \"set_out\": \"2026-05-24\"}. Both accept an optional note. A sunlight report ({\"kind\": \"sunlight\", ...}) is goodearth_sunlight's and is only counted here."
- Changed
goodearth_mint_coupon1 field changed- added
Input schema / properties / tool_idsAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The tools this coupon discounts — tool ids or MCP\ntool names, or ``[\"*\"]`` for every tool priced above zero." +}
- Changed
goodearth_update_coupon1 field changed- added
Input schema / properties / tool_idsAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null +}
1 tool update
- Changed
goodearth_sunlight2 fields changed- added
Input schema / properties / detailAdded value: +{ + "default": "summary", + "description": "\"summary\" (default) or \"grid\": every cell's numbers, packed for a map overlay.", + "pattern": "^(summary|grid)$", + "type": "string" +} - added
Input schema / properties / pointAdded value: +{ + "anyOf": [ + { + "maxLength": 64, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A spot inside the block as \"lat,lon\" — adds its card: horizon, sun paths, monthly hours, solar figures." +}
1 tool update
- Changed
goodearth_sunlight2 fields changed- added
Input schema / properties / panel_azimuth_degAdded value: +{ + "anyOf": [ + { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Panel facing, degrees clockwise from north (180 = south). Default: toward the equator." +} - added
Input schema / properties / panel_tilt_degAdded value: +{ + "anyOf": [ + { + "maximum": 90, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Panel tilt from flat, 0–90. Default: the latitude, no steeper than 40." +}
1 tool update
- Added
goodearth_sunlight
1 tool update
- Added
goodearth_companions
1 tool update
- Changed
goodearth_check_proof_status1 field changed- changed
Input schema / properties / dpop_token / descriptionPrevious value: -"Required. The dpop_token phrase returned by\n``request_npub_proof`` / ``receive_npub_proof``."New value: +"Required. The grant envelope returned by\n``receive_npub_proof``."
Related MCP Connectors
Weather decisions for 21 activities: should you run, paint, sail or pour concrete, and when?
Search crops, check companion planting, explore seasonal calendars, and find planting plans.
Historical climate data, temperatures, precipitation, and normals
Forecasts, climate history, severe alerts by location — for outdoor-event planners.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides farm and land decision support tools (irrigation advice, frost risk, growing degree days, dry spell status) using free public weather and soil data, without requiring any API keys.75 npm2MIT
- AlicenseAqualityBmaintenanceAn MCP server that gives coding agents structured plant data for garden planning: species care profiles, companion checks that explain themselves, and frost-date planting windows derived from ten years of observed weather.411 npmMIT

@cropgraph/mcpofficial
AlicenseNot gradedqualityBmaintenanceExposes eighteen garden-planning tools to AI agents over stdio, enabling crop calendar and planting-window lookups, companion planting graphs, crop rotation and succession planning, pest and disease intelligence with beneficial-insect cross-references, and USDA zone plus climate classification. All data is curated and served offline, so agents can answer climate-aware scheduling questions without live API calls.1MIT- AlicenseNot gradedqualityDmaintenanceProvides astrology-aware garden care planning by combining lunar phase, Vedic panchang, weather, and soil forecasts into structured care plans with rationales and confidence scores.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.