Closed beta · run Worlds on your machineBrowse worlds →
Docs menu · Help Scout API

Worlds / Support

Help Scout API

A local Help Scout with mailboxes, conversations, threads, saved replies, tags and customer profiles. Test the agent that replies, adds notes and moves conversations to the right status.

Base path
/v2
Auth
OAuth 2.0 bearer token, the world key
Endpoints
13
Status
Active today

This reference previews the surface the Help Scout world serves in the closed beta. Paths mirror the public Help Scout API; the exact subset is confirmed when your workflow is scoped.

Connect

The run gives your agent these bindings. Keep your SDK; change only where it sends requests.

bindingmeaning
WORLDS_HELP_SCOUT_URLThis world's origin followed by /v2
WORLDS_API_KEYThe world key, accepted wherever Help Scout expects a credential
WORLDS_WORLD_IDThe isolated world's identity
js · fetch
const base = process.env.WORLDS_HELP_SCOUT_URL;
const headers = {
  Authorization: "Bearer " + process.env.WORLDS_API_KEY,
  "Content-Type": "application/json",
};

const res = await fetch(base + "/conversations?status=active", { headers });
const data = await res.json();

API reference

Conversations

Customer threads in a mailbox.

  • GET/v2/conversationsList conversations
  • POST/v2/conversationsCreate a conversation
  • GET/v2/conversations/{id}Get a conversation
  • PATCH/v2/conversations/{id}Update a conversation
  • PUT/v2/conversations/{id}/tagsUpdate tags
Fields · 6
idintegerConversation id
subjectstringSubject
statusstringactive, pending, closed or spam
mailboxIdintegerMailbox
assigneeobjectAssigned user
tagsarrayTags

Threads

Customer messages, agent replies and notes.

  • GET/v2/conversations/{id}/threadsList threads
  • POST/v2/conversations/{id}/replyCreate a reply
  • POST/v2/conversations/{id}/notesCreate a note
Fields · 4
idintegerThread id
typestringcustomer, reply, note and so on
bodystringHTML body
createdByobjectAuthor

Customers

People who write in.

  • GET/v2/customersList customers
  • POST/v2/customersCreate a customer
  • GET/v2/customers/{id}Get a customer
Fields · 5
idintegerCustomer id
firstNamestringFirst name
lastNamestringLast name
emailsarrayEmail addresses
organizationstringCompany

Mailboxes

Inboxes that hold conversations.

  • GET/v2/mailboxesList mailboxes
  • GET/v2/mailboxes/{id}Get a mailbox
Fields · 4
idintegerMailbox id
namestringMailbox name
emailstringAddress
slugstringURL slug

Test workflow

  1. Prepare. Select the Help Scout setup for your workflow and review its starting records, including conversations, threads, customers.
  2. Connect. Configure your agent with this world's URL and key using the SDK example. Check that it reaches the intended API before running a test.
  3. Define. Describe the task, expected final changes and records that must stay untouched. Keep expected outcomes separate from the agent's instructions.
  4. Run and inspect. Use the dashboard or your workflow's generated CLI setup. Review final records and changes, then rerun from the same starting setup with the relevant failure conditions. Use Deployment and CI to automate the same workflow.

What to verify

  • Dana Lee conversation has a reply thread and is pending
  • Moss & Co conversation in Billing, assigned to Sam, still active
  • Kim Park conversation closed
  • No note thread visible to customers
  • Lee Holdings profiles not merged

Test file

A task file names the jobs, the policy your agent is given and what the grader reads back from the world's final state. The agent never sees the expected outcomes.

yaml · worlds/tasks.yaml
# worlds/tasks.yaml · Help Scout
version: 2
connector: help-scout
seed: help-scout-starter
mode: isolated
policy: >
  Work the Support mailbox. Password issues get the Reset password saved reply
  and status pending. Refund requests move to Billing, assigned to Sam, with a
  note. Close only when the customer confirms it is fixed.
tasks:
  - id: reply-using-a-saved-reply-and-set-status-pending
    prompt: Reply using a saved reply and set status pending
  - id: add-a-private-note-and-assign-to-a-teammate
    prompt: Add a private note and assign to a teammate
  - id: close-conversations-once-the-customer-confirms
    prompt: Close conversations once the customer confirms
expected:
  - Dana Lee conversation has a reply thread and is pending
  - "Moss & Co conversation in Billing, assigned to Sam, still active"
  - Kim Park conversation closed
  - No note thread visible to customers
  - Lee Holdings profiles not merged
scenarios:
  - rate-limited
  - token-expired
  - workflow-runs

See Tasks and outcomes for every field, and Deployment and CI to run the file on every pull request.

Failure conditions

Each one fires before the handler, at the same step on every run.

conditionwhat the agent sees
rate-limited429 from the Mailbox API on the threads endpoint
token-expiredThe OAuth access token expires after two days and returns 401
workflow-runsAn automatic workflow changes the status after the agent's write
conversation-moved404 after the conversation is moved to Billing

Starting data

Start each run from the same records and relationships. The overview below describes the Help Scout starter; use the setup supplied for your workflow when preparing your own snapshot.

RecordsStarting setup
mailboxesSupport and Billing
conversations35 across active, pending and closed
customers40 profiles, some with two email addresses
saved replies10, including Refund timeline and Reset password
workflows2 automatic workflows on tag refund

The record shapes below reuse this world's API field definitions. They show illustrative values and placeholders, not an importable seed. API responses and seed input can differ; include all required records and references in the accepted import format for your workflow.

Conversations records

Conversations

Customer threads in a mailbox.

FieldTypeMeaning / relationship
idintegerConversation id
subjectstringSubject
statusstringactive, pending, closed or spam
mailboxIdintegerMailbox
assigneeobjectAssigned user
tagsarrayTags
json · illustrative record shape
{
  "id": 1,
  "subject": "<Subject>",
  "status": "<active, pending, closed or spam>",
  "mailboxId": 1,
  "assignee": {},
  "tags": []
}

See conversations operations

Threads records

Threads

Customer messages, agent replies and notes.

FieldTypeMeaning / relationship
idintegerThread id
typestringcustomer, reply, note and so on
bodystringHTML body
createdByobjectAuthor
json · illustrative record shape
{
  "id": 1,
  "type": "<customer, reply, note and so on>",
  "body": "<HTML body>",
  "createdBy": {}
}

See threads operations

Customers records

Customers

People who write in.

FieldTypeMeaning / relationship
idintegerCustomer id
firstNamestringFirst name
lastNamestringLast name
emailsarrayEmail addresses
organizationstringCompany
json · illustrative record shape
{
  "id": 1,
  "firstName": "<First name>",
  "lastName": "<Last name>",
  "emails": [],
  "organization": "<Company>"
}

See customers operations

Mailboxes records

Mailboxes

Inboxes that hold conversations.

FieldTypeMeaning / relationship
idintegerMailbox id
namestringMailbox name
emailstringAddress
slugstringURL slug
json · illustrative record shape
{
  "id": 1,
  "name": "<Mailbox name>",
  "email": "person@example.test",
  "slug": "<URL slug>"
}

See mailboxes operations

See the Help Scout world in the catalog