> ## 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.

# Quickstart

> Send your first event to Hone and see it in the dashboard in under five minutes. Two paths: the Conversations SDK for app-level agents, or the MCP wrapper for MCP servers.

By the end of this page you will have one live event in your Hone dashboard. Pick whichever path matches how your agent is built.

## Before you start

<Steps>
  <Step title="Get an API key">
    In the Hone dashboard, open **Settings → API Keys** and create a key. It looks like `sk_` followed by a long hex string. Keep it out of source control. See [Authentication](/authentication) for the full model.
  </Step>

  <Step title="Install an SDK">
    <CodeGroup>
      ```bash Python theme={null}
      pip install honeai
      ```

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

## Path A — Conversations SDK

Use this when your agent runs as regular application code and you want to record each turn (the user's input and your agent's output). Wrap the turn with `begin()` and `end()`.

<Tabs>
  <Tab title="Python">
    ```python theme={null}
    import honeai

    honeai.init("sk_your_key_here")

    interaction = honeai.begin(
        user_id="user_8f21",
        agent_name="support-bot",
        input="How do I reset my password?",
    )

    # ... run your agent, produce a reply ...
    reply = "Head to Settings, then Security, and choose Reset password."

    interaction.end(reply, success=True)
    ```
  </Tab>

  <Tab title="TypeScript">
    ```typescript theme={null}
    import { init, begin } from "@hone/sdk";

    init("sk_your_key_here");

    const interaction = begin({
      userId: "user_8f21",
      agentName: "support-bot",
      input: "How do I reset my password?",
    });

    // ... run your agent, produce a reply ...
    const reply = "Head to Settings, then Security, and choose Reset password.";

    interaction.end(reply, { success: true });
    ```
  </Tab>
</Tabs>

<Note>
  If you would rather not manage an interaction object, `track()` records a completed turn in a single fire-and-forget call. See the [Python](/python-sdk) and [TypeScript](/typescript-sdk) references.
</Note>

## Path B — MCP server

Use this when your agent is exposed as an MCP server. One wrapper call auto-captures every tool, resource, and prompt invocation. You do not have to instrument each handler.

<Tabs>
  <Tab title="Python">
    ```python theme={null}
    import honeai.mcp
    from mcp.server.fastmcp import FastMCP

    server = FastMCP("inventory-tools")

    # ... register your tools, resources, and prompts on `server` ...

    honeai.mcp.track(server, api_key="sk_your_key_here")

    server.run()
    ```
  </Tab>

  <Tab title="TypeScript">
    ```typescript theme={null}
    import { trackMCP } from "@hone/sdk";
    import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";

    const server = new McpServer({ name: "inventory-tools", version: "1.0.0" });

    // ... register your tools, resources, and prompts on `server` ...

    trackMCP(server, "sk_your_key_here");

    // start the server as usual
    ```
  </Tab>
</Tabs>

## Verify

1. Trigger one turn (Path A) or call one tool (Path B).
2. Open the Hone dashboard and go to **Raw Logs** — your call appears as a row with its operation name, status, latency, and timestamp.
3. Expand the row to inspect the input and output payloads.
4. For Path A, the turn also shows up under **User Stories**, grouped by the `user_id` you passed.

If you see the row, ingestion is working. Nothing else to configure.

<Note>
  Events can take a few seconds to appear while Hone processes the stream. If nothing shows up after a minute, confirm your API key is valid and that you are pointed at the right endpoint (`https://api.hone.dev` by default). See [Authentication](/authentication).
</Note>

## Where to go next

<CardGroup cols={2}>
  <Card title="SDK overview" icon="code" href="/sdks">
    Compare the Conversations and MCP paths and decide what to reach for.
  </Card>

  <Card title="Data governance" icon="shield-halved" href="/data-governance">
    Keep identifiers pseudonymous and scrub sensitive content before it is sent.
  </Card>
</CardGroup>
