strands-agentcore-tools


Namestrands-agentcore-tools JSON
Version 0.1.1 PyPI version JSON
download
home_pagehttps://github.com/cagataycali/strands-agentcore-tools
SummaryStrands tools for AWS Bedrock AgentCore lifecycle management
upload_time2025-10-26 15:41:58
maintainerNone
docs_urlNone
authorCagatay Cali
requires_python>=3.10
licenseMIT
keywords aws bedrock agentcore strands ai agents tools
VCS
bugtrack_url
requirements bedrock-agentcore strands-agents strands-agents-tools pyyaml
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <div align="center">
  <a href="https://strandsagents.com">
    <img src="https://strandsagents.com/latest/assets/logo-github.svg" alt="Strands Agents" width="55px" height="105px">
  </a>
  <span style="font-size: 48px; margin: 0 20px;">×</span>
  <a href="https://aws.amazon.com/bedrock/agentcore/">
    <img width="150" height="150" alt="Bedrock AgentCore" src="https://github.com/user-attachments/assets/b8b9456d-c9e2-45e1-ac5b-760f21f1ac18" />
  </a>

  <h1>Strands AgentCore Tools</h1>
  <p><strong>Agentic tools that enable AI agents to autonomously deploy, manage, and monitor themselves on AWS Bedrock AgentCore</strong></p>

  <p>
    <a href="https://pypi.org/project/strands-agentcore-tools"><img src="https://img.shields.io/pypi/v/strands-agentcore-tools" alt="PyPI version"></a>
    <a href="https://github.com/cagataycali/strands-agentcore-tools/blob/main/LICENSE"><img src="https://img.shields.io/github/license/cagataycali/strands-agentcore-tools" alt="License"></a>
  </p>
</div>

---

## What This Is

**9 Python functions that wrap AWS Bedrock AgentCore boto3 APIs** for deployment, invocation, monitoring, and lifecycle management. Use these tools to:

- ✅ Deploy agents to AgentCore from code
- ✅ Invoke deployed agents programmatically
- ✅ Monitor CloudWatch logs and metrics
- ✅ Manage memory, sessions, and OAuth
- ✅ Integrate with Strands agents for autonomous deployment

**Lightweight by design:** Import only the tools you need for your use case.

---

## Agent Example

**Copy-paste ready agent with all execution modes:**

```python
# agent.py - Minimalist AgentCore agent with Strands
import asyncio
from bedrock_agentcore import BedrockAgentCoreApp
from strands import Agent

app = BedrockAgentCoreApp()

@app.async_task
async def run_agent_background(agent, prompt):
    """Background task wrapper for fire-and-forget execution"""
    async for event in agent.stream_async(prompt):
        print(event)  # Log events in background

@app.entrypoint
async def invoke(payload, context):
    agent = Agent()
    prompt = payload.get("prompt", "")
    mode = payload.get("mode", "streaming")  # streaming | sync | fire_and_forget
    
    if mode == "fire_and_forget":
        # Start background task with @app.async_task wrapper, return immediately
        asyncio.create_task(run_agent_background(agent, prompt))
        return {"status": "started", "content": [{"text": "Agent running in background"}]}
    
    elif mode == "sync":
        # Single blocking response (wait for completion)
        result = agent(prompt)
        return {"status": "success", "content": [{"text": str(result)}]}
    
    else:
        # Streaming response (default, recommended for UX)
        async for event in agent.stream_async(prompt):
            yield event

app.run()
```

**Deploy this agent:**
```python
from strands_agentcore_tools import configure, launch, invoke

configure(action="configure", entrypoint="agent.py", agent_name="my-agent")
launch(action="launch", agent_name="my-agent")
invoke(agent_arn="arn:...", payload='{"prompt": "Hello!", "mode": "streaming"}')
```

<details>
<summary><b>📝 Advanced: Agent with Memory (STM + LTM)</b></summary>

```python
# agent.py - Agent with persistent memory
import os
from bedrock_agentcore import BedrockAgentCoreApp
from strands import Agent
from bedrock_agentcore.memory.integrations.strands.config import (
    AgentCoreMemoryConfig, RetrievalConfig
)
from bedrock_agentcore.memory.integrations.strands.session_manager import (
    AgentCoreMemorySessionManager
)
from strands_tools.agent_core_memory import AgentCoreMemoryToolProvider

app = BedrockAgentCoreApp()

MEMORY_ID = os.getenv("BEDROCK_AGENTCORE_MEMORY_ID")
REGION = os.getenv("AWS_REGION", "us-west-2")

@app.entrypoint
async def invoke(payload, context):
    session_id = context.session_id
    actor_id = context.headers.get(
        "X-Amzn-Bedrock-AgentCore-Runtime-Custom-Actor-Id", 
        "user"
    )
    
    # Configure memory with semantic search
    memory_config = AgentCoreMemoryConfig(
        memory_id=MEMORY_ID,
        session_id=session_id,
        actor_id=actor_id,
        retrieval_config={
            f"/users/{actor_id}/facts": RetrievalConfig(
                top_k=3, 
                relevance_score=0.5
            )
        }
    )
    
    # Memory tools provider
    memory_provider = AgentCoreMemoryToolProvider(
        memory_id=MEMORY_ID,
        session_id=session_id,
        actor_id=actor_id,
        namespace="default",
        region=REGION
    )
    
    # Create agent with memory
    agent = Agent(
        tools=memory_provider.tools,
        session_manager=AgentCoreMemorySessionManager(memory_config, REGION),
        system_prompt="You have persistent memory across conversations."
    )
    
    # Stream responses
    async for event in agent.stream_async(payload.get("prompt")):
        yield event

app.run()
```

**Deploy with memory:**
```python
from strands_agentcore_tools import memory, configure, launch

# 1. Create memory
memory(
    action="create",
    name="my-memory",
    strategies=[{
        "semanticMemoryStrategy": {
            "name": "Facts",
            "namespaces": ["/users/{actorId}/facts"]
        }
    }],
    wait_for_active=True
)

# 2. Configure with memory
configure(
    action="configure",
    entrypoint="agent.py",
    agent_name="my-agent",
    memory_mode="STM_AND_LTM"
)

# 3. Launch
launch(action="launch", agent_name="my-agent")
```

</details>

---

## Installation

```bash
pip install strands-agentcore-tools
```

**Requirements:**
- Python 3.10+
- AWS credentials configured
- IAM permissions for `bedrock-agentcore:*`, `ecr:*`, `codebuild:*`, `iam:*`, `logs:*`

---

## The 9 Tools

| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| **`configure`** | Generate Dockerfile, IAM roles, config YAML | `entrypoint`, `agent_name`, `memory_mode` |
| **`launch`** | Build & deploy to AgentCore via CodeBuild | `agent_name`, `mode`, `env_vars` |
| **`invoke`** | Execute deployed agent with payload | `agent_arn`, `payload`, `session_id` |
| **`agents`** | List/get agent runtimes | `action` ("list", "get", "find_by_name") |
| **`status`** | Check agent health & endpoint status | `agent_id` or `agent_name` |
| **`logs`** | Query CloudWatch logs | `agent_name`, `action`, `filter_pattern` |
| **`memory`** | Manage AgentCore memories (STM/LTM) | `action`, `memory_id`, `strategies` |
| **`identity`** | OAuth provider management | `action`, `provider_type`, `vendor` |
| **`session`** | Stop active runtime sessions | `agent_arn`, `session_id` |

---

## Quick Reference

### 1. Configure

**Generates deployment files:** Dockerfile, `.bedrock_agentcore.yaml`, IAM roles

```python
from strands_agentcore_tools import configure

configure(
    action="configure",
    entrypoint="agent.py",
    agent_name="my-agent",
    memory_mode="STM_AND_LTM",          # or "STM_ONLY", "NO_MEMORY"
    enable_observability=True,
    idle_timeout=1800,                  # seconds
    max_lifetime=7200,                  # seconds
    region="us-west-2"
)
```

**Actions:**
- `configure` - Generate deployment files
- `status` - Check configuration status
- `list` - List all configured agents

**Output:**
- `.bedrock_agentcore/<agent_name>/Dockerfile`
- `.bedrock_agentcore/<agent_name>/.dockerignore`
- `.bedrock_agentcore.yaml`

---

### 2. Launch

**Builds ARM64 container on CodeBuild, pushes to ECR, deploys to AgentCore**

```python
from strands_agentcore_tools import launch

result = launch(
    action="launch",
    agent_name="my-agent",
    mode="codebuild",                   # or "local" (requires Docker/Finch/Podman)
    auto_update_on_conflict=True,
    env_vars={
        "MODEL_ID": "us.anthropic.claude-sonnet-4-5-20250929-v1:0",
        "LOG_LEVEL": "DEBUG"
    },
    region="us-west-2"
)

print(result["agent_arn"])  # arn:aws:bedrock-agentcore:us-west-2:123:runtime/my-agent-abc
```

**Actions:**
- `launch` - Deploy agent
- `status` - Check deployment status
- `stop` - Stop active deployment

**Returns:**
```python
{
    "agent_id": "my-agent-abc123",
    "agent_arn": "arn:aws:bedrock-agentcore:us-west-2:123:runtime/my-agent-abc123",
    "status": "READY"
}
```

---

### 3. Invoke

**Execute deployed agent, supports streaming responses**

```python
from strands_agentcore_tools import invoke

# Streaming invocation (default)
invoke(
    agent_arn="arn:aws:bedrock-agentcore:us-west-2:123:runtime/my-agent-abc",
    payload='{"prompt": "Analyze this dataset"}',
    session_id="session-123",           # Optional: for conversation continuity
    user_id="user-abc",                 # Optional: for OAuth flows
    headers={                           # Optional: custom headers
        "X-Custom-Header": "value"
    },
    region="us-west-2"
)
```

**Parameters:**
- `agent_arn` (required) - Full ARN of deployed agent
- `payload` (required) - JSON string payload
- `session_id` (optional) - Min 33 chars for session tracking
- `user_id` (optional) - Triggers OAuth if configured
- `headers` (optional) - Custom HTTP headers
- `region` (optional) - AWS region

**Returns:** SSE streaming events from agent

---

### 4. Agents

**List, get, and search agent runtimes**

```python
from strands_agentcore_tools import agents

# List all agents
agents(action="list", region="us-west-2")

# Get specific agent
agents(action="get", agent_id="my-agent-abc123", region="us-west-2")

# Find by name
result = agents(action="find_by_name", agent_name="my-agent", region="us-west-2")
print(result["agent_arn"])
```

**Actions:**
- `list` - List all agent runtimes
- `get` - Get agent by ID
- `find_by_name` - Find agent by name (returns first match)

**Returns:**
```python
{
    "agent_id": "my-agent-abc123",
    "agent_arn": "arn:aws:bedrock-agentcore:us-west-2:123:runtime/my-agent-abc123",
    "status": "READY",
    "created": "2024-10-24T14:20:00Z"
}
```

---

### 5. Status

**Check agent health and endpoint status**

```python
from strands_agentcore_tools import status

status(
    agent_id="my-agent-abc123",         # Can use agent_id
    agent_name="my-agent",              # Or agent_name (auto-lookup)
    endpoint="DEFAULT",                 # Optional: specific endpoint
    region="us-west-2"
)
```

**Returns:**
```python
{
    "agent_id": "my-agent-abc123",
    "status": "READY",                  # READY, CREATING, UPDATING, DELETING, FAILED
    "endpoint": "DEFAULT",
    "created": "2024-10-24T14:20:00Z",
    "updated": "2024-10-24T15:30:00Z"
}
```

---

### 6. Logs

**Query CloudWatch logs for deployed agents**

```python
from strands_agentcore_tools import logs

# Recent logs
logs(
    agent_name="my-agent",
    action="recent",
    limit=50,
    region="us-west-2"
)

# Search for errors
logs(
    agent_name="my-agent",
    action="search",
    filter_pattern="ERROR",
    limit=100,
    region="us-west-2"
)

# Tail logs (real-time)
logs(
    agent_name="my-agent",
    action="tail",
    region="us-west-2"
)

# List log streams
logs(
    agent_name="my-agent",
    action="streams",
    region="us-west-2"
)
```

**Actions:**
- `recent` - Get recent log events
- `search` - Filter logs by pattern
- `tail` - Stream logs in real-time
- `streams` - List available log streams

**Parameters:**
- `agent_name` - Agent name (auto-lookups runtime ID)
- `agent_id` - Or use runtime ID directly
- `endpoint` - Default: "DEFAULT"
- `limit` - Max events to return
- `filter_pattern` - CloudWatch filter pattern

---

### 7. Memory

**Manage AgentCore memories (STM/LTM)**

```python
from strands_agentcore_tools import memory

# Create memory
memory(
    action="create",
    name="research-memory",
    strategies=[{
        "semanticMemoryStrategy": {
            "name": "Facts",
            "namespaces": ["/users/{actorId}/facts"]
        }
    }],
    wait_for_active=True,               # Block until ACTIVE
    region="us-west-2"
)

# Get memory status
memory(
    action="get_status",
    memory_id="memory-abc123",
    region="us-west-2"
)

# Retrieve from memory
memory(
    action="retrieve",
    memory_id="memory-abc123",
    namespace="/users/user-abc/facts",
    search_query="What is the capital of France?",
    top_k=5,
    min_score=0.5,
    region="us-west-2"
)

# Create memory event
memory(
    action="create_event",
    memory_id="memory-abc123",
    session_id="session-123",
    actor_id="user-abc",
    namespace="/users/user-abc/facts",
    content="Paris is the capital of France",
    region="us-west-2"
)

# List all memories
memory(action="list", region="us-west-2")
```

**Actions:**
- `create` - Create new memory
- `get_status` - Check memory status
- `retrieve` - Semantic search
- `create_event` - Add memory event
- `list` - List all memories

---

### 8. Identity

**OAuth provider management**

```python
from strands_agentcore_tools import identity

# Create OAuth provider
identity(
    action="create",
    provider_type="oauth2",
    name="slack-oauth",
    vendor="SlackOauth2",               # SlackOauth2, GitHubOAuth2, GoogleOAuth2
    client_id="your-client-id",
    client_secret="your-client-secret",
    region="us-west-2"
)

# Get provider
identity(
    action="get",
    provider_id="provider-abc123",
    region="us-west-2"
)

# List providers
identity(action="list", region="us-west-2")

# Delete provider
identity(
    action="delete",
    provider_id="provider-abc123",
    region="us-west-2"
)
```

**Actions:**
- `create` - Create OAuth provider
- `get` - Get provider details
- `list` - List all providers
- `delete` - Delete provider

**Supported Vendors:**
- `SlackOauth2`
- `GitHubOAuth2`
- `GoogleOAuth2`

---

### 9. Session

**Stop active runtime sessions**

```python
from strands_agentcore_tools import session

session(
    action="stop",
    agent_arn="arn:aws:bedrock-agentcore:us-west-2:123:runtime/my-agent-abc",
    session_id="session-123",
    region="us-west-2"
)
```

**Actions:**
- `stop` - Terminate active session

---

## Complete Workflow Example

```python
from strands_agentcore_tools import (
    configure, launch, invoke, status, logs, memory
)

# 1. Configure deployment
configure(
    action="configure",
    entrypoint="agent.py",
    agent_name="research-agent",
    memory_mode="STM_AND_LTM"
)

# 2. Create memory
memory(
    action="create",
    name="research-memory",
    strategies=[{
        "semanticMemoryStrategy": {
            "name": "Facts",
            "namespaces": ["/users/{actorId}/facts"]
        }
    }],
    wait_for_active=True
)

# 3. Deploy to AWS
result = launch(
    action="launch",
    agent_name="research-agent",
    mode="codebuild"
)

agent_arn = result["agent_arn"]

# 4. Check deployment status
status(agent_name="research-agent")

# 5. Invoke agent
invoke(
    agent_arn=agent_arn,
    payload='{"prompt": "Analyze this data"}',
    session_id="session-abc-123-very-long-session-id-here"
)

# 6. Check logs
logs(agent_name="research-agent", action="recent", limit=50)
```

---

## Use with Strands Agents

**Enable autonomous deployment by giving agents these tools:**

```python
from strands import Agent
from strands_agentcore_tools import (
    configure, launch, invoke, status, logs
)

agent = Agent(
    tools=[configure, launch, invoke, status, logs],
    system_prompt="You can deploy yourself to AWS AgentCore."
)

# Agent deploys itself
response = agent("""
Deploy yourself to AWS:
1. Configure deployment
2. Launch to production
3. Check status
4. Show logs
""")
```

**Agent will autonomously:**
- ✅ Generate Dockerfile and config
- ✅ Trigger CodeBuild deployment
- ✅ Monitor deployment status
- ✅ Validate with logs
- ✅ Report results

---

## Configuration File

**`.bedrock_agentcore.yaml`** (auto-generated by `configure`):

```yaml
agents:
  my-agent:
    name: my-agent
    entrypoint: agent.py
    platform: linux/arm64
    aws:
      execution_role: arn:aws:iam::123:role/AgentCoreRuntime-us-west-2-abc
      region: us-west-2
      ecr_repository: 123.dkr.ecr.us-west-2.amazonaws.com/bedrock-agentcore-my-agent
    memory:
      mode: STM_AND_LTM
      memory_id: memory-abc123
    bedrock_agentcore:
      agent_id: my-agent-abc123
      agent_arn: arn:aws:bedrock-agentcore:us-west-2:123:runtime/my-agent-abc123
```

---

## IAM Permissions

**Runtime Execution Role** (auto-created by `configure`):

```json
{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Action": [
      "bedrock:InvokeModel",
      "bedrock:InvokeModelWithResponseStream",
      "logs:CreateLogGroup",
      "logs:CreateLogStream",
      "logs:PutLogEvents",
      "bedrock-agentcore:CreateMemoryEvent",
      "bedrock-agentcore:RetrieveMemoryRecords",
      "ecr:GetAuthorizationToken",
      "ecr:BatchGetImage",
      "ecr:GetDownloadUrlForLayer",
      "xray:PutTraceSegments",
      "xray:PutTelemetryRecords"
    ],
    "Resource": "*"
  }]
}
```

**Your IAM User/Role** (attach manually):

```json
{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Action": [
      "bedrock-agentcore-control:*",
      "bedrock-agentcore:*",
      "ecr:*",
      "codebuild:*",
      "iam:CreateRole",
      "iam:GetRole",
      "iam:PassRole",
      "iam:PutRolePolicy",
      "logs:*",
      "s3:PutObject",
      "s3:GetObject"
    ],
    "Resource": "*"
  }]
}
```

---

## Error Handling

All tools return structured responses:

```python
# Success
{
    "status": "success",
    "agent_arn": "arn:aws:bedrock-agentcore:us-west-2:123:runtime/my-agent-abc",
    "message": "Agent deployed successfully"
}

# Error
{
    "status": "error",
    "error": "ConflictException",
    "message": "Agent already exists. Use auto_update_on_conflict=True"
}
```

**Common Errors:**
- `ConflictException` - Agent exists, use `auto_update_on_conflict=True` in `launch()`
- `ValidationException` - Invalid parameters (check agent_name format)
- `AccessDeniedException` - IAM permissions missing
- `ResourceNotFoundException` - Agent/memory not found

---

## Observability

**View logs programmatically:**

```python
from strands_agentcore_tools import logs

# Recent logs
logs(agent_name="my-agent", action="recent", limit=50)

# Search for errors
logs(agent_name="my-agent", action="search", filter_pattern="ERROR")

# Tail in real-time
logs(agent_name="my-agent", action="tail")
```

**Add ADOT instrumentation for tracing:**

```dockerfile
# In Dockerfile (auto-generated by configure)
RUN pip install aws-opentelemetry-distro>=0.10.1
CMD ["opentelemetry-instrument", "python", "agent.py"]
```

**CloudWatch Logs Location:**
```
/aws/bedrock-agentcore/runtimes/<agent_id>-<endpoint>
```

---

## Development

**Local Testing:**

```bash
# Install package locally
pip install -e .

# Run tests
pytest tests/

# Format code
black strands_agentcore_tools/
```

**Project Structure:**

```
strands-agentcore-tools/
├── strands_agentcore_tools/
│   ├── __init__.py
│   ├── configure.py        # Deployment configuration
│   ├── launch.py           # CodeBuild deployment
│   ├── invoke.py           # Agent invocation
│   ├── agents.py           # Agent discovery
│   ├── status.py           # Health checks
│   ├── logs.py             # CloudWatch logs
│   ├── memory.py           # Memory management
│   ├── identity.py         # OAuth providers
│   └── session.py          # Session control
├── setup.py
├── pyproject.toml
└── README.md
```

---

## Resources

**Documentation:**
- [Strands Agents Docs](https://strandsagents.com/)
- [AWS Bedrock AgentCore Docs](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/)
- [AgentCore API Reference](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/bedrock-agentcore-control.html)

**Related Projects:**
- [bedrock-agentcore-starter-toolkit](https://github.com/aws/bedrock-agentcore-starter-toolkit) - Official AWS toolkit
- [strands-agents](https://github.com/strands-agents/sdk-python) - Strands SDK

---

## License

Apache2 License - see [LICENSE](LICENSE) file for details.

---

## Contributing

Issues and PRs welcome at [github.com/cagataycali/strands-agentcore-tools](https://github.com/cagataycali/strands-agentcore-tools)

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/cagataycali/strands-agentcore-tools",
    "name": "strands-agentcore-tools",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "aws, bedrock, agentcore, strands, ai, agents, tools",
    "author": "Cagatay Cali",
    "author_email": "Cagatay Cali <cagataycali@icloud.com>",
    "download_url": "https://files.pythonhosted.org/packages/35/29/e48fa8b49dadb7ab4504f6982a775045047dd09d68380ec9402dae0e3dd5/strands_agentcore_tools-0.1.1.tar.gz",
    "platform": null,
    "description": "<div align=\"center\">\n  <a href=\"https://strandsagents.com\">\n    <img src=\"https://strandsagents.com/latest/assets/logo-github.svg\" alt=\"Strands Agents\" width=\"55px\" height=\"105px\">\n  </a>\n  <span style=\"font-size: 48px; margin: 0 20px;\">\u00d7</span>\n  <a href=\"https://aws.amazon.com/bedrock/agentcore/\">\n    <img width=\"150\" height=\"150\" alt=\"Bedrock AgentCore\" src=\"https://github.com/user-attachments/assets/b8b9456d-c9e2-45e1-ac5b-760f21f1ac18\" />\n  </a>\n\n  <h1>Strands AgentCore Tools</h1>\n  <p><strong>Agentic tools that enable AI agents to autonomously deploy, manage, and monitor themselves on AWS Bedrock AgentCore</strong></p>\n\n  <p>\n    <a href=\"https://pypi.org/project/strands-agentcore-tools\"><img src=\"https://img.shields.io/pypi/v/strands-agentcore-tools\" alt=\"PyPI version\"></a>\n    <a href=\"https://github.com/cagataycali/strands-agentcore-tools/blob/main/LICENSE\"><img src=\"https://img.shields.io/github/license/cagataycali/strands-agentcore-tools\" alt=\"License\"></a>\n  </p>\n</div>\n\n---\n\n## What This Is\n\n**9 Python functions that wrap AWS Bedrock AgentCore boto3 APIs** for deployment, invocation, monitoring, and lifecycle management. Use these tools to:\n\n- \u2705 Deploy agents to AgentCore from code\n- \u2705 Invoke deployed agents programmatically\n- \u2705 Monitor CloudWatch logs and metrics\n- \u2705 Manage memory, sessions, and OAuth\n- \u2705 Integrate with Strands agents for autonomous deployment\n\n**Lightweight by design:** Import only the tools you need for your use case.\n\n---\n\n## Agent Example\n\n**Copy-paste ready agent with all execution modes:**\n\n```python\n# agent.py - Minimalist AgentCore agent with Strands\nimport asyncio\nfrom bedrock_agentcore import BedrockAgentCoreApp\nfrom strands import Agent\n\napp = BedrockAgentCoreApp()\n\n@app.async_task\nasync def run_agent_background(agent, prompt):\n    \"\"\"Background task wrapper for fire-and-forget execution\"\"\"\n    async for event in agent.stream_async(prompt):\n        print(event)  # Log events in background\n\n@app.entrypoint\nasync def invoke(payload, context):\n    agent = Agent()\n    prompt = payload.get(\"prompt\", \"\")\n    mode = payload.get(\"mode\", \"streaming\")  # streaming | sync | fire_and_forget\n    \n    if mode == \"fire_and_forget\":\n        # Start background task with @app.async_task wrapper, return immediately\n        asyncio.create_task(run_agent_background(agent, prompt))\n        return {\"status\": \"started\", \"content\": [{\"text\": \"Agent running in background\"}]}\n    \n    elif mode == \"sync\":\n        # Single blocking response (wait for completion)\n        result = agent(prompt)\n        return {\"status\": \"success\", \"content\": [{\"text\": str(result)}]}\n    \n    else:\n        # Streaming response (default, recommended for UX)\n        async for event in agent.stream_async(prompt):\n            yield event\n\napp.run()\n```\n\n**Deploy this agent:**\n```python\nfrom strands_agentcore_tools import configure, launch, invoke\n\nconfigure(action=\"configure\", entrypoint=\"agent.py\", agent_name=\"my-agent\")\nlaunch(action=\"launch\", agent_name=\"my-agent\")\ninvoke(agent_arn=\"arn:...\", payload='{\"prompt\": \"Hello!\", \"mode\": \"streaming\"}')\n```\n\n<details>\n<summary><b>\ud83d\udcdd Advanced: Agent with Memory (STM + LTM)</b></summary>\n\n```python\n# agent.py - Agent with persistent memory\nimport os\nfrom bedrock_agentcore import BedrockAgentCoreApp\nfrom strands import Agent\nfrom bedrock_agentcore.memory.integrations.strands.config import (\n    AgentCoreMemoryConfig, RetrievalConfig\n)\nfrom bedrock_agentcore.memory.integrations.strands.session_manager import (\n    AgentCoreMemorySessionManager\n)\nfrom strands_tools.agent_core_memory import AgentCoreMemoryToolProvider\n\napp = BedrockAgentCoreApp()\n\nMEMORY_ID = os.getenv(\"BEDROCK_AGENTCORE_MEMORY_ID\")\nREGION = os.getenv(\"AWS_REGION\", \"us-west-2\")\n\n@app.entrypoint\nasync def invoke(payload, context):\n    session_id = context.session_id\n    actor_id = context.headers.get(\n        \"X-Amzn-Bedrock-AgentCore-Runtime-Custom-Actor-Id\", \n        \"user\"\n    )\n    \n    # Configure memory with semantic search\n    memory_config = AgentCoreMemoryConfig(\n        memory_id=MEMORY_ID,\n        session_id=session_id,\n        actor_id=actor_id,\n        retrieval_config={\n            f\"/users/{actor_id}/facts\": RetrievalConfig(\n                top_k=3, \n                relevance_score=0.5\n            )\n        }\n    )\n    \n    # Memory tools provider\n    memory_provider = AgentCoreMemoryToolProvider(\n        memory_id=MEMORY_ID,\n        session_id=session_id,\n        actor_id=actor_id,\n        namespace=\"default\",\n        region=REGION\n    )\n    \n    # Create agent with memory\n    agent = Agent(\n        tools=memory_provider.tools,\n        session_manager=AgentCoreMemorySessionManager(memory_config, REGION),\n        system_prompt=\"You have persistent memory across conversations.\"\n    )\n    \n    # Stream responses\n    async for event in agent.stream_async(payload.get(\"prompt\")):\n        yield event\n\napp.run()\n```\n\n**Deploy with memory:**\n```python\nfrom strands_agentcore_tools import memory, configure, launch\n\n# 1. Create memory\nmemory(\n    action=\"create\",\n    name=\"my-memory\",\n    strategies=[{\n        \"semanticMemoryStrategy\": {\n            \"name\": \"Facts\",\n            \"namespaces\": [\"/users/{actorId}/facts\"]\n        }\n    }],\n    wait_for_active=True\n)\n\n# 2. Configure with memory\nconfigure(\n    action=\"configure\",\n    entrypoint=\"agent.py\",\n    agent_name=\"my-agent\",\n    memory_mode=\"STM_AND_LTM\"\n)\n\n# 3. Launch\nlaunch(action=\"launch\", agent_name=\"my-agent\")\n```\n\n</details>\n\n---\n\n## Installation\n\n```bash\npip install strands-agentcore-tools\n```\n\n**Requirements:**\n- Python 3.10+\n- AWS credentials configured\n- IAM permissions for `bedrock-agentcore:*`, `ecr:*`, `codebuild:*`, `iam:*`, `logs:*`\n\n---\n\n## The 9 Tools\n\n| Tool | Purpose | Key Parameters |\n|------|---------|----------------|\n| **`configure`** | Generate Dockerfile, IAM roles, config YAML | `entrypoint`, `agent_name`, `memory_mode` |\n| **`launch`** | Build & deploy to AgentCore via CodeBuild | `agent_name`, `mode`, `env_vars` |\n| **`invoke`** | Execute deployed agent with payload | `agent_arn`, `payload`, `session_id` |\n| **`agents`** | List/get agent runtimes | `action` (\"list\", \"get\", \"find_by_name\") |\n| **`status`** | Check agent health & endpoint status | `agent_id` or `agent_name` |\n| **`logs`** | Query CloudWatch logs | `agent_name`, `action`, `filter_pattern` |\n| **`memory`** | Manage AgentCore memories (STM/LTM) | `action`, `memory_id`, `strategies` |\n| **`identity`** | OAuth provider management | `action`, `provider_type`, `vendor` |\n| **`session`** | Stop active runtime sessions | `agent_arn`, `session_id` |\n\n---\n\n## Quick Reference\n\n### 1. Configure\n\n**Generates deployment files:** Dockerfile, `.bedrock_agentcore.yaml`, IAM roles\n\n```python\nfrom strands_agentcore_tools import configure\n\nconfigure(\n    action=\"configure\",\n    entrypoint=\"agent.py\",\n    agent_name=\"my-agent\",\n    memory_mode=\"STM_AND_LTM\",          # or \"STM_ONLY\", \"NO_MEMORY\"\n    enable_observability=True,\n    idle_timeout=1800,                  # seconds\n    max_lifetime=7200,                  # seconds\n    region=\"us-west-2\"\n)\n```\n\n**Actions:**\n- `configure` - Generate deployment files\n- `status` - Check configuration status\n- `list` - List all configured agents\n\n**Output:**\n- `.bedrock_agentcore/<agent_name>/Dockerfile`\n- `.bedrock_agentcore/<agent_name>/.dockerignore`\n- `.bedrock_agentcore.yaml`\n\n---\n\n### 2. Launch\n\n**Builds ARM64 container on CodeBuild, pushes to ECR, deploys to AgentCore**\n\n```python\nfrom strands_agentcore_tools import launch\n\nresult = launch(\n    action=\"launch\",\n    agent_name=\"my-agent\",\n    mode=\"codebuild\",                   # or \"local\" (requires Docker/Finch/Podman)\n    auto_update_on_conflict=True,\n    env_vars={\n        \"MODEL_ID\": \"us.anthropic.claude-sonnet-4-5-20250929-v1:0\",\n        \"LOG_LEVEL\": \"DEBUG\"\n    },\n    region=\"us-west-2\"\n)\n\nprint(result[\"agent_arn\"])  # arn:aws:bedrock-agentcore:us-west-2:123:runtime/my-agent-abc\n```\n\n**Actions:**\n- `launch` - Deploy agent\n- `status` - Check deployment status\n- `stop` - Stop active deployment\n\n**Returns:**\n```python\n{\n    \"agent_id\": \"my-agent-abc123\",\n    \"agent_arn\": \"arn:aws:bedrock-agentcore:us-west-2:123:runtime/my-agent-abc123\",\n    \"status\": \"READY\"\n}\n```\n\n---\n\n### 3. Invoke\n\n**Execute deployed agent, supports streaming responses**\n\n```python\nfrom strands_agentcore_tools import invoke\n\n# Streaming invocation (default)\ninvoke(\n    agent_arn=\"arn:aws:bedrock-agentcore:us-west-2:123:runtime/my-agent-abc\",\n    payload='{\"prompt\": \"Analyze this dataset\"}',\n    session_id=\"session-123\",           # Optional: for conversation continuity\n    user_id=\"user-abc\",                 # Optional: for OAuth flows\n    headers={                           # Optional: custom headers\n        \"X-Custom-Header\": \"value\"\n    },\n    region=\"us-west-2\"\n)\n```\n\n**Parameters:**\n- `agent_arn` (required) - Full ARN of deployed agent\n- `payload` (required) - JSON string payload\n- `session_id` (optional) - Min 33 chars for session tracking\n- `user_id` (optional) - Triggers OAuth if configured\n- `headers` (optional) - Custom HTTP headers\n- `region` (optional) - AWS region\n\n**Returns:** SSE streaming events from agent\n\n---\n\n### 4. Agents\n\n**List, get, and search agent runtimes**\n\n```python\nfrom strands_agentcore_tools import agents\n\n# List all agents\nagents(action=\"list\", region=\"us-west-2\")\n\n# Get specific agent\nagents(action=\"get\", agent_id=\"my-agent-abc123\", region=\"us-west-2\")\n\n# Find by name\nresult = agents(action=\"find_by_name\", agent_name=\"my-agent\", region=\"us-west-2\")\nprint(result[\"agent_arn\"])\n```\n\n**Actions:**\n- `list` - List all agent runtimes\n- `get` - Get agent by ID\n- `find_by_name` - Find agent by name (returns first match)\n\n**Returns:**\n```python\n{\n    \"agent_id\": \"my-agent-abc123\",\n    \"agent_arn\": \"arn:aws:bedrock-agentcore:us-west-2:123:runtime/my-agent-abc123\",\n    \"status\": \"READY\",\n    \"created\": \"2024-10-24T14:20:00Z\"\n}\n```\n\n---\n\n### 5. Status\n\n**Check agent health and endpoint status**\n\n```python\nfrom strands_agentcore_tools import status\n\nstatus(\n    agent_id=\"my-agent-abc123\",         # Can use agent_id\n    agent_name=\"my-agent\",              # Or agent_name (auto-lookup)\n    endpoint=\"DEFAULT\",                 # Optional: specific endpoint\n    region=\"us-west-2\"\n)\n```\n\n**Returns:**\n```python\n{\n    \"agent_id\": \"my-agent-abc123\",\n    \"status\": \"READY\",                  # READY, CREATING, UPDATING, DELETING, FAILED\n    \"endpoint\": \"DEFAULT\",\n    \"created\": \"2024-10-24T14:20:00Z\",\n    \"updated\": \"2024-10-24T15:30:00Z\"\n}\n```\n\n---\n\n### 6. Logs\n\n**Query CloudWatch logs for deployed agents**\n\n```python\nfrom strands_agentcore_tools import logs\n\n# Recent logs\nlogs(\n    agent_name=\"my-agent\",\n    action=\"recent\",\n    limit=50,\n    region=\"us-west-2\"\n)\n\n# Search for errors\nlogs(\n    agent_name=\"my-agent\",\n    action=\"search\",\n    filter_pattern=\"ERROR\",\n    limit=100,\n    region=\"us-west-2\"\n)\n\n# Tail logs (real-time)\nlogs(\n    agent_name=\"my-agent\",\n    action=\"tail\",\n    region=\"us-west-2\"\n)\n\n# List log streams\nlogs(\n    agent_name=\"my-agent\",\n    action=\"streams\",\n    region=\"us-west-2\"\n)\n```\n\n**Actions:**\n- `recent` - Get recent log events\n- `search` - Filter logs by pattern\n- `tail` - Stream logs in real-time\n- `streams` - List available log streams\n\n**Parameters:**\n- `agent_name` - Agent name (auto-lookups runtime ID)\n- `agent_id` - Or use runtime ID directly\n- `endpoint` - Default: \"DEFAULT\"\n- `limit` - Max events to return\n- `filter_pattern` - CloudWatch filter pattern\n\n---\n\n### 7. Memory\n\n**Manage AgentCore memories (STM/LTM)**\n\n```python\nfrom strands_agentcore_tools import memory\n\n# Create memory\nmemory(\n    action=\"create\",\n    name=\"research-memory\",\n    strategies=[{\n        \"semanticMemoryStrategy\": {\n            \"name\": \"Facts\",\n            \"namespaces\": [\"/users/{actorId}/facts\"]\n        }\n    }],\n    wait_for_active=True,               # Block until ACTIVE\n    region=\"us-west-2\"\n)\n\n# Get memory status\nmemory(\n    action=\"get_status\",\n    memory_id=\"memory-abc123\",\n    region=\"us-west-2\"\n)\n\n# Retrieve from memory\nmemory(\n    action=\"retrieve\",\n    memory_id=\"memory-abc123\",\n    namespace=\"/users/user-abc/facts\",\n    search_query=\"What is the capital of France?\",\n    top_k=5,\n    min_score=0.5,\n    region=\"us-west-2\"\n)\n\n# Create memory event\nmemory(\n    action=\"create_event\",\n    memory_id=\"memory-abc123\",\n    session_id=\"session-123\",\n    actor_id=\"user-abc\",\n    namespace=\"/users/user-abc/facts\",\n    content=\"Paris is the capital of France\",\n    region=\"us-west-2\"\n)\n\n# List all memories\nmemory(action=\"list\", region=\"us-west-2\")\n```\n\n**Actions:**\n- `create` - Create new memory\n- `get_status` - Check memory status\n- `retrieve` - Semantic search\n- `create_event` - Add memory event\n- `list` - List all memories\n\n---\n\n### 8. Identity\n\n**OAuth provider management**\n\n```python\nfrom strands_agentcore_tools import identity\n\n# Create OAuth provider\nidentity(\n    action=\"create\",\n    provider_type=\"oauth2\",\n    name=\"slack-oauth\",\n    vendor=\"SlackOauth2\",               # SlackOauth2, GitHubOAuth2, GoogleOAuth2\n    client_id=\"your-client-id\",\n    client_secret=\"your-client-secret\",\n    region=\"us-west-2\"\n)\n\n# Get provider\nidentity(\n    action=\"get\",\n    provider_id=\"provider-abc123\",\n    region=\"us-west-2\"\n)\n\n# List providers\nidentity(action=\"list\", region=\"us-west-2\")\n\n# Delete provider\nidentity(\n    action=\"delete\",\n    provider_id=\"provider-abc123\",\n    region=\"us-west-2\"\n)\n```\n\n**Actions:**\n- `create` - Create OAuth provider\n- `get` - Get provider details\n- `list` - List all providers\n- `delete` - Delete provider\n\n**Supported Vendors:**\n- `SlackOauth2`\n- `GitHubOAuth2`\n- `GoogleOAuth2`\n\n---\n\n### 9. Session\n\n**Stop active runtime sessions**\n\n```python\nfrom strands_agentcore_tools import session\n\nsession(\n    action=\"stop\",\n    agent_arn=\"arn:aws:bedrock-agentcore:us-west-2:123:runtime/my-agent-abc\",\n    session_id=\"session-123\",\n    region=\"us-west-2\"\n)\n```\n\n**Actions:**\n- `stop` - Terminate active session\n\n---\n\n## Complete Workflow Example\n\n```python\nfrom strands_agentcore_tools import (\n    configure, launch, invoke, status, logs, memory\n)\n\n# 1. Configure deployment\nconfigure(\n    action=\"configure\",\n    entrypoint=\"agent.py\",\n    agent_name=\"research-agent\",\n    memory_mode=\"STM_AND_LTM\"\n)\n\n# 2. Create memory\nmemory(\n    action=\"create\",\n    name=\"research-memory\",\n    strategies=[{\n        \"semanticMemoryStrategy\": {\n            \"name\": \"Facts\",\n            \"namespaces\": [\"/users/{actorId}/facts\"]\n        }\n    }],\n    wait_for_active=True\n)\n\n# 3. Deploy to AWS\nresult = launch(\n    action=\"launch\",\n    agent_name=\"research-agent\",\n    mode=\"codebuild\"\n)\n\nagent_arn = result[\"agent_arn\"]\n\n# 4. Check deployment status\nstatus(agent_name=\"research-agent\")\n\n# 5. Invoke agent\ninvoke(\n    agent_arn=agent_arn,\n    payload='{\"prompt\": \"Analyze this data\"}',\n    session_id=\"session-abc-123-very-long-session-id-here\"\n)\n\n# 6. Check logs\nlogs(agent_name=\"research-agent\", action=\"recent\", limit=50)\n```\n\n---\n\n## Use with Strands Agents\n\n**Enable autonomous deployment by giving agents these tools:**\n\n```python\nfrom strands import Agent\nfrom strands_agentcore_tools import (\n    configure, launch, invoke, status, logs\n)\n\nagent = Agent(\n    tools=[configure, launch, invoke, status, logs],\n    system_prompt=\"You can deploy yourself to AWS AgentCore.\"\n)\n\n# Agent deploys itself\nresponse = agent(\"\"\"\nDeploy yourself to AWS:\n1. Configure deployment\n2. Launch to production\n3. Check status\n4. Show logs\n\"\"\")\n```\n\n**Agent will autonomously:**\n- \u2705 Generate Dockerfile and config\n- \u2705 Trigger CodeBuild deployment\n- \u2705 Monitor deployment status\n- \u2705 Validate with logs\n- \u2705 Report results\n\n---\n\n## Configuration File\n\n**`.bedrock_agentcore.yaml`** (auto-generated by `configure`):\n\n```yaml\nagents:\n  my-agent:\n    name: my-agent\n    entrypoint: agent.py\n    platform: linux/arm64\n    aws:\n      execution_role: arn:aws:iam::123:role/AgentCoreRuntime-us-west-2-abc\n      region: us-west-2\n      ecr_repository: 123.dkr.ecr.us-west-2.amazonaws.com/bedrock-agentcore-my-agent\n    memory:\n      mode: STM_AND_LTM\n      memory_id: memory-abc123\n    bedrock_agentcore:\n      agent_id: my-agent-abc123\n      agent_arn: arn:aws:bedrock-agentcore:us-west-2:123:runtime/my-agent-abc123\n```\n\n---\n\n## IAM Permissions\n\n**Runtime Execution Role** (auto-created by `configure`):\n\n```json\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [{\n    \"Effect\": \"Allow\",\n    \"Action\": [\n      \"bedrock:InvokeModel\",\n      \"bedrock:InvokeModelWithResponseStream\",\n      \"logs:CreateLogGroup\",\n      \"logs:CreateLogStream\",\n      \"logs:PutLogEvents\",\n      \"bedrock-agentcore:CreateMemoryEvent\",\n      \"bedrock-agentcore:RetrieveMemoryRecords\",\n      \"ecr:GetAuthorizationToken\",\n      \"ecr:BatchGetImage\",\n      \"ecr:GetDownloadUrlForLayer\",\n      \"xray:PutTraceSegments\",\n      \"xray:PutTelemetryRecords\"\n    ],\n    \"Resource\": \"*\"\n  }]\n}\n```\n\n**Your IAM User/Role** (attach manually):\n\n```json\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [{\n    \"Effect\": \"Allow\",\n    \"Action\": [\n      \"bedrock-agentcore-control:*\",\n      \"bedrock-agentcore:*\",\n      \"ecr:*\",\n      \"codebuild:*\",\n      \"iam:CreateRole\",\n      \"iam:GetRole\",\n      \"iam:PassRole\",\n      \"iam:PutRolePolicy\",\n      \"logs:*\",\n      \"s3:PutObject\",\n      \"s3:GetObject\"\n    ],\n    \"Resource\": \"*\"\n  }]\n}\n```\n\n---\n\n## Error Handling\n\nAll tools return structured responses:\n\n```python\n# Success\n{\n    \"status\": \"success\",\n    \"agent_arn\": \"arn:aws:bedrock-agentcore:us-west-2:123:runtime/my-agent-abc\",\n    \"message\": \"Agent deployed successfully\"\n}\n\n# Error\n{\n    \"status\": \"error\",\n    \"error\": \"ConflictException\",\n    \"message\": \"Agent already exists. Use auto_update_on_conflict=True\"\n}\n```\n\n**Common Errors:**\n- `ConflictException` - Agent exists, use `auto_update_on_conflict=True` in `launch()`\n- `ValidationException` - Invalid parameters (check agent_name format)\n- `AccessDeniedException` - IAM permissions missing\n- `ResourceNotFoundException` - Agent/memory not found\n\n---\n\n## Observability\n\n**View logs programmatically:**\n\n```python\nfrom strands_agentcore_tools import logs\n\n# Recent logs\nlogs(agent_name=\"my-agent\", action=\"recent\", limit=50)\n\n# Search for errors\nlogs(agent_name=\"my-agent\", action=\"search\", filter_pattern=\"ERROR\")\n\n# Tail in real-time\nlogs(agent_name=\"my-agent\", action=\"tail\")\n```\n\n**Add ADOT instrumentation for tracing:**\n\n```dockerfile\n# In Dockerfile (auto-generated by configure)\nRUN pip install aws-opentelemetry-distro>=0.10.1\nCMD [\"opentelemetry-instrument\", \"python\", \"agent.py\"]\n```\n\n**CloudWatch Logs Location:**\n```\n/aws/bedrock-agentcore/runtimes/<agent_id>-<endpoint>\n```\n\n---\n\n## Development\n\n**Local Testing:**\n\n```bash\n# Install package locally\npip install -e .\n\n# Run tests\npytest tests/\n\n# Format code\nblack strands_agentcore_tools/\n```\n\n**Project Structure:**\n\n```\nstrands-agentcore-tools/\n\u251c\u2500\u2500 strands_agentcore_tools/\n\u2502   \u251c\u2500\u2500 __init__.py\n\u2502   \u251c\u2500\u2500 configure.py        # Deployment configuration\n\u2502   \u251c\u2500\u2500 launch.py           # CodeBuild deployment\n\u2502   \u251c\u2500\u2500 invoke.py           # Agent invocation\n\u2502   \u251c\u2500\u2500 agents.py           # Agent discovery\n\u2502   \u251c\u2500\u2500 status.py           # Health checks\n\u2502   \u251c\u2500\u2500 logs.py             # CloudWatch logs\n\u2502   \u251c\u2500\u2500 memory.py           # Memory management\n\u2502   \u251c\u2500\u2500 identity.py         # OAuth providers\n\u2502   \u2514\u2500\u2500 session.py          # Session control\n\u251c\u2500\u2500 setup.py\n\u251c\u2500\u2500 pyproject.toml\n\u2514\u2500\u2500 README.md\n```\n\n---\n\n## Resources\n\n**Documentation:**\n- [Strands Agents Docs](https://strandsagents.com/)\n- [AWS Bedrock AgentCore Docs](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/)\n- [AgentCore API Reference](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/bedrock-agentcore-control.html)\n\n**Related Projects:**\n- [bedrock-agentcore-starter-toolkit](https://github.com/aws/bedrock-agentcore-starter-toolkit) - Official AWS toolkit\n- [strands-agents](https://github.com/strands-agents/sdk-python) - Strands SDK\n\n---\n\n## License\n\nApache2 License - see [LICENSE](LICENSE) file for details.\n\n---\n\n## Contributing\n\nIssues and PRs welcome at [github.com/cagataycali/strands-agentcore-tools](https://github.com/cagataycali/strands-agentcore-tools)\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Strands tools for AWS Bedrock AgentCore lifecycle management",
    "version": "0.1.1",
    "project_urls": {
        "Bug Tracker": "https://github.com/cagataycali/strands-agentcore-tools/issues",
        "Documentation": "https://github.com/cagataycali/strands-agentcore-tools",
        "Homepage": "https://github.com/cagataycali/strands-agentcore-tools",
        "Repository": "https://github.com/cagataycali/strands-agentcore-tools"
    },
    "split_keywords": [
        "aws",
        " bedrock",
        " agentcore",
        " strands",
        " ai",
        " agents",
        " tools"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8b227e7e139d9bee6f4aac07288a577e16222044a83162a0e6ccd1befc37c08a",
                "md5": "d59d2b3d1e103eae1fc5d0d696a0be39",
                "sha256": "e82c04b3db946a7f688718a703b5a4cd9f576503a4411a5e6c58aab54a0e4b79"
            },
            "downloads": -1,
            "filename": "strands_agentcore_tools-0.1.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "d59d2b3d1e103eae1fc5d0d696a0be39",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 67696,
            "upload_time": "2025-10-26T15:41:56",
            "upload_time_iso_8601": "2025-10-26T15:41:56.734847Z",
            "url": "https://files.pythonhosted.org/packages/8b/22/7e7e139d9bee6f4aac07288a577e16222044a83162a0e6ccd1befc37c08a/strands_agentcore_tools-0.1.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "3529e48fa8b49dadb7ab4504f6982a775045047dd09d68380ec9402dae0e3dd5",
                "md5": "11576f13043bdb428e58da4bc968415e",
                "sha256": "2252c3d3a9b3f82c91694a1555438dfec381dc1dc90c22543a95fe47a09c1148"
            },
            "downloads": -1,
            "filename": "strands_agentcore_tools-0.1.1.tar.gz",
            "has_sig": false,
            "md5_digest": "11576f13043bdb428e58da4bc968415e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 67764,
            "upload_time": "2025-10-26T15:41:58",
            "upload_time_iso_8601": "2025-10-26T15:41:58.102062Z",
            "url": "https://files.pythonhosted.org/packages/35/29/e48fa8b49dadb7ab4504f6982a775045047dd09d68380ec9402dae0e3dd5/strands_agentcore_tools-0.1.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-26 15:41:58",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "cagataycali",
    "github_project": "strands-agentcore-tools",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "bedrock-agentcore",
            "specs": []
        },
        {
            "name": "strands-agents",
            "specs": []
        },
        {
            "name": "strands-agents-tools",
            "specs": []
        },
        {
            "name": "pyyaml",
            "specs": []
        }
    ],
    "lcname": "strands-agentcore-tools"
}
        
Elapsed time: 1.44021s