> ## Documentation Index
> Fetch the complete documentation index at: https://praison.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Tool Definitions • AI Agent SDK

> get_tool_definitions: Get OpenAI-compatible tool definitions with dynamic schema overrides applied.

# get\_tool\_definitions

<div className="flex items-center gap-2">
  <Badge color="purple">Method</Badge>
</div>

> This is a method of the [**ToolRegistry**](../classes/ToolRegistry) class in the [**registry**](../modules/registry) module.

Get OpenAI-compatible tool definitions with dynamic schema overrides applied.

This is the main entry point for getting tool schemas that respects
dynamic overrides. Called every time tools need to be passed to the LLM.

```mermaid theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#8B0000', 'primaryTextColor': '#fff', 'primaryBorderColor': '#710101', 'lineColor': '#189AB4', 'secondaryColor': '#189AB4', 'tertiaryColor': '#fff' }}}%%

graph LR
    agent["Agent"] -- "uses" --> tool["Tool: get_tool_definitions"]
    tool -- "returns" --> result["Result"]
    style tool fill:#189AB4,color:#fff
    style agent fill:#8B0000,color:#fff
    style result fill:#8B0000,color:#fff
```

## Signature

```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
def get_tool_definitions(permission_resolver: Optional[Callable[[str], bool]]) -> List[Dict[str, Any]]
```

## Parameters

<ParamField query="permission_resolver" type="Optional" required={false}>
  Optional callable `(tool_name) -&gt; bool` that returns `False` when a tool is denied for the current agent/session. Denied tools are dropped from the advertised schema, mirroring the existing `check_availability()` filter (deny = hide). `None` (default) advertises every available tool, preserving backward compatibility.
</ParamField>

### Returns

<ResponseField name="Returns" type="List[Dict[str, Any]]">
  List of OpenAI-compatible tool definition dictionaries
</ResponseField>

## Uses

* `check_availability`
* `logging.debug`
* `logging.warning`
* `permission_resolver`
* `logging.error`

## Used By

* [`get_tool_definitions`](../functions/get_tool_definitions)

## Source

<Card title="View on GitHub" icon="github" href="https://github.com/MervinPraison/PraisonAI/blob/main/src/praisonai-agents/praisonaiagents/tools/registry.py#L247">
  `praisonaiagents/tools/registry.py` at line 247
</Card>

***

## Related Documentation

<CardGroup cols={2}>
  <Card title="Tools Concept" icon="wrench" href="/docs/docs/concepts/tools" />

  <Card title="Create Custom Tools" icon="plus" href="/docs/docs/guides/tools/create-custom-tools" />

  <Card title="Tool Development" icon="code" href="/docs/docs/tutorials/advanced-tool-development" />
</CardGroup>
