{
  "markdown": "# Avala TypeScript SDK + MCP Server\n\n[![npm: @avala-ai/sdk](https://img.shields.io/npm/v/@avala-ai/sdk)](https://www.npmjs.com/package/@avala-ai/sdk)\n[![npm: @avala-ai/mcp-server](https://img.shields.io/npm/v/@avala-ai/mcp-server)](https://www.npmjs.com/package/@avala-ai/mcp-server)\n[![CI](https://github.com/avala-ai/avala-sdk-ts/actions/workflows/ci.yml/badge.svg)](https://github.com/avala-ai/avala-sdk-ts/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nOfficial TypeScript SDK and MCP server for the [Avala API](https://avala.ai/docs) — the open Physical AI Data Platform. Programmatically manage sensor datasets (MCAP, LiDAR, video), annotation projects, exports, tasks, and fleet devices.\n\n> **Note:** This repository is a read-only mirror. To report bugs or request features, please [open an issue](https://github.com/avala-ai/avala-sdk-ts/issues). See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\n\n## Packages\n\n| Package | Version | Description |\n|---------|---------|-------------|\n| [`@avala-ai/sdk`](./packages/sdk) | 0.5.0 | TypeScript SDK for the Avala API |\n| [`@avala-ai/mcp-server`](./packages/mcp-server) | 0.5.0 | MCP server for AI assistant integrations |\n\n## SDK Quick Start\n\n```bash\nnpm install @avala-ai/sdk\n```\n\n```typescript\nimport Avala from \"@avala-ai/sdk\";\n\nconst avala = new Avala();  // reads AVALA_API_KEY env var\n\n// List datasets\nconst page = await avala.datasets.list({ limit: 10 });\npage.items.forEach(d => console.log(d.uid, d.name));\n\n// Get a specific dataset\nconst dataset = await avala.datasets.get(\"dataset-uid\");\n\n// Create an export\nconst exp = await avala.exports.create({ project: \"project-uid\" });\nconsole.log(exp.uid, exp.status);\n\n// List tasks with filters\nconst tasks = await avala.tasks.list({ project: \"project-uid\", status: \"completed\" });\n```\n\n### Authentication\n\nThe client reads your API key from the `AVALA_API_KEY` environment variable by default:\n\n```bash\nexport AVALA_API_KEY=\"avk_your_api_key\"\n```\n\nOr pass it explicitly:\n\n```typescript\nconst avala = new Avala({ apiKey: \"avk_your_api_key\" });\n```\n\nDelegated services may instead pass an OAuth access token issued specifically\nfor the Avala API:\n\n```typescript\nconst avala = new Avala({ accessToken: apiAudienceAccessToken });\n```\n\n`apiKey` and `accessToken` are mutually exclusive. Do not pass an ID token or a\ntoken issued for another resource (for example, an MCP-server token); exchange\nit for an Avala API-audience token first.\n\n### Pagination\n\nAll `.list()` methods return a `CursorPage` with `.items`, `.hasMore`, and `.nextCursor`:\n\n```typescript\nlet page = await avala.datasets.list({ limit: 20 });\n\nfor (const dataset of page.items) {\n  console.log(dataset.name);\n}\n\nif (page.hasMore) {\n  const nextPage = await avala.datasets.list({ cursor: page.nextCursor });\n}\n```\n\n### Error Handling\n\n```typescript\nimport Avala, { AvalaError, NotFoundError, RateLimitError } from \"@avala-ai/sdk\";\n\ntry {\n  const dataset = await avala.datasets.get(\"nonexistent\");\n} catch (e) {\n  if (e instanceof NotFoundError) {\n    console.log(\"Dataset not found\");\n  } else if (e instanceof RateLimitError) {\n    console.log(\"Rate limited\");\n  } else if (e instanceof AvalaError) {\n    console.log(`API error: ${e.message}`);\n  }\n}\n```\n\n### Available Resources\n\n| Resource | Methods | Description |\n|----------|---------|-------------|\n| `avala.permissions` | `get()` | Discover the current credential's scopes, capabilities, and toolsets |\n| `avala.datasets` | `list()`, `get(uid)` | Browse and inspect datasets |\n| `avala.projects` | `list()`, `get(uid)` | Browse and inspect projects |\n| `avala.exports` | `list()`, `get(uid)`, `create()` | Create and manage annotation exports |\n| `avala.tasks` | `list()`, `get(uid)` | Browse tasks with project/status filters |\n| `avala.storageConfigs` | `list()`, `create()`, `test()`, `delete()` | Manage cloud storage connections |\n\n## MCP Server\n\nThe `@avala-ai/mcp-server` package provides an MCP server that lets AI assistants (Claude, etc.) interact with your Avala data.\n\n```bash\nnpm install -g @avala-ai/mcp-server\navala-mcp-server\n```\n\nSee [MCP Setup Guide](https://avala.ai/docs/integrations/mcp-setup) for configuration details.\n\n## Development\n\nThis is a pnpm monorepo. To get started:\n\n```bash\npnpm install\npnpm -r build\npnpm -r test\n```\n\n## Documentation\n\n- [TypeScript SDK Guide](https://avala.ai/docs/sdks/typescript)\n- [MCP Setup Guide](https://avala.ai/docs/integrations/mcp-setup)\n- [API Reference](https://avala.ai/docs/api-reference/overview)\n- [Quickstart](https://avala.ai/docs/getting-started/quickstart)\n- [Examples](https://avala.ai/docs/resources/examples)\n\n## License\n\nMIT - see [LICENSE](LICENSE) for details.\n",
  "bytes": 4764,
  "sha": "be4273692e63a890c4c89c320e8ccf6309a4de9bf5274778b9864eca05536d4f",
  "repo_slug": "avala-ai/avala-sdk-ts",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_avala_ai_avala_241f4a72/readme"
}