Has any one ever used Strands – the AI Agent SDK by AWS

donbox1 pts0 comments

Strands Agents — Open Source AI Agent SDK for Python & TypeScriptPythonTypeScriptStrands Harness<br>PYPython SDK↗TSTypeScript SDK↗<br>Strands<br>EVEvals↗SHShell↗<br>Organizations<br>strands-agents↗strands-labs↗

Select themeDarkLightAuto

The open source toolkit for buildingproduction agents.<br>Get StartedGitHub<br>pip install strands-agents<br>npm install @strands-agents/sdk

6,900+ GitHub stars · Built from production systems inside Amazon

For humansFor agents<br>str:<br>"""Save a research report to disk."""<br>path = f"reports/{title}.md"<br>Path(path).write_text(content)<br>return f"Saved {path}"

def require_sources(event: BeforeToolCallEvent):<br>name = event.tool_use["name"]<br>inp = str(event.tool_use["input"])<br>if name == "save_report" and "[source]" not in inp:<br>event.cancel_tool = "Add source citations."

agent = Agent(<br>tools=[save_report],<br>hooks=[require_sources],<br>agent("Research AI agent frameworks")">research_agent.py<br>from strands import Agent, tool<br>from strands.hooks import BeforeToolCallEvent<br>from pathlib import Path

@tool<br>def save_report(title: str, content: str) -> str:<br>"""Save a research report to disk."""<br>path = f"reports/{title}.md"<br>Path(path).write_text(content)<br>return f"Saved {path}"

def require_sources(event: BeforeToolCallEvent):<br>name = event.tool_use["name"]<br>inp = str(event.tool_use["input"])<br>if name == "save_report" and "[source]" not in inp:<br>event.cancel_tool = "Add source citations."

agent = Agent(<br>tools=[save_report],<br>hooks=[require_sources],<br>agent("Research AI agent frameworks")<br>from strands import Agent, tool<br>from strands.hooks import BeforeToolCallEvent<br>from pathlib import Path

@tool<br>def save_report(title: str, content: str) -> str:<br>"""Save a research report to disk."""<br>path = f"reports/{title}.md"<br>Path(path).write_text(content)<br>return f"Saved {path}"

def require_sources(event: BeforeToolCallEvent):<br>name = event.tool_use["name"]<br>inp = str(event.tool_use["input"])<br>if name == "save_report" and "[source]" not in inp:<br>event.cancel_tool = "Add source citations."

agent = Agent(<br>tools=[save_report],<br>hooks=[require_sources],<br>agent("Research AI agent frameworks")

writeFileSync(`reports/${title}.md`, content)<br>return `Saved ${title}.md`<br>},<br>})

const agent = new Agent({ tools: [saveReport] })

agent.addHook(BeforeToolCallEvent, (event) => {<br>const inp = String(event.toolUse.input)<br>if (event.toolUse.name === 'save_report') {<br>if (!inp.includes('[source]')) {<br>event.cancel = 'Add source citations.'<br>})

await agent.invoke('Research AI agent frameworks')">research_agent.ts<br>import {<br>Agent, tool, BeforeToolCallEvent<br>} from '@strands-agents/sdk'<br>import z from 'zod'<br>import { writeFileSync } from 'fs'

const saveReport = tool({<br>name: 'save_report',<br>description: 'Save a research report.',<br>inputSchema: z.object({<br>title: z.string(),<br>content: z.string(),<br>}),<br>callback: ({ title, content }) => {<br>writeFileSync(`reports/${title}.md`, content)<br>return `Saved ${title}.md`<br>},<br>})

const agent = new Agent({ tools: [saveReport] })

agent.addHook(BeforeToolCallEvent, (event) => {<br>const inp = String(event.toolUse.input)<br>if (event.toolUse.name === 'save_report') {<br>if (!inp.includes('[source]')) {<br>event.cancel = 'Add source citations.'<br>})

await agent.invoke('Research AI agent frameworks')<br>import {<br>Agent, tool, BeforeToolCallEvent<br>} from '@strands-agents/sdk'<br>import z from 'zod'<br>import { writeFileSync } from 'fs'

const saveReport = tool({<br>name: 'save_report',<br>description: 'Save a research report.',<br>inputSchema: z.object({<br>title: z.string(),<br>content: z.string(),<br>}),<br>callback: ({ title, content }) => {<br>writeFileSync(`reports/${title}.md`, content)<br>return `Saved ${title}.md`<br>},<br>})

const agent = new Agent({ tools: [saveReport] })

agent.addHook(BeforeToolCallEvent, (event) => {<br>const inp = String(event.toolUse.input)<br>if (event.toolUse.name === 'save_report') {<br>if (!inp.includes('[source]')) {<br>event.cancel = 'Add source citations.'<br>})

await agent.invoke('Research AI agent frameworks')

Set up with your coding agent<br>Claude CodeCursorKiroVS Code<br>Other<br>Run in your terminal:<br>claude mcp add strands uvx strands-agents-mcp-server<br>claude mcp add strands uvx strands-agents-mcp-server

Add to ~/.cursor/mcp.json:<br>"mcpServers": {<br>"strands-agents": {<br>"command": "uvx",<br>"args": ["strands-agents-mcp-server"]<br>"mcpServers": {<br>"strands-agents": {<br>"command": "uvx",<br>"args": ["strands-agents-mcp-server"]

Add to ~/.kiro/settings/mcp.json:<br>"mcpServers": {<br>"strands-agents": {<br>"command": "uvx",<br>"args": ["strands-agents-mcp-server"],<br>"disabled": false,<br>"autoApprove": ["search_docs", "fetch_doc"]<br>"mcpServers": {<br>"strands-agents": {<br>"command": "uvx",<br>"args": ["strands-agents-mcp-server"],<br>"disabled": false,<br>"autoApprove": ["search_docs", "fetch_doc"]

Add to your mcp.json:<br>"servers": {<br>"strands-agents": {<br>"command": "uvx",<br>"args": ["strands-agents-mcp-server"]<br>"servers": {<br>"strands-agents": {<br>"command": "uvx",<br>"args": ["strands-agents-mcp-server"]

Or paste this prompt:<br>Add the Strands Agents SDK to my project. Docs: https://strandsagents.com/llms.txt

llms.txtllms-full.txtBuild with...

agent strands event agents title source

Related Articles