{"ok":true,"name":"goodearth_calibration","description":"Turn a block's own field reports into a correction on the model. Every other tool here answers from a 9 km grid refined by a physical terrain model. What that cannot know is the part that makes a farm particular — the hedgerow, the pond, the outlet the cold air drains through. Your observations measure exactly that gap. Returns two corrections, kept separate because they fix different things: a bias in *heat* from crop stages (this ground accumulates more or less than the grid credits) and a bia","inputSchema":{"type":"object","required":["block"],"properties":{"npub":{"type":"string","default":"","description":"The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance. The connection proves the caller holds it: a request signed with npub's key (NIP-98 `Authorization: Nostr`), or an OAuth connection that holds npub (see held_identities)."},"block":{"type":"string","description":"The ground to answer for: a block you have saved — its id, its name, one of its aliases, or any part of its name that only one block has (e.g. \"Meadow\" for \"Lower Meadow\"). If several match, the error lists them with their ids. Blocks may overlap; each answers for its own ground. Save one with block_save first; geometry travels once, not on every call."},"season":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Which season's reports to calibrate against. Defaults to this one."},"base_temp":{"type":"number","default":50,"description":"Base temperature in °F the stage targets are counted at."},"observations":{"anyOf":[{"type":"array","items":{"type":"object","additionalProperties":true}},{"type":"null"}],"default":null,"description":"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."}},"additionalProperties":false},"serverUrl":"https://goodearth.tollbooth-dpyc.com/mcp","transport":"http","handshake":"ok","host":"goodearth.tollbooth-dpyc.com","score":40,"grade":"C","auth":"oauth","lastScannedAt":"2026-10-30T13:10:00.853Z","stale":false,"permalink":"https://agentboardai.app/mcp/goodearth.tollbooth-dpyc.com/goodearth_calibration","page":"https://agentboardai.app/site/goodearth.tollbooth-dpyc.com"}