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

# getParameterSchema

> Return metadata about all parameters the skill accepts.

Static class method that returns metadata about all parameters the skill accepts.
Subclasses should override this method and merge their own parameters with the
result of `super.getParameterSchema()`.

Takes no parameters.

## **Returns**

`Record<string, ParameterSchemaEntry>` -- Parameter schema where keys are parameter names
and values describe the parameter.

**ParameterSchemaEntry fields:**

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

## **Example**

```typescript {7}
import { SkillBase, type SkillToolDefinition, type ParameterSchemaEntry } from '@signalwire/sdk';

class WeatherSkill extends SkillBase {
  static override SKILL_NAME = 'weather';
  static override SKILL_DESCRIPTION = 'Provides weather information';

  static override getParameterSchema(): Record<string, ParameterSchemaEntry> {
    return {
      ...super.getParameterSchema(),
      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',
      },
    };
  }

  override getTools(): SkillToolDefinition[] {
    return [];
  }
}

// Inspect the schema (includes base params swaig_fields, skip_prompt)
console.log(WeatherSkill.getParameterSchema());
// { swaig_fields: { ... }, skip_prompt: { ... }, units: { ... }, api_key: { ... } }
```