A human-readable description of what the tool does. Surfaced to the model so it can decide when to call the tool.
The tool's name, used to match provider tool-call frames back to MJ tool execution.
A JSON-schema object describing the tool's parameters. Drivers translate this into the provider's native function-parameter schema.
Minimal, Core-level definition of a tool exposed to a realtime model.
This type lives in the lowest AI layer and is intentionally provider- and agent-agnostic. The agent layer maps its richer tool metadata down to this type before registering tools, and each concrete driver maps this type up to the provider's native function-calling schema. Keeping the Core type minimal avoids an illegal upward dependency from Core onto the agent packages.