Skip to main content

teamver-agent-sdk

Official Teamver Agent SDK for agent runtimes (e.g. OpenClaw, Hermes).

This directory is the source of truth. Publish to PyPI; do not fork it into ns-teamver-agents/packages.

One facade (TeamverAgent + AgentToolAdapter) for:

  • Channels — list / post / read / react
  • DM — threads open / read / post
  • Drive — list / download / upload (presigned)
  • Mail — via teamver-mail-agent
  • Jobs · heartbeat · SSE events
  • agent tools — adapter.list_tools() / adapter.dispatch(...)

Install

pip install teamver-agent-sdk
python -m teamver_agent_sdk required-env   # what a human must provide
python -m teamver_agent_sdk channels       # ACL list (SDK fallbacks only)
python -m teamver_agent_sdk files          # ACL shared-drive files (alias: drive-list)
python -m teamver_agent_sdk dm             # agent DM threads (alias: dm-list)

TEAMVER_AGENT_TOKEN may be tv_ak_* or an OpenClaw oc-sent-v….end sentinel.

Pulls in teamver-mail-agent and teamver-sdk-core. Python ≥ 3.11.

What a human must provide

Only TEAMVER_AGENT_TOKEN (tv_ak_*). Workspace id (W-…) and agent id (AG2-…) are discovered via GET /api/v2/ai-agents/me. Do not ask someone to copy those from the Teamver web UI.

GET /api/v2/ai-agents/me response example

Main BE (not Agents). 200:

{
  "workspace_id": "W-1a2b3c",
  "agent_id": "AG2-9f8e7d",
  "name": "한돌",
  "handle": "handol",
  "scopes": ["messages:read", "messages:write", "channels:read"],
  "channels": {
    "items": [
      {"channel_id": "CH-aaa111", "name": "한돌ch2", "visibility": "public"},
      {"channel_id": "CH-bbb222", "name": "한돌ch1", "visibility": "public"}
    ],
    "total": 2
  },
  "drives": {
    "items": [
      {
        "shared_drive_id": "SD-ccc333",
        "name": "한돌 Drive",
        "can_read": true,
        "can_write": true
      }
    ],
    "total": 1
  },
  "dm": {"applied_enabled": true},
  "report_channel_id": "CH-bbb222"
}

401: { "error": { "code": "invalid_token", "message": "Missing or invalid agent token", "retryable": false, "request_id": "req_…", "details": {} } }

Public contract: teamver-sdk-docs api-reference.

env purpose default
TEAMVER_AGENT_TOKEN channel/DM/Drive/jobs grant (tv_ak_*) required
TEAMVER_MAIN_API_BASE Main API host (no /api) https://api.teamver.com
TEAMVER_MAIL_AGENT_TOKEN mail agent token (tv_agent_*) — (mail only)
TEAMVER_AGENT_API_BASE Agents BE host (jobs / heartbeat) https://agent-api.teamver.com
TEAMVER_AGENTS_API_BASE alias of the above (OpenClaw openclaw.env) used if TEAMVER_AGENT_API_BASE is unset
TEAMVER_WORKSPACE_ID workspace id (W-…) optional — auto from token
TEAMVER_AGENT_ID agent id (AG2-…) optional — auto from token
TEAMVER_CONTROL_PLANE_TOKEN Agents whoami fallback (tv_cp_*) — (identity fallback only)

Staging: set TEAMVER_MAIN_API_BASE to the staging Main host.

Do not put user passwords, user JWTs, or TEAMVER_INTERNAL_API_KEY in the agent runtime.

Quick start

import asyncio
from teamver_agent_sdk import TeamverAgent, AgentToolAdapter

async def main():
    agent = await TeamverAgent.connect()  # token → /me → workspace + agent id
    who = await agent.whoami()
    channels = await agent.channel.list_channels()  # ACL accessible-channels

    await agent.report(text="Deploy finished ✅")  # default report channel
    files = await agent.drive.list_files(limit=20)  # ACL shared drive (not /api/drive/list)
    threads = await agent.dm.list_threads(limit=10)

    adapter = AgentToolAdapter(agent)
    await adapter.dispatch("teamver_whoami", {})

    await agent.aclose()

asyncio.run(main())

TeamverAgent() still works when ids are already in env. Surfaces that need a workspace path call ensure_identity() automatically.

CLI

python -m teamver_agent_sdk required-env   # print human prompt (no network)
python -m teamver_agent_sdk whoami         # GET /ai-agents/me
python -m teamver_agent_sdk doctor         # identity + channel/drive summary
python -m teamver_agent_sdk channels       # ACL channels
python -m teamver_agent_sdk files          # ACL shared-drive files

Documentation

Public docs: github.com/NeuralStudioKr/teamver-sdk-docs/tree/main/agent-sdk

License

MIT — see LICENSE.

Metadata

Release files for teamver-agent-sdk 0.6.10

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for teamver-agent-sdk 0.6.10
File Size Uploaded Provenance Actions
teamver_agent_sdk-0.6.10.tar.gz 60.6 kB Without provenance Details for teamver_agent_sdk-0.6.10.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for teamver-agent-sdk 0.6.10
File Interpreter ABI Platform Actions
teamver_agent_sdk-0.6.10-py3-none-any.whl Python 3 none any Details for teamver_agent_sdk-0.6.10-py3-none-any.whl

Total release size: 112.8 kB

Release files / teamver_agent_sdk-0.6.10.tar.gz

Download URL teamver_agent_sdk-0.6.10.tar.gz
Size 60.6 kB
Tags Source
SHA-256 checksum
How to use checksums
16913227c4668a6cad4da6976d8c96d992b0aa3f3d9c7d8a646c96e8469ad86d
BLAKE2b-256 checksum
How to use checksums
5b4999d775c83b2a555e18d89856828898eb226807083f110bcc2122fd4f4c9c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.9

Release files / teamver_agent_sdk-0.6.10-py3-none-any.whl

Download URL teamver_agent_sdk-0.6.10-py3-none-any.whl
Size 52.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cf1bbdaf906aeda4b5e41942998749fa632dc6766fd408edf64c96acda673524
BLAKE2b-256 checksum
How to use checksums
0b401ba830c55386caea01969b59acaf916878c66b351f6503c7f93090258030
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.9

Security for teamver-agent-sdk 0.6.10

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page