***

title: get_parameter_schema
slug: /reference/python/agents/skill-base/get-parameter-schema
description: Return metadata about all parameters the skill accepts.
max-toc-depth: 3
---------------------

For a complete index of all SignalWire documentation pages, fetch https://signalwire.com/docs/llms.txt

Class method that returns metadata about all parameters the skill accepts.
Subclasses should call `super().get_parameter_schema()` and merge their own
parameters.

## **Returns**

`dict[str, dict[str, Any]]` -- Parameter schema where keys are parameter names
and values describe the parameter.

**Built-in parameters:**

| Parameter      | Type   | Default      | Description                                                |
| -------------- | ------ | ------------ | ---------------------------------------------------------- |
| `swaig_fields` | object | `{}`         | Additional SWAIG metadata merged into tool definitions     |
| `skip_prompt`  | bool   | `False`      | Suppress default prompt section injection                  |
| `tool_name`    | str    | `SKILL_NAME` | Custom name for this instance (multi-instance skills only) |

**Schema value fields:**

| Field         | Type   | Description                                                             |
| ------------- | ------ | ----------------------------------------------------------------------- |
| `type`        | str    | `"string"`, `"integer"`, `"number"`, `"boolean"`, `"object"`, `"array"` |
| `description` | str    | Human-readable description                                              |
| `default`     | Any    | Default value                                                           |
| `required`    | bool   | Whether the parameter is required                                       |
| `hidden`      | bool   | Hide in UIs (for secrets like API keys)                                 |
| `env_var`     | str    | Environment variable that can provide this value                        |
| `enum`        | list   | Allowed values                                                          |
| `min` / `max` | number | Bounds for numeric types                                                |

## **Example**

```python {8-9,34}
from signalwire.core.skill_base import SkillBase

class WeatherSkill(SkillBase):
    SKILL_NAME = "weather"
    SKILL_DESCRIPTION = "Provides weather information"

    @classmethod
    def get_parameter_schema(cls):
        schema = super().get_parameter_schema()
        schema.update({
            "units": {
                "type": "string",
                "description": "Temperature units",
                "default": "fahrenheit",
                "enum": ["fahrenheit", "celsius"]
            },
            "api_key": {
                "type": "string",
                "description": "Weather API key",
                "required": True,
                "hidden": True,
                "env_var": "WEATHER_API_KEY"
            }
        })
        return schema

    def setup(self) -> bool:
        return True

    def register_tools(self):
        pass

# Inspect the schema
print(WeatherSkill.get_parameter_schema())
# {'swaig_fields': {...}, 'skip_prompt': {...}, 'units': {...}, 'api_key': {...}}
```