Skip to main content

Data Agent Example

An agent that stores and retrieves structured data.

Code

from sypho_sdk import entrypoint, tool, AgentContext

@tool
async def save_user(context: AgentContext, name: str, email: str):
"""Save a user record"""
user_id = name.lower().replace(" ", "_")

await context.call_tool("structured_data_save", {
"namespace": "users",
"key": f"user:{user_id}",
"data": {
"name": name,
"email": email
},
"metadata": {
"type": "user",
"created_by": "agent"
}
})

return {"status": "saved", "user_id": user_id}

@tool
async def get_user(context: AgentContext, user_id: str):
"""Get a user record"""
result = await context.call_tool("structured_data_get", {
"namespace": "users",
"key": f"user:{user_id}"
})
return result

@tool
async def list_users(context: AgentContext):
"""List all users"""
results = await context.call_tool("structured_data_query", {
"namespace": "users",
"filters": {"metadata.type": "user"}
})
return results

@entrypoint
async def main(input: dict, context: AgentContext):
"""
You are a user data management agent.

You can:
- Save user records (name, email)
- Retrieve user data by ID
- List all users

Always confirm actions and provide clear feedback.
"""
pass

Usage Examples

Save a User

sypho run data-agent:0.1.0 \
--input '{"message": "Save user Alice with email alice@example.com"}'

LLM calls:

save_user(name="Alice", email="alice@example.com")

Get a User

sypho run data-agent:0.1.0 \
--input '{"message": "Get user alice"}'

LLM calls:

get_user(user_id="alice")

List Users

sypho run data-agent:0.1.0 \
--input '{"message": "List all users"}'

LLM calls:

list_users()

Knowledge Scope

The agent needs access to the users namespace. Set in run request:

{
"agent_name": "data-agent",
"version": "0.1.0",
"knowledge_scope": {
"structured_data_namespaces": {
"users": {
"keys": ["*"],
"permission": "read_write"
}
}
}
}

Next Steps