> ## Documentation Index
> Fetch the complete documentation index at: https://docs.grantex.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Strands Agents SDK

> Scope-enforced tools for Strands Agents SDK in TypeScript and Python.

## TypeScript Install

```bash theme={null}
npm install @grantex/strands@0.2.1 @grantex/sdk@0.8.2 @strands-agents/sdk zod
```

## TypeScript Quick Start

```typescript theme={null}
import { Agent } from '@strands-agents/sdk';
import { createGrantexTool } from '@grantex/strands';
import { z } from 'zod';

const readCalendar = createGrantexTool({
  name: 'read_calendar',
  description: 'Read upcoming calendar events',
  inputSchema: z.object({
    date: z.string(),
  }),
  grantToken,
  requiredScope: 'calendar:read',
  callback: async ({ date }) => getCalendarEvents(date),
});

const agent = new Agent({
  tools: [readCalendar],
});
```

The TypeScript helper verifies the grant token against JWKS before each tool invocation and checks its verified scopes. Set `online: true` with a Grantex client and `connector` to delegate enforcement to `client.enforce()`. Local verification alone does not prove current revocation. Capped calls require trusted amounts; see [migration](/migration-enforcement).

From version 0.2.0, both helpers also pass their `audience` option to
`client.enforce()` in online mode as the per-call grant token audience, as
offline verification already uses it. `enforce()` denies a token
that carries `aud` when no audience is expected (`audience_unconfigured`), so
set `audience` to the identifier your service is issued tokens for (see
[Grant token audience](/sdks/typescript/enforce#grant-token-audience)).

## Python Install

```bash theme={null}
python -m pip install grantex-strands==0.2.2 grantex==0.7.2 strands-agents
```

## Python Quick Start

```python theme={null}
from grantex_strands import create_grantex_tool

read_calendar = create_grantex_tool(
    name="read_calendar",
    description="Read upcoming calendar events",
    grant_token=grant_token,
    required_scope="calendar:read",
    func=get_calendar_events,
)
```

The Python helper verifies the grant token against JWKS and raises `PermissionError` if the required scope is missing.

## Requirements

* Node.js 22.12+ and SDK 0.8+ for `@grantex/strands`
* Python 3.11+ for `grantex-strands`
* Strands Agents SDK for the language you use

Public Python-wheel tests, registry hashes and normal pinned PyPI index
installations passed; see [release validation](/sdk-release-validation).

## Ownership

Grantex is owned by Orchestrum Technologies LLP. Inventor and owner: Sanjeev Kumar. Ownership contact: [sanjeev@orchestrum.in](mailto:sanjeev@orchestrum.in) or [mishra.sanjeev@gmail.com](mailto:mishra.sanjeev@gmail.com).

## Current Authority and Human Identity

Use the exact integration version and minimum primary SDK in [Release Status](/release-status).
Per-invocation issuer authority and trusted principal/agent binding are opt-in.
Configure the callback with the trusted issuer and derive identity from the host's
authenticated session; signature and scope checks alone do not prove current
revocation or human consent. See [SDK execution authority](/guides/sdk-execution-authority)
for configuration, denial behavior and manifest/decision/caps boundaries.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.