{
  "$schema": "https://organicgardeningcollective.com/.well-known/ai-tools.json",
  "name": "Organic Gardening Collective — Agent Tools",
  "description": "Paid, agent-callable tools served from a curated organic-gardening corpus. Built for AI agents and assistants that need accurate, citable plant-care content and diagnosis. Pay per call with a simple API key; HTTP 402 is returned when a key has no credit.",
  "provider": {
    "name": "Organic Gardening Collective",
    "url": "https://organicgardeningcollective.com/",
    "publisher": "Flow Solutions Group"
  },
  "docs": "https://organicgardeningcollective.com/agents.html",
  "terms": "https://organicgardeningcollective.com/api-terms.html",
  "contact": "agents@organicgardeningcollective.com",
  "authentication": {
    "type": "apiKey",
    "in": "header",
    "name": "x-api-key",
    "how_to_obtain": "https://organicgardeningcollective.com/agents.html"
  },
  "payment": {
    "model": "per_call",
    "currency": "USD",
    "methods": [
      {
        "type": "api_key_credits",
        "how": "Pre-fund credits; send x-api-key. Out of credit -> HTTP 402."
      },
      {
        "type": "lightning_l402",
        "how": "Pay per call in BTC over Lightning (L402). No credentials -> HTTP 402 with a Lightning invoice; pay, then retry with Authorization: L402 <payment_hash>:<preimage>.",
        "status": "available when configured"
      }
    ],
    "out_of_credit_status": 402,
    "refunds": "none",
    "final": true,
    "terms": "All payments are final and non-refundable. Delivered calls cannot be reversed, refunded, or charged back. Lightning settlements are irreversible; prepaid credits are non-redeemable. See https://organicgardeningcollective.com/api-terms.html",
    "how_to_pay": "https://organicgardeningcollective.com/agents.html",
    "credit_unit_usd": 0.001,
    "notes": "Credits are cost-weighted: 1 credit = $0.001 USD, so each tool costs (price / $0.001) credits per call (e.g. a $0.02 tool = 20 credits). Lightning charges the exact per-call USD price."
  },
  "license": "Tool outputs may be used in AI answers on the condition that you attribute 'Organic Gardening Collective' and link to each result's source_url.",
  "tools": [
    {
      "name": "garden_answer",
      "status": "live",
      "summary": "Curated, citable organic-gardening answers to a natural-language question.",
      "description": "Returns human-written, on-brand answers from our knowledge base of common beginner gardening problems (pests, watering, compost, seed-starting, soil, seasonal care). Every answer includes a source_url for attribution. No model hallucination — content is curated by the Collective.",
      "price": {
        "amount": 0.006,
        "currency": "USD",
        "unit": "call"
      },
      "method": "POST",
      "endpoint": "https://xyprjneejchdksjtdxko.supabase.co/functions/v1/garden-answer",
      "input_schema": {
        "type": "object",
        "required": [
          "question"
        ],
        "properties": {
          "question": {
            "type": "string",
            "description": "The gardener's question, plain English.",
            "maxLength": 400
          },
          "max_results": {
            "type": "integer",
            "minimum": 1,
            "maximum": 5,
            "default": 3
          }
        }
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "question": {
            "type": "string"
          },
          "matched": {
            "type": "boolean"
          },
          "answers": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "topic": {
                  "type": "string"
                },
                "answer": {
                  "type": "string"
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "ok",
                    "warn",
                    "bad",
                    "none"
                  ]
                },
                "source_url": {
                  "type": "string",
                  "format": "uri"
                },
                "confidence": {
                  "type": "number"
                }
              }
            }
          },
          "credits_remaining": {
            "type": [
              "integer",
              "null"
            ]
          },
          "license": {
            "type": "string"
          },
          "attribution": {
            "type": "string"
          },
          "disclaimer": {
            "type": "string"
          }
        }
      },
      "example_request": {
        "headers": {
          "x-api-key": "YOUR_KEY",
          "content-type": "application/json"
        },
        "body": {
          "question": "white powder on my squash leaves",
          "max_results": 2
        }
      }
    },
    {
      "name": "plant_checkup",
      "status": "live",
      "summary": "Vision health check-up for a single plant photo, returned as structured organic care advice.",
      "description": "Send an image (https URL or base64) plus optional context; get back {status, summary, tasks} — a plain-English organic assessment and a short to-do list. Same engine as the Tended app.",
      "price": {
        "amount": 0.02,
        "currency": "USD",
        "unit": "call"
      },
      "method": "POST",
      "endpoint": "https://xyprjneejchdksjtdxko.supabase.co/functions/v1/agent-checkup",
      "input_schema": {
        "type": "object",
        "properties": {
          "imageUrl": {
            "type": "string",
            "format": "uri",
            "description": "https URL of the plant photo."
          },
          "imageBase64": {
            "type": "string",
            "description": "Base64 image data (alternative to imageUrl)."
          },
          "mediaType": {
            "type": "string",
            "default": "image/jpeg"
          },
          "plantName": {
            "type": "string"
          },
          "plantType": {
            "type": "string"
          },
          "location": {
            "type": "string",
            "description": "e.g. 'USDA zone 6b, balcony, partial sun'."
          }
        },
        "oneOf": [
          {
            "required": [
              "imageUrl"
            ]
          },
          {
            "required": [
              "imageBase64"
            ]
          }
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "ok",
              "warn",
              "bad"
            ]
          },
          "summary": {
            "type": "string"
          },
          "tasks": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "credits_remaining": {
            "type": [
              "integer",
              "null"
            ]
          },
          "attribution": {
            "type": "string"
          },
          "disclaimer": {
            "type": "string"
          }
        }
      }
    },
    {
      "name": "vision_extract",
      "status": "live",
      "summary": "Generic image analysis for agents: describe, OCR, tags, or moderate.",
      "description": "Domain-agnostic vision tool. POST an image (https URL or base64) + a mode (describe|ocr|tags|moderate) or a custom instruction; get structured JSON back. Same hardened metering/SSRF plumbing as the other tools.",
      "price": {
        "amount": 0.008,
        "currency": "USD",
        "unit": "call"
      },
      "method": "POST",
      "endpoint": "https://xyprjneejchdksjtdxko.supabase.co/functions/v1/vision-extract",
      "input_schema": {
        "type": "object",
        "properties": {
          "imageUrl": {
            "type": "string",
            "format": "uri"
          },
          "imageBase64": {
            "type": "string"
          },
          "mode": {
            "type": "string",
            "enum": [
              "describe",
              "ocr",
              "tags",
              "moderate"
            ],
            "default": "describe"
          },
          "instruction": {
            "type": "string",
            "description": "Optional custom instruction (overrides mode).",
            "maxLength": 300
          }
        },
        "oneOf": [
          {
            "required": [
              "imageUrl"
            ]
          },
          {
            "required": [
              "imageBase64"
            ]
          }
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "mode": {
            "type": "string"
          },
          "result": {
            "description": "string | array | object depending on mode"
          },
          "credits_remaining": {
            "type": [
              "integer",
              "null"
            ]
          },
          "attribution": {
            "type": "string"
          },
          "disclaimer": {
            "type": "string"
          }
        }
      }
    },
    {
      "name": "vehicle_recalls",
      "status": "live",
      "summary": "Official NHTSA safety recalls for a vehicle (by VIN or make/model/year).",
      "description": "Auto-domain tool. POST a 17-char VIN (decoded via NHTSA vPIC) or make+model+year; get structured open-recall records (campaign, component, summary, consequence, remedy). Free public data, surfaced clean + metered.",
      "price": {
        "amount": 0.005,
        "currency": "USD",
        "unit": "call"
      },
      "method": "POST",
      "endpoint": "https://xyprjneejchdksjtdxko.supabase.co/functions/v1/vehicle-recalls",
      "input_schema": {
        "type": "object",
        "properties": {
          "vin": {
            "type": "string",
            "description": "17-char VIN (decoded automatically)."
          },
          "make": {
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "year": {
            "type": "string"
          }
        },
        "oneOf": [
          {
            "required": [
              "vin"
            ]
          },
          {
            "required": [
              "make",
              "model",
              "year"
            ]
          }
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "vehicle": {
            "type": "object"
          },
          "recall_count": {
            "type": "integer"
          },
          "recalls": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "source": {
            "type": "string"
          },
          "credits_remaining": {
            "type": [
              "integer",
              "null"
            ]
          },
          "attribution": {
            "type": "string"
          },
          "disclaimer": {
            "type": "string"
          }
        }
      }
    },
    {
      "name": "vin_decode",
      "status": "live",
      "summary": "Decode a VIN to vehicle specs (NHTSA vPIC, free data).",
      "description": "POST a VIN; get make/model/year/trim/body/engine/drive/plant. Pure passthrough, no AI cost.",
      "price": {
        "amount": 0.003,
        "currency": "USD",
        "unit": "call"
      },
      "method": "POST",
      "endpoint": "https://xyprjneejchdksjtdxko.supabase.co/functions/v1/vin-decode",
      "input_schema": {
        "type": "object",
        "required": [
          "vin"
        ],
        "properties": {
          "vin": {
            "type": "string"
          }
        }
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "vin": {
            "type": "string"
          },
          "make": {
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "year": {
            "type": "string"
          },
          "engine": {
            "type": "object"
          },
          "credits_remaining": {
            "type": [
              "integer",
              "null"
            ]
          }
        }
      }
    },
    {
      "name": "osha_lookup",
      "status": "beta",
      "summary": "Search OSHA standards in CFR Title 29 (eCFR free API) → citable results.",
      "description": "POST a query; get citation + heading + excerpt + ecfr.gov link from public-domain CFR Title 29. Cite-and-verify, not legal advice. (eCFR field mapping to be smoke-tested on deploy.)",
      "price": {
        "amount": 0.01,
        "currency": "USD",
        "unit": "call"
      },
      "method": "POST",
      "endpoint": "https://xyprjneejchdksjtdxko.supabase.co/functions/v1/osha-lookup",
      "input_schema": {
        "type": "object",
        "required": [
          "query"
        ],
        "properties": {
          "query": {
            "type": "string",
            "maxLength": 200
          },
          "max_results": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10,
            "default": 5
          }
        }
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string"
          },
          "result_count": {
            "type": "integer"
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "credits_remaining": {
            "type": [
              "integer",
              "null"
            ]
          },
          "disclaimer": {
            "type": "string"
          }
        }
      }
    },
    {
      "name": "hs_lookup",
      "status": "beta",
      "summary": "Citable Harmonized Tariff Schedule (HTS) lookup by keyword (USITC public data).",
      "description": "POST a product description; get official HTS codes + descriptions + duty rates from the USITC HTS. A lookup over authoritative public data, not an AI classification guess. Advisory only — importer of record is responsible. (USITC field mapping to smoke-test on deploy.)",
      "price": {
        "amount": 0.01,
        "currency": "USD",
        "unit": "call"
      },
      "method": "POST",
      "endpoint": "https://xyprjneejchdksjtdxko.supabase.co/functions/v1/hs-lookup",
      "input_schema": {
        "type": "object",
        "required": [
          "query"
        ],
        "properties": {
          "query": {
            "type": "string",
            "maxLength": 200
          },
          "max_results": {
            "type": "integer",
            "minimum": 1,
            "maximum": 15,
            "default": 5
          }
        }
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string"
          },
          "result_count": {
            "type": "integer"
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "source_url": {
            "type": "string"
          },
          "credits_remaining": {
            "type": [
              "integer",
              "null"
            ]
          },
          "disclaimer": {
            "type": "string"
          }
        }
      }
    },
    {
      "name": "seasonal_tasks",
      "status": "roadmap",
      "summary": "What to do in the garden this month by USDA zone.",
      "description": "Planned: structured month + zone → prioritized organic task list. Want it sooner? Contact agents@organicgardeningcollective.com."
    }
  ],
  "datasets": [
    {
      "name": "garden_knowledge_pack",
      "status": "live",
      "summary": "Licensable JSONL dataset of curated, citable organic-gardening problem→answer entries for embedding/RAG.",
      "description": "The content sold in bulk — an alternative to per-call garden_answer. Each record has source_url for attribution. Commercial use requires a license; pricing is per buyer size.",
      "format": "application/jsonl",
      "sample": "https://organicgardeningcollective.com/datasets/garden-knowledge-pack.sample.jsonl",
      "license_terms": "Attribute 'Organic Gardening Collective' and retain each record's source_url. Commercial license required.",
      "pricing": [
        {
          "audience": "startup",
          "price": 2000,
          "currency": "USD",
          "unit": "year"
        },
        {
          "audience": "enterprise",
          "price": 18000,
          "currency": "USD",
          "unit": "year"
        },
        {
          "audience": "whole-corpus content license",
          "price": 60000,
          "currency": "USD",
          "unit": "year"
        }
      ],
      "how_to_license": "https://organicgardeningcollective.com/pilot.html"
    }
  ]
}
