此 MCP 可以做什么
Provides plot-specific climate and growing-season analysis for gardens and farms, including frost, heat accumulation, crop suitability, disease risk, and planting calendars.
工具
输入模式
{'type': 'object', 'required': ['npub', 'dpop_token'], 'properties': {'days': {'type': 'integer', 'default': 30, 'description': 'Number of days of daily usage history to include (default 30).'}, 'npub': {'type': 'string', 'description': "The patron's Nostr public key (npub1...)."}, 'dpop_token': {'type': 'string', 'description': 'Raw JSON of a kind-27235 Nostr event signed by npub â\x80\x94\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.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['npub', 'dpop_token'], 'properties': {'days': {'type': 'integer', 'default': 30, 'description': 'Number of days of daily usage history to include (default 30).'}, 'npub': {'type': 'string', 'description': 'The Nostr public key (npub1...) whose statement to render.'}, 'dpop_token': {'type': 'string', 'description': 'Raw JSON of a kind-27235 Nostr event signed by npub â\x80\x94\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.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['authority_npub'], 'properties': {'dpop_token': {'type': 'string', 'default': ''}, 'authority_npub': {'type': 'string'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['block'], 'properties': {'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key (npub1...) for credit billing.'}, 'block': {'type': 'string', 'description': 'The ground to answer for: a block you have saved â\x80\x94 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.'}, 'dpop_token': {'type': 'string', 'default': ''}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['block', 'kind'], 'properties': {'kind': {'type': 'string', 'description': 'One of: planting, pest, wildlife, observation, seed.'}, 'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key (npub1...) for credit billing.'}, 'page': {'type': 'integer', 'default': 0, 'description': 'Zero-based page number.'}, 'as_of': {'type': 'string', 'default': '', 'description': 'Read the record as it STOOD on this date (YYYY-MM-DD) â\x80\x94 what was live then, including anything you have retired since.'}, 'block': {'type': 'string', 'description': 'The ground to read â\x80\x94 its id, its name, or an alias.'}, 'since': {'type': 'string', 'default': '', 'description': 'Only observations on or after this date (YYYY-MM-DD).'}, 'until': {'type': 'string', 'default': '', 'description': 'Only observations on or before this date (YYYY-MM-DD).'}, 'search': {'type': 'string', 'default': '', 'description': "Case-insensitive regex over the name and the event, e.g. 'migration' finds both of a bird's. Empty matches everything."}, 'season': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Limit to one season year. Ignored for observations and seed lots.'}, 'sort_col': {'type': 'string', 'default': '', 'description': 'Order by one of: name, event, driver, starts_on, target_gdd, observed_on, season, created, updated. Omit for the default order â\x80\x94 sightings newest first, everything else by when it was added.'}, 'sort_dir': {'type': 'string', 'default': 'asc', 'description': "'asc' or 'desc'."}, 'page_size': {'type': 'integer', 'default': 50, 'description': 'Rows per page, up to 200.'}, 'dpop_token': {'type': 'string', 'default': ''}, 'include_retired': {'type': 'boolean', 'default': False, 'description': 'Include what you have retired.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['block', 'kind'], 'properties': {'kind': {'type': 'string', 'description': 'One of: planting, pest, wildlife, observation, seed.'}, 'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key (npub1...) for credit billing.'}, 'block': {'type': 'string', 'description': 'The ground this belongs to â\x80\x94 its id, its name, or an alias.'}, 'items': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'default': None, 'description': 'What to record, as a list. A planting is {crop, gdd_target, set_out}; a pest is a model as pest_threshold takes it; wildlife is an event as wildlife_calendar takes it; an observation is {observed_on, tag, note} plus whatever you saw; a seed lot is {crop, variety, days_to_maturity, germination_pct, tested_on, packed_for, quantity, unit, source, lot}, everything but crop optional. Pass item_id to amend something already recorded.'}, 'season': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': "The season year these belong to. Defaults to the year of each one's own date. Observations and seed lots belong to no season."}, 'dpop_token': {'type': 'string', 'default': ''}, 'retire_ids': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'default': None, 'description': 'Ids to retire. They stay readable as history; nothing is deleted.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key (npub1...) for credit billing.'}, 'dpop_token': {'type': 'string', 'default': ''}, 'include_retired': {'type': 'boolean', 'default': False, 'description': 'Include ground you have retired.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['name', 'geometry'], 'properties': {'name': {'type': 'string', 'description': "What you call this ground, e.g. 'North Field'. Unique among your blocks."}, 'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key (npub1...) for credit billing.'}, 'block': {'type': 'string', 'default': '', 'description': "Omit to create. Pass an existing block's id to update it."}, 'aliases': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'default': None, 'description': 'Other names you call it. Only needed for a name that shares no words with the saved one â\x80\x94 any unambiguous part of the name already works. Omit to keep the aliases it has; pass [] to clear them.'}, 'retired': {'type': 'boolean', 'default': False, 'description': 'True to retire it. Nothing is deleted â\x80\x94 its record stays readable.'}, 'geometry': {'type': 'object', 'description': 'Its bounds: a GeoJSON Polygon, or {lat, lon, radius_m}. It may overlap or sit inside another block â\x80\x94 a meadow within the farm around it is two blocks, each answered for its own ground.', 'additionalProperties': True}, 'base_temp': {'type': 'number', 'default': 50.0, 'description': "The base temperature this ground's growing degree days count from."}, 'dpop_token': {'type': 'string', 'default': ''}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['block'], 'properties': {'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key (npub1...) for credit billing.'}, 'block': {'type': 'string', 'description': 'The ground to answer for: a block you have saved â\x80\x94 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.'}, 'token': {'type': 'string', 'default': '', 'description': "Pass an existing feed's token to REFRESH it in place; omit to create one."}, 'season': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Which season to publish. Defaults to this one.'}, 'dpop_token': {'type': 'string', 'default': ''}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['token'], 'properties': {'token': {'type': 'string', 'description': 'The feed token from calendar_dataset.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key.'}, 'dpop_token': {'type': 'string', 'default': ''}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['token'], 'properties': {'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key.'}, 'token': {'type': 'string', 'description': 'The feed token to stop publishing.'}, 'dpop_token': {'type': 'string', 'default': ''}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['block'], 'properties': {'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key (npub1...) for credit billing.'}, 'block': {'type': 'string', 'description': 'The ground to answer for: a block you have saved â\x80\x94 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': None, 'description': "Which season's reports to calibrate against. Defaults to this one."}, 'base_temp': {'type': 'number', 'default': 50.0, 'description': 'Base temperature in °F the stage targets are counted at.'}, 'dpop_token': {'type': 'string', 'default': ''}, 'observations': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'default': None, '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.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['npub', 'dpop_token'], 'properties': {'npub': {'type': 'string', 'description': 'The Nostr public key (npub1...) whose balance to check.'}, 'dpop_token': {'type': 'string', 'description': 'Raw JSON of a kind-27235 Nostr event signed by npub â\x80\x94\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.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['invoice_id', 'npub', 'dpop_token'], 'properties': {'npub': {'type': 'string', 'description': 'The Nostr public key (npub1...) that purchased the invoice.'}, 'dpop_token': {'type': 'string', 'description': 'Raw JSON of a kind-27235 Nostr event signed by npub â\x80\x94\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.'}, 'invoice_id': {'type': 'string', 'description': 'The invoice ID returned by purchase_credits.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['tool_id'], 'properties': {'npub': {'type': 'string', 'default': ''}, 'tool_id': {'type': 'string', 'description': 'Either the tool\'s UUID (from the pricing model) or a\nbare capability string (e.g. ``"deal_scenario"``). FE\ncallers usually have the capability name; this resolves\nboth so the FE doesn\'t need to derive UUIDs locally.'}, 'dpop_token': {'type': 'string', 'default': ''}, 'tool_kwargs': {'type': 'string', 'default': '', 'description': 'Optional JSON object with tool call parameters\nfor ad valorem / categorical-multiplier pricing preview\n(e.g. \'{"amount_sats": 5000}\' or\n\'{"difficulty": "sovereign", "mode": "live"}\').'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {'dpop_token': {'type': 'string', 'default': '', 'description': 'Required. The grant envelope returned by\n``receive_npub_proof``.'}, 'patron_npub': {'type': 'string', 'default': '', 'description': "Required. The patron's npub (npub1...)."}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['block', 'plantings'], 'properties': {'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key (npub1...) for credit billing.'}, 'block': {'type': 'string', 'description': 'The ground to answer for: a block you have saved â\x80\x94 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.'}, 'base_temp': {'type': 'number', 'default': 50.0, 'description': 'Default base temperature in °F for plantings that do not set their own.'}, 'plantings': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'description': 'The block\'s plantings. Each is {"crop": "Lisianthus", "gdd_target": 1050, "set_out": "2026-07-06"} with an optional "base_temp" in °F when the crop counts from something other than the block default.'}, 'dpop_token': {'type': 'string', 'default': ''}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['block', 'crops'], 'properties': {'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key (npub1...) for credit billing.'}, 'block': {'type': 'string', 'description': 'The ground to answer for: a block you have saved â\x80\x94 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.'}, 'crops': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'description': 'The crops to judge, with your own requirements. Each is {"crop": "Field corn", "gdd_target": 2600, "base_temp": 50} with optional "frost_hardy", "category" and "emoji".'}, 'dpop_token': {'type': 'string', 'default': ''}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['coupon_id'], 'properties': {'coupon_id': {'type': 'string'}, 'dpop_token': {'type': 'string', 'default': ''}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['field', 'dpop_token'], 'properties': {'field': {'type': 'string', 'description': 'The operator credential field to remove (templated or not).'}, 'dpop_token': {'type': 'string', 'description': 'Operator proof for this tool.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['npub', 'dpop_token', 'field'], 'properties': {'npub': {'type': 'string', 'description': "The patron's Nostr public key (npub1...)."}, 'field': {'type': 'string', 'description': 'The credential field name to remove.'}, 'dpop_token': {'type': 'string', 'description': 'Raw JSON of a kind-27235 Nostr event signed by npub â\x80\x94\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.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['block'], 'properties': {'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key (npub1...) for credit billing.'}, 'block': {'type': 'string', 'description': 'The ground to answer for: a block you have saved â\x80\x94 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.'}, 'models': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'default': None, 'description': 'Which published models to run, as a list. Omit for all of them. Each row names one: {"model": "hutton"} for potato and tomato late blight, {"model": "botrytis"} for grey mould on cut flowers, and likewise "mills" (apple scab), "wallin" (early blight) and "powdery_mildew". Add "ref" to carry a saved row\'s id back on the answer. Do NOT invent a model name â\x80\x94 the five are the ones this service runs.'}, 'season': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'A past season year to count instead of this one. Omit for the season to date.'}, 'dpop_token': {'type': 'string', 'default': ''}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['block'], 'properties': {'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key (npub1...) for credit billing.'}, 'block': {'type': 'string', 'description': 'The ground to answer for: a block you have saved â\x80\x94 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.'}, 'dpop_token': {'type': 'string', 'default': ''}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['npub', 'coupon_id'], 'properties': {'npub': {'type': 'string'}, 'coupon_id': {'type': 'string'}, 'dpop_token': {'type': 'string', 'default': ''}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['service', 'npub', 'dpop_token'], 'properties': {'npub': {'type': 'string', 'description': 'The Nostr public key (npub1...) whose credentials to forget.'}, 'service': {'type': 'string', 'description': 'The credential service to forget.'}, 'dpop_token': {'type': 'string', 'description': 'Raw JSON of a kind-27235 Nostr event signed by npub â\x80\x94\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.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key (npub1...) â\x80\x94 whose ground to forget.'}, 'confirm': {'type': 'string', 'default': '', 'description': 'Must be exactly "FORGET MY GROUND". A phrase rather than a boolean, because this cannot be undone and confirm=true is what gets sent by reflex.'}, 'dpop_token': {'type': 'string', 'default': ''}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['block'], 'properties': {'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key (npub1...) for credit billing.'}, 'block': {'type': 'string', 'description': 'The ground to answer for: a block you have saved â\x80\x94 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.'}, 'dpop_token': {'type': 'string', 'default': ''}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['block'], 'properties': {'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key (npub1...) for credit billing.'}, 'block': {'type': 'string', 'description': 'The ground to answer for: a block you have saved â\x80\x94 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.'}, 'base_temp': {'type': 'number', 'default': 50.0, 'description': 'Crop base temperature in °F â\x80\x94 the threshold below which the crop does not accumulate heat. 50 °F is the field-corn convention; cool-season crops use 32-40 °F.'}, 'dpop_token': {'type': 'string', 'default': ''}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {'npub': {'type': 'string', 'default': ''}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['notarization_id', 'npub'], 'properties': {'npub': {'type': 'string', 'description': "The patron's Nostr public key (npub1...)."}, 'notarization_id': {'type': 'string', 'description': 'The notarization record ID.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['npub', 'dpop_token'], 'properties': {'npub': {'type': 'string', 'description': "The patron's Nostr public key (npub1...)."}, 'dpop_token': {'type': 'string', 'description': 'Raw JSON of a kind-27235 Nostr event signed by npub â\x80\x94\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.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['patron_npub', 'dpop_token'], 'properties': {'dpop_token': {'type': 'string', 'description': 'A kind-27235 Nostr event signed by patron_npub for this tool.'}, 'patron_npub': {'type': 'string', 'description': "The patron's Nostr public key (npub1...)."}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {'dpop_token': {'type': 'string', 'default': ''}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['npub'], 'properties': {'npub': {'type': 'string'}, 'dpop_token': {'type': 'string', 'default': ''}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'default': 20, 'description': 'Maximum records to return (default 20).'}, 'status': {'type': 'string', 'default': '', 'description': "Optional filter (e.g., 'submitted', 'confirmed')."}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['name', 'discount_percent', 'valid_from', 'valid_until'], 'properties': {'name': {'type': 'string', 'description': 'The catchy code patrons type to redeem\n(operator-scoped uniqueness).'}, 'dpop_token': {'type': 'string', 'default': ''}, 'total_uses': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Aggregate cap across all patrons (default None =\nunlimited).'}, 'valid_from': {'type': 'string', 'description': 'ISO-8601 datetime when the coupon becomes active.'}, 'valid_until': {'type': 'string', 'description': 'ISO-8601 datetime when the coupon expires.'}, 'uses_per_patron': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': 1, 'description': 'How many tool calls one patron can claim the\ndiscount on (default 1; pass null/None for unlimited\nwithin the window).'}, 'discount_percent': {'type': 'number', 'description': 'Percentage off the base price (0-100).'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['block', 'kingdom'], 'properties': {'q': {'type': 'string', 'default': '', 'description': "Narrow by name â\x80\x94 'bumble', 'maple', 'Bombus'. Empty returns the most-observed first."}, 'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key (npub1...) for credit billing.'}, 'page': {'type': 'integer', 'default': 1, 'description': 'Which page. 20 to a page.'}, 'block': {'type': 'string', 'description': 'The ground to answer for: a block you have saved â\x80\x94 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.'}, 'kingdom': {'type': 'string', 'description': "What to look for: 'plants', 'insects' (which includes spiders), 'wildlife' (birds, mammals, amphibians, reptiles) or 'fungi'."}, 'dpop_token': {'type': 'string', 'default': ''}, 'with_lifecycle': {'type': 'boolean', 'default': False, 'description': 'Only the ones USA-NPN publishes a life cycle for. The count then counts those, not everything recorded here â\x80\x94 thirty-nine of 2,416 insects around one block have one.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['npub'], 'properties': {'npub': {'type': 'string'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['block'], 'properties': {'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key (npub1...) for credit billing.'}, 'block': {'type': 'string', 'description': 'The ground to answer for: a block you have saved â\x80\x94 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.'}, 'dpop_token': {'type': 'string', 'default': ''}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['block', 'pests'], 'properties': {'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key (npub1...) for credit billing.'}, 'block': {'type': 'string', 'description': 'The ground to answer for: a block you have saved â\x80\x94 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.'}, 'pests': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'description': '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"} â\x80\x94 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} â\x80\x94 no stages, no dates.\nDo NOT invent degree-day figures to fill shape 1. Use 2 or 3.'}, 'dpop_token': {'type': 'string', 'default': ''}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key (npub1...) for credit billing.'}, 'dpop_token': {'type': 'string', 'default': ''}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['block', 'crops'], 'properties': {'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key (npub1...) for credit billing.'}, 'block': {'type': 'string', 'description': 'The ground to answer for: a block you have saved â\x80\x94 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.'}, 'crops': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'description': 'The crops to date, with your own requirements. Each is {"crop": "Tomato", "gdd_target": 1300, "base_temp": 50} plus any of "frost_hardy", "direct_sow", "min_soil_f" (germination soil temperature) and "start_indoors_weeks". Add "succession_days" (3â\x80\x9360) to get the succession schedule: a sowing every that many days from the first day out to the last that still finishes, each with its typical finish date, its margin before the median first frost, and whether it lands after the earliest frost on record.'}, 'dpop_token': {'type': 'string', 'default': ''}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {'npub': {'type': 'string', 'default': '', 'description': "The patron's Nostr public key the event must be signed by."}, 'signed_event': {'type': 'string', 'default': '', 'description': 'A JSON-encoded, client-signed kind-0 event.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['npub', 'dpop_token'], 'properties': {'npub': {'type': 'string', 'description': 'The Nostr public key (npub1...) the credits will fund.'}, 'dpop_token': {'type': 'string', 'description': 'Raw JSON of a kind-27235 Nostr event signed by npub â\x80\x94\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.'}, 'amount_sats': {'type': 'integer', 'default': 1000, 'description': 'Satoshis to purchase (default 1000).'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {'service': {'type': 'string', 'default': '', 'description': 'Required. The credential service name (must match\nthe service used in request_credential_channel).'}, 'dpop_token': {'type': 'string', 'default': '', 'description': 'Required. The session phrase returned by\nrequest_credential_channel for this exact channel.'}, 'sender_npub': {'type': 'string', 'default': '', 'description': 'Required. The npub that sent the credentials.'}, 'credential_card': {'type': 'string', 'default': '', 'description': 'Optional. An ncred1... card to redeem directly\n(bypasses the relay drain; dpop_token not needed).'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {'dpop_token': {'type': 'string', 'default': '', 'description': 'Required. The dpop_token returned by request_npub_proof.'}, 'patron_npub': {'type': 'string', 'default': '', 'description': "Required. The patron's npub to receive proof from."}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['npub', 'code'], 'properties': {'code': {'type': 'string'}, 'npub': {'type': 'string'}, 'dpop_token': {'type': 'string', 'default': ''}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['npub', 'dpop_token', 'title', 'body'], 'properties': {'body': {'type': 'string', 'description': 'The details â\x80\x94 which tool, what was wrong, what you expected.'}, 'npub': {'type': 'string', 'description': "Your Nostr public key (npub1...); the report's author of record."}, 'title': {'type': 'string', 'description': 'One-line summary of the problem.'}, 'tool_name': {'type': 'string', 'default': '', 'description': 'Optional: the specific tool the report is about\n(e.g. "schwab_get_option_chain").'}, 'dpop_token': {'type': 'string', 'description': 'Raw JSON of a kind-27235 Nostr event signed by npub â\x80\x94\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.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['authority_npub'], 'properties': {'note': {'type': 'string', 'default': '', 'description': 'optional message for the Authority owner.'}, 'dpop_token': {'type': 'string', 'default': '', 'description': 'operator-npub ownership proof (inline kind-27235 or cached token).'}, 'service_url': {'type': 'string', 'default': '', 'description': "this operator's MCP endpoint (advertised to the Authority)."}, 'authority_npub': {'type': 'string', 'description': 'npub of the Authority to request adoption from.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {'service': {'type': 'string', 'default': '', 'description': 'Required. The credential service name (e.g.,\nfrom get_operator_onboarding_status or get_patron_onboarding_status).'}, 'sender_npub': {'type': 'string', 'default': '', 'description': 'Required. The npub to send the template to.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {'reason': {'type': 'string', 'default': '', 'description': 'Optional. A human-readable purpose for the request\n("I\'m working on your request XYZ and need the Operator to do\nABC for you"). Signed into the provenance attestation and shown\nin the DM, so the recipient sees *why* they are being asked â\x80\x94\nespecially useful when the signer is unknown to them.'}, 'verify_at': {'type': 'string', 'default': '', 'description': 'Optional. A free-form statement of WHERE you (the\ninitiating agent) already showed this proof\'s one-time code to\nthe user â\x80\x94 a URL, or "your Claude.ai conversation", "the Grok\nsession". The OAuth 2.0 Device Grant ``verification_uri``,\ngeneralized: the user approves only if the code in the DM matches\nthe one you displayed there, so an unsolicited request they\'ve\nnever seen is refused. Signed into the attestation.'}, 'patron_npub': {'type': 'string', 'default': '', 'description': "Required. The patron's npub to request proof from."}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {'dpop_token': {'type': 'string', 'default': ''}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['invoice_id', 'patron_npub', 'dpop_token'], 'properties': {'dpop_token': {'type': 'string', 'description': "A kind-27235 Nostr event signed by the OPERATOR's nsec\nfor this tool. Patron proofs are rejected."}, 'invoice_id': {'type': 'string', 'description': 'The BTCPay invoice ID to verify and credit.'}, 'patron_npub': {'type': 'string', 'description': "The patron's npub whose ledger receives the grant."}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {'dpop_token': {'type': 'string', 'default': ''}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['block'], 'properties': {'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key (npub1...) for credit billing.'}, 'block': {'type': 'string', 'description': 'The ground to answer for: a block you have saved â\x80\x94 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.'}, 'pests': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'default': None, 'description': 'The pests being watched: [{"pest": "Codling moth"}, ...].'}, 'season': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': "Which season's roster to audit. Defaults to this one."}, 'wildlife': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'default': None, 'description': 'The creatures being tracked: [{"species": "American robin"}, ...].'}, 'dpop_token': {'type': 'string', 'default': ''}, 'observations': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'default': None, 'description': 'Field reports to sanity-check: [{"kind": "frost", "observed_on": "2026-07-04"}, {"kind": "pest", "species": "Walrus", "observed_on": "2026-06-03"}].'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {'patron_npub': {'type': 'string', 'default': '', 'description': "Optional. If supplied, the response includes an\n``upstream_oauth`` block with the patron's stored OAuth\ntoken expiry (runtime-derived from vault state) so a\nclient can refresh proactively rather than reactively\nafter a stale-token failure."}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['model_json'], 'properties': {'dpop_token': {'type': 'string', 'default': ''}, 'model_json': {'type': 'string'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['block'], 'properties': {'band': {'type': 'string', 'default': 'planting', 'description': "'planting' for 7-28 cm (~3-11 in, the default) or 'shallow' for 0-7 cm."}, 'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key (npub1...) for credit billing.'}, 'block': {'type': 'string', 'description': 'The ground to answer for: a block you have saved â\x80\x94 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.'}, 'direction': {'type': 'string', 'default': 'cooling', 'description': "'cooling' for an autumn window, 'warming' for a spring one."}, 'threshold': {'type': 'number', 'default': 60.0, 'description': 'The soil temperature in °F that opens or closes the window. Garlic goes in below about 60.'}, 'dpop_token': {'type': 'string', 'default': ''}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['task_id'], 'properties': {'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key (npub1...).'}, 'task_id': {'type': 'string', 'description': "The task's id."}, 'dpop_token': {'type': 'string', 'default': ''}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['region_id'], 'properties': {'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key (npub1...).'}, 'page': {'type': 'integer', 'default': 0, 'description': 'Zero-based page number.'}, 'search': {'type': 'string', 'default': '', 'description': 'Optional POSIX regular expression, matched against title and note.'}, 'sort_col': {'type': 'string', 'default': 'due', 'description': 'due, title, done, starts, created or updated.'}, 'sort_dir': {'type': 'string', 'default': 'asc', 'description': 'asc or desc.'}, 'page_size': {'type': 'integer', 'default': 20, 'description': 'Rows per page, capped at 200.'}, 'region_id': {'type': 'string', 'description': 'The saved region whose tasks to list.'}, 'timeframe': {'type': 'string', 'default': 'all', 'description': "day, week, month, season or all. 'season' means this farm's season."}, 'dpop_token': {'type': 'string', 'default': ''}, 'season_start': {'type': 'string', 'default': '', 'description': "Optional YYYY-MM-DD, so 'season' means the grower's season."}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['region_id', 'title'], 'properties': {'due': {'type': 'string', 'default': '', 'description': 'YYYY-MM-DD. The day it is for.'}, 'done': {'type': 'boolean', 'default': False}, 'note': {'type': 'string', 'default': '', 'description': 'Optional detail.'}, 'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key (npub1...).'}, 'title': {'type': 'string', 'description': 'What needs doing.'}, 'ends_at': {'type': 'string', 'default': '', 'description': 'Optional HH:MM on the due date.'}, 'task_id': {'type': 'string', 'default': '', 'description': 'Omit to create; pass an existing id to update.'}, 'region_id': {'type': 'string', 'description': 'The saved region this task belongs to.'}, 'starts_at': {'type': 'string', 'default': '', 'description': 'Optional HH:MM on the due date.'}, 'dpop_token': {'type': 'string', 'default': ''}, 'reminder_only': {'type': 'boolean', 'default': True, 'description': 'True publishes a reminder; false publishes an entry that takes the slot.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['task_id'], 'properties': {'done': {'type': 'boolean', 'default': True, 'description': 'True to tick it off.'}, 'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key (npub1...).'}, 'task_id': {'type': 'string', 'description': "The task's id."}, 'dpop_token': {'type': 'string', 'default': ''}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['block', 'trees'], 'properties': {'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key (npub1...) for credit billing.'}, 'block': {'type': 'string', 'description': 'The ground to answer for: a block you have saved â\x80\x94 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.'}, 'trees': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'description': 'The trees to judge, with the figures from their nursery tags. Each is {"tree": "Honeycrisp apple", "chill_hours": 800, "hardy_to_f": -30} with optional "category" and "emoji". Both figures are optional: a tree with neither is recorded and reported as unrated rather than refused.'}, 'dpop_token': {'type': 'string', 'default': ''}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['block'], 'properties': {'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key (npub1...) for credit billing.'}, 'block': {'type': 'string', 'description': 'The ground to answer for: a block you have saved â\x80\x94 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.'}, 'dpop_token': {'type': 'string', 'default': ''}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['coupon_id'], 'properties': {'name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'coupon_id': {'type': 'string'}, 'dpop_token': {'type': 'string', 'default': ''}, 'total_uses': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None}, 'valid_from': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'valid_until': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'uses_per_patron': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None}, 'clear_total_uses': {'type': 'boolean', 'default': False}, 'discount_percent': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'default': None}, 'clear_uses_per_patron': {'type': 'boolean', 'default': False}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['field', 'value', 'dpop_token'], 'properties': {'field': {'type': 'string', 'description': "The operator credential field to set. Must be declared\nin the operator's credential template."}, 'value': {'type': 'string', 'description': 'The value to store.'}, 'dpop_token': {'type': 'string', 'description': 'Operator proof for this tool.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['npub', 'dpop_token', 'field', 'value'], 'properties': {'npub': {'type': 'string', 'description': "The patron's Nostr public key (npub1...)."}, 'field': {'type': 'string', 'description': 'The credential field name to set.'}, 'value': {'type': 'string', 'description': 'The value to store.'}, 'dpop_token': {'type': 'string', 'description': 'Raw JSON of a kind-27235 Nostr event signed by npub â\x80\x94\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.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['block', 'events'], 'properties': {'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key (npub1...) for credit billing.'}, 'block': {'type': 'string', 'description': 'The ground to answer for: a block you have saved â\x80\x94 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.'}, 'events': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'description': 'The events to time, with your own thresholds. Heat-driven: {"species": "Woodchuck", "event": "emergence", "driver": "heat", "gdd": 120, "base_temp": 43}. Daylight-driven: {"species": "Robin", "event": "first arrival", "driver": "daylight", "daylight_hours": 11.5, "rising": true}. From your own record: {"species": "Grey squirrel", "event": "nut caching", "driver": "calendar", "typical_on": "09-15"}. All accept an optional emoji and note.'}, 'dpop_token': {'type': 'string', 'default': ''}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['block'], 'properties': {'npub': {'type': 'string', 'default': '', 'description': 'Required. Your Nostr public key (npub1...) for credit billing.'}, 'block': {'type': 'string', 'description': 'The ground to answer for: a block you have saved â\x80\x94 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.'}, 'species': {'type': 'string', 'default': '', 'description': "Optional. A scientific name from a previous catalogue answer, e.g. 'Strix varia'. Given one, this returns that animal's life-cycle phenophases instead of the regional list."}, 'dpop_token': {'type': 'string', 'default': ''}, 'with_events': {'type': 'boolean', 'default': False, 'description': "Include each species' known phenophases as `habit_events`, so a roster can be written from the published vocabulary rather than from memory. Costs one upstream call per species."}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
近期工具变更
类似的 MCP 服务器
Clink Forge
Provides pay-per-call access to attested government datasets, primarily CDC and HHS health data plus EPA air-quality observations.
workbench
Provides computational molecular biology tools for DNA, RNA, and protein analysis, cloning, PCR, CRISPR, oligonucleotide design, …
gisgp
Provides GIS geocoding, routing, spatial transformations, ArcGIS layer inspection and export, and location due diligence for haza…
calc.engineer
Provides deterministic engineering calculators for RF and LoRa systems, electronics, batteries, solar and power systems, cooling,…
osint
Provides source-cited US data and schemas for power systems, AI infrastructure, semiconductor production and trade, robotics, and…
EngScript Engineering MCP
Performs engineering calculations for oil and gas applications, including thermodynamics, fluid systems, equipment sizing, balanc…
civilquants
Calculates parametric civil-engineering quantities and Bills of Quantities for drainage, earthworks, retaining walls, pavements, …
brainkb
Manages and queries neuroscience knowledge graphs, including RDF ingestion, named graphs, jobs, spaces, memberships, roles, and a…