{
  "$ref": "#/definitions/Config",
  "definitions": {
    "Config": {
      "type": "object",
      "properties": {
        "default_model": {
          "type": "string"
        },
        "openai_api_key": {
          "type": "string",
          "description": "Default to the \"OPENAI_API_KEY\" environment variable"
        },
        "openai_api_url": {
          "type": "string",
          "description": "Default to the \"OPENAI_API_URL\" environment variable"
        },
        "anthropic_api_key": {
          "type": "string",
          "description": "Default to the \"ANTHROPIC_API_KEY\" environment variable"
        },
        "gemini_api_key": {
          "type": "string",
          "description": "Default to the \"GEMINI_API_KEY\" environment variable"
        },
        "gemini_api_url": {
          "type": "string",
          "description": "Default to the \"GEMINI_API_URL\" environment variable"
        },
        "groq_api_key": {
          "type": "string",
          "description": "Default to the \"GROQ_API_KEY\" environment variable"
        },
        "groq_api_url": {
          "type": "string",
          "description": "Default to the \"GROQ_API_URL\" environment variable"
        },
        "mistral_api_key": {
          "type": "string",
          "description": "Default to the \"MISTRAL_API_KEY\" environment variable"
        },
        "mistral_api_url": {
          "type": "string",
          "description": "Default to the \"MISTRAL_API_URL\" environment variable"
        },
        "etherscan_api_key": {
          "type": "string",
          "description": "Default to the \"ETHERSCAN_API_KEY\" environment variable"
        },
        "ollama_host": {
          "type": "string",
          "description": "Default to the \"OLLAMA_HOST\" environment variable"
        },
        "commands": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "command": {
                "type": "string",
                "description": "the cli command"
              },
              "example": {
                "type": "string",
                "description": "example to show in cli help"
              },
              "description": {
                "type": "string",
                "description": "description to show in cli help"
              },
              "variables": {
                "type": "object",
                "additionalProperties": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "a shell command to run"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "const": "input"
                        },
                        "message": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "type",
                        "message"
                      ],
                      "additionalProperties": false,
                      "description": "get text input from the user"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "const": "select"
                        },
                        "message": {
                          "type": "string"
                        },
                        "choices": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "value": {
                                "type": "string"
                              },
                              "title": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "value",
                              "title"
                            ],
                            "additionalProperties": false
                          }
                        }
                      },
                      "required": [
                        "type",
                        "message",
                        "choices"
                      ],
                      "additionalProperties": false,
                      "description": "get a choice from the user"
                    }
                  ]
                }
              },
              "prompt": {
                "type": "string",
                "description": "the prompt to send to the model"
              },
              "require_stdin": {
                "type": "boolean",
                "description": "Require piping output from another program to Web3CLI"
              }
            },
            "required": [
              "command",
              "prompt"
            ],
            "additionalProperties": false
          }
        }
      },
      "additionalProperties": false
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}