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

# Create a Managed Agent

> Create an agent in the dashboard or from code, generate a starting point from an idea, files or a website, and write instructions that work.

A managed agent is a Wassist-hosted AI with your instructions, model and tools. Wassist runs it on every message routed to it. For a two-minute walkthrough, start with the [hello world](/quickstart/managed-agent).

## In the dashboard

<Steps>
  <Step title="Create it">
    Open **Agents** and click **New Agent**. It's created straight away and opens on its page.
  </Step>

  <Step title="Write the instructions">
    Set the name and description, then fill in **Instructions**, which is the system prompt. See [writing instructions](#writing-instructions) below.
  </Step>

  <Step title="Pick a model">
    Choose the model and **thinking effort**. Low effort replies fastest, and higher effort thinks harder before answering. Changing these needs a paid plan.
  </Step>

  <Step title="Save and test">
    Click **Save**, then try it in **Test Chat** on the agent's page. To test on your phone, [route your sandbox chat](/quickstart/managed-agent#2-connect-it-to-the-sandbox) to the agent.
  </Step>
</Steps>

Then give it abilities under **Capabilities**. See [Configure tools](/guides/configure-tools).

## From code

```ts theme={null}
import { Wassist } from "@wassist/sdk";

const wassist = new Wassist({ apiKey: process.env.WASSIST_API_KEY });

const agent = await wassist.agents.create({ name: "Acme Support" });

await wassist.agents.update(agent.id, {
  systemPrompt: "You are Acme's support assistant…",
  firstMessage: "Hi! I'm Acme's assistant. What can I help with?",
  icebreakers: ["Track my order", "Returns", "Sizing help"], // up to 4
  reasoningEffort: "low",
});
```

## Generate a starting point

Don't want to start from a blank page? Each of these creates a ready-to-edit agent in your organization.

<Tabs>
  <Tab title="From a Shopify store">
    Install the [Shopify app](/guides/shopify/install-app). It builds a sales agent from your store's catalogue, policies and brand, with product search, order lookup and storefront buttons included.
  </Tab>

  <Tab title="From files">
    Upload PDFs, Word or text files. The agent answers from them.

    ```bash theme={null}
    curl https://backend.wassist.app/api/v1/onboarding/knowledge-base/ \
      -H "X-API-Key: $WASSIST_API_KEY" \
      -F "name=Acme" \
      -F "files=@returns-policy.pdf" \
      -F "files=@size-guide.pdf"
    ```

    You get an agent called `AcmeSupport` with the files attached as documents (they're processed in the background) and a short support prompt to build on.
  </Tab>

  <Tab title="From a website">
    Give the agent a **website tool**, and it reads your site live whenever a question needs it:

    ```ts theme={null}
    const agent = await wassist.agents.create({ name: "Acme Support" });

    await wassist.agents.update(agent.id, {
      systemPrompt: [
        "You are Acme Support, the assistant for acme.com.",
        "Answer questions about Acme using the website tool. If the answer isn't on the site, say so. Never guess.",
      ].join("\n"),
      websiteTools: [{ url: "https://acme.com", prompt: "Search the site to answer the customer's question" }],
    });
    ```

    In the dashboard, the same thing is **Capabilities → Website Tools → Add Website Tool**.
  </Tab>

  <Tab title="From an idea">
    Describe the agent in a sentence or two. Wassist picks a name, writes a first message and draws a logo:

    ```bash theme={null}
    curl https://backend.wassist.app/api/v1/onboarding/idea/ \
      -H "X-API-Key: $WASSIST_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"idea": "A reservation assistant for Bella Italia, a family Italian restaurant in Chicago"}'
    ```

    It doesn't write the instructions, so add those next.
  </Tab>
</Tabs>

All of these return the full agent. Its `id` is what you connect to a number or to your sandbox chat.

## Writing instructions

The instructions (the system prompt) matter more than anything else you configure. Cover four things:

<AccordionGroup>
  <Accordion title="Scope: what it handles, and what it doesn't" icon="bullseye">
    > You only handle orders, returns and sizing. For anything about wholesale, point people to [trade@acme.com](mailto:trade@acme.com).
  </Accordion>

  <Accordion title="Facts it can't look up" icon="list-check">
    Hours, locations, prices, policies. Anything a tool or website tool doesn't already provide.

    > We're open Monday to Friday, 9am to 5pm UK time. UK shipping is free over £50.
  </Accordion>

  <Accordion title="Voice" icon="face-smile">
    WhatsApp is a chat app, so ask for short messages.

    > Friendly and casual. Two or three short sentences at most. The occasional emoji is fine. No corporate jargon.
  </Accordion>

  <Accordion title="What to do when it's stuck" icon="life-ring">
    > If you can't help, or the customer asks for a person, hand over to support. Never invent order details.
  </Accordion>
</AccordionGroup>

<Tabs>
  <Tab title="Customer support">
    ```text theme={null}
    You are the support assistant for TechGadgets, an electronics retailer.

    You help with:
    - Returns: 30 days, original packaging required
    - Order tracking: use the check_order_status tool. Order numbers look like TG-12345
    - Warranty: 1 year manufacturer warranty on every item

    Be patient and professional. Keep replies short.
    If a customer is upset or asks for a person, hand over to support.
    ```
  </Tab>

  <Tab title="Restaurant">
    ```text theme={null}
    You are the host for Bella Italia, a family-owned Italian restaurant in Chicago.
    We're open Tuesday to Sunday, 5pm to 10pm, and closed Mondays.
    We're at 456 Oak Street, with valet parking.

    Help guests with table bookings (up to 60 guests) and menu questions.
    There are vegetarian and gluten-free options on the menu.
    Be warm and welcoming, like a friendly host.
    ```
  </Tab>

  <Tab title="Creator">
    ```text theme={null}
    You are Alex, a fitness coach, speaking in the first person.
    Share my approach: functional fitness and habits that last.
    Point serious enquiries to alexfitness.com/book.
    Never give medical or nutrition advice.
    Be energetic and encouraging.
    ```
  </Tab>
</Tabs>

## What's next

<CardGroup cols={2}>
  <Card title="Configure tools" icon="plug" href="/guides/configure-tools">
    Connect your APIs, MCP servers and Apps.
  </Card>

  <Card title="Deploy" icon="rocket" href="/guides/deploy-agent">
    Put the agent on your own WhatsApp number.
  </Card>
</CardGroup>
