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

# SDKs

> Hone ships matching SDKs for Python and TypeScript, each with a Conversations surface for app-level agents and an MCP wrapper for MCP servers. Learn which to use.

Hone offers the same surface in Python and TypeScript, so the concepts you learn in one transfer directly to the other. Each SDK gives you two ways in:

* **Conversations** — instrument agent turns from your application code.
* **MCP** — wrap an MCP server so every call it handles is captured for you.

You can use both in the same organization. They write to the same ingestion pipeline and show up together in the dashboard.

## Which one do I use

<CardGroup cols={2}>
  <Card title="Conversations SDK" icon="comments">
    Reach for this when your agent is application code that produces a reply per turn. You control when a turn begins and ends, and you attach the user, the input, and the output.
  </Card>

  <Card title="MCP wrapper" icon="plug">
    Reach for this when your agent is an MCP server. A single wrapper call records every tool, resource, and prompt invocation without touching each handler.
  </Card>
</CardGroup>

Rules of thumb:

* If you already talk to the model directly and shape the conversation, use **Conversations**.
* If the model reaches your capabilities through MCP, use the **MCP wrapper** and get full tool-level coverage for one line.
* If both are true (an app-level agent that also exposes MCP tools), use both. Turns and tool calls link together into one event tree.

## Install

<CodeGroup>
  ```bash Python theme={null}
  pip install honeai
  ```

  ```bash TypeScript theme={null}
  npm install @hone/sdk
  ```
</CodeGroup>

## The shared shape

Both SDKs expose the same core calls. The naming follows each language's conventions (snake\_case in Python, camelCase in TypeScript), but the behavior is identical.

| Call                              | What it does                                                                         |
| --------------------------------- | ------------------------------------------------------------------------------------ |
| `init`                            | Configures the SDK with your API key and optional endpoint.                          |
| `begin` / `end`                   | Opens an interaction for a turn and closes it with the output and success flag.      |
| `track`                           | Records a completed turn in one fire-and-forget call.                                |
| `identify`                        | Attaches traits to a user id.                                                        |
| `set_property` / `set_properties` | Adds custom properties to the current interaction (for example model, tokens, cost). |
| MCP wrapper                       | Auto-captures every tool, resource, and prompt call on an MCP server.                |

## Full references

<CardGroup cols={3}>
  <Card title="Python SDK" icon="python" href="/python-sdk">
    Every call with runnable examples.
  </Card>

  <Card title="TypeScript SDK" icon="js" href="/typescript-sdk">
    Every call with runnable examples.
  </Card>

  <Card title="MCP" icon="plug" href="/mcp">
    Wrapping an MCP server in Python and TypeScript.
  </Card>
</CardGroup>
