***

title: set_metadata
slug: /reference/python/agents/function-result/set-metadata
description: Set function-scoped metadata on a FunctionResult.
max-toc-depth: 3
---------------------

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

[functionresult]: /docs/server-sdks/reference/python/agents/function-result

Set function-scoped metadata. Metadata is scoped to the current function's
`meta_data_token`, so each function maintains its own independent metadata
store.

## **Parameters**

<ParamField path="data" type="dict[str, Any]" required={true} toc={true}>
  Dictionary of key-value pairs to store as metadata.
</ParamField>

## **Returns**

[`FunctionResult`][functionresult] — self, for chaining.

## **Example**

```python {11}
from signalwire import AgentBase
from signalwire import FunctionResult

agent = AgentBase(name="my-agent", route="/agent")
agent.set_prompt_text("You are a helpful assistant.")

@agent.tool(name="track_usage", description="Track user activity")
def track_usage(args, raw_data):
    return (
        FunctionResult("Usage tracked.")
        .set_metadata({
            "last_action": "search",
            "timestamp": "2024-01-15T10:30:00Z",
            "user_id": args.get("user_id")
        })
    )

agent.serve()
```