Guided sleep, relaxation, breathing and focus sessions in your language. Find and play a session.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Use this when the user wants to connect this chat to their 2hives app or website account so their progress is in one place. Not for medical questions, emergencies or a crisis. Not for general chat about meditation.
The token from keep_progress for this conversation; leave empty if there is none.
The 8 digits shown in the 2hives app or on 2hives.com/account/assistant. Leave out to be told how to get one.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http meditation https://2hives.com/mcp/full/mcp-registry
Use this when the user wants to connect this chat to their 2hives app or website account so their progress is in one place. Not for medical questions, emergencies or a crisis. Not for general chat about meditation.
| Argument | Type | Description |
|---|---|---|
| tap | string | The token from keep_progress for this conversation; leave empty if there is none. |
| code | string | The 8 digits shown in the 2hives app or on 2hives.com/account/assistant. Leave out to be told how to get one. |
{
"type": "object",
"required": [],
"properties": {
"tap": {
"type": "string",
"default": "",
"examples": [
""
],
"description": "The token from keep_progress for this conversation; leave empty if there is none."
},
"code": {
"type": "string",
"examples": [
"482913"
],
"description": "The 8 digits shown in the 2hives app or on 2hives.com/account/assistant. Leave out to be told how to get one."
}
},
"additionalProperties": false
}Use this when the user wants to look through everything 2hives has for a topic or language, rather than get one session. Not for medical questions, emergencies or a crisis. Not for general chat about meditation.
| Argument | Type | Description |
|---|---|---|
| kind | string | Limit to one kind: sleep, calm, breath (breathing), focus, body (body scan), nature (nature sounds with a voice). Default all. |
| page | integer | Page number, starting at 1. |
| language | string | Audio language as a BCP-47 code (en, es, pt-BR, fr, it, ja, hi, ko, hu, or any other such as pl). Always pass the language the user writes in. If the language is not available the answer says so and gives the closest live one. hi, ko and hu are beta. |
{
"type": "object",
"required": [],
"properties": {
"kind": {
"enum": [
"all",
"sleep",
"calm",
"breath",
"focus",
"body",
"nature"
],
"type": "string",
"default": "all",
"examples": [
"all",
"sleep"
],
"description": "Limit to one kind: sleep, calm, breath (breathing), focus, body (body scan), nature (nature sounds with a voice). Default all."
},
"page": {
"type": "integer",
"default": 1,
"minimum": 1,
"examples": [
1
],
"description": "Page number, starting at 1."
},
"language": {
"type": "string",
"examples": [
"hu",
"pl"
],
"description": "Audio language as a BCP-47 code (en, es, pt-BR, fr, it, ja, hi, ko, hu, or any other such as pl). Always pass the language the user writes in. If the language is not available the answer says so and gives the closest live one. hi, ko and hu are beta."
}
},
"additionalProperties": false
}Use this when the user asks what today's challenge session is, or how they are doing in the challenge. Not for medical questions, emergencies or a crisis. Not for general chat about meditation.
| Argument | Type | Description |
|---|---|---|
| tap | string | The token from keep_progress for this conversation; leave empty if there is none. |
| timezone | string | The user's IANA time zone, if known. Default UTC. |
{
"type": "object",
"required": [],
"properties": {
"tap": {
"type": "string",
"default": "",
"examples": [
""
],
"description": "The token from keep_progress for this conversation; leave empty if there is none."
},
"timezone": {
"type": "string",
"examples": [
"Australia/Melbourne"
],
"description": "The user's IANA time zone, if known. Default UTC."
}
},
"additionalProperties": false
}Use this when an adult says a named local business would like a short spoken sponsor line before sessions near it. Not for medical questions, emergencies or a crisis. Not for general chat about meditation. Not for personal listening. It records interest only: the business agrees on its own link, never in the chat.
| Argument | Type | Description |
|---|---|---|
| tap | string | The 18+ tap token returned by keep_progress for this conversation; leave empty if there is none. |
| suburb* | string | Suburb. |
| country | string | ISO country code. |
| business* | string | Business name. |
| contact_email | string | Optional contact address of the business. |
{
"type": "object",
"required": [
"business",
"suburb"
],
"properties": {
"tap": {
"type": "string",
"default": "",
"examples": [
""
],
"description": "The 18+ tap token returned by keep_progress for this conversation; leave empty if there is none."
},
"suburb": {
"type": "string",
"examples": [
"Highett"
],
"description": "Suburb."
},
"country": {
"type": "string",
"examples": [
"AU"
],
"description": "ISO country code."
},
"business": {
"type": "string",
"examples": [
"Joe''s Cafe"
],
"description": "Business name."
},
"contact_email": {
"type": "string",
"examples": [
"[email protected]"
],
"description": "Optional contact address of the business."
}
},
"additionalProperties": false
}Use this when the user wants a session made for them from a short menu, choosing the kind, the length, the voice and a theme, for example a quiet 5 minute session with a female voice. Not for medical questions, emergencies or a crisis. Not for free-text wishes (use create_personal_session_text, which needs a signed-in adult account): pick from the menus.
| Argument | Type | Description |
|---|---|---|
| kind | string | What the session is for. Pick from the user's words: sleep (sleep audio, a nap), calm (wind down, before a meeting), breath (breathing), focus (study, work), body (body scan), nature (nature sounds with a voice). Default: calm. |
| theme | string | Theme from a fixed list: quiet (few words), breath, body, nature (nature sounds), pause (a short pause). Default quiet. |
| voice | string | Voice preference. Default any. |
| language | string | Audio language as a BCP-47 code (en, es, pt-BR, fr, it, ja, hi, ko, hu, or any other such as pl). Always pass the language the user writes in. If the language is not available the answer says so and gives the closest live one. hi, ko and hu are beta. |
| length_min | integer | Length in minutes, 3 to 20 (longer sessions are on 2hives.com). Default 10 when the user gives none. |
{
"type": "object",
"required": [],
"properties": {
"kind": {
"enum": [
"sleep",
"calm",
"breath",
"focus",
"body",
"nature"
],
"type": "string",
"default": "calm",
"examples": [
"sleep",
"calm"
],
"description": "What the session is for. Pick from the user's words: sleep (sleep audio, a nap), calm (wind down, before a meeting), breath (breathing), focus (study, work), body (body scan), nature (nature sounds with a voice). Default: calm."
},
"theme": {
"enum": [
"quiet",
"breath",
"body",
"nature",
"pause"
],
"type": "string",
"default": "quiet",
"examples": [
"quiet"
],
"description": "Theme from a fixed list: quiet (few words), breath, body, nature (nature sounds), pause (a short pause). Default quiet."
},
"voice": {
"enum": [
"any",
"female",
"male"
],
"type": "string",
"default": "any",
"examples": [
"any"
],
"description": "Voice preference. Default any."
},
"language": {
"type": "string",
"examples": [
"hu",
"pl"
],
"description": "Audio language as a BCP-47 code (en, es, pt-BR, fr, it, ja, hi, ko, hu, or any other such as pl). Always pass the language the user writes in. If the language is not available the answer says so and gives the closest live one. hi, ko and hu are beta."
},
"length_min": {
"type": "integer",
"default": 10,
"maximum": 20,
"minimum": 3,
"examples": [
5,
10,
20
],
"description": "Length in minutes, 3 to 20 (longer sessions are on 2hives.com). Default 10 when the user gives none."
}
},
"additionalProperties": false
}Use this when an adult describes in their own words what a session should be about and wants one made just for them, in a host that allows free text. Not for medical questions, emergencies or a crisis. Not for general chat about meditation. Not for choosing an existing session (use find_sessions).
| Argument | Type | Description |
|---|---|---|
| tap | string | The 18+ tap token returned by keep_progress for this conversation; leave empty if there is none. |
| wish* | string | The listener''s wish in their own words, up to 200 characters, no personal details needed. |
| length_min | integer | Length in minutes, 5 or 10. |
{
"type": "object",
"required": [
"wish"
],
"properties": {
"tap": {
"type": "string",
"default": "",
"examples": [
""
],
"description": "The 18+ tap token returned by keep_progress for this conversation; leave empty if there is none."
},
"wish": {
"type": "string",
"examples": [
"a short session to let go of a hard day"
],
"description": "The listener''s wish in their own words, up to 200 characters, no personal details needed."
},
"length_min": {
"enum": [
5,
10
],
"type": "integer",
"examples": [
10
],
"description": "Length in minutes, 5 or 10."
}
},
"additionalProperties": false
}Use this when the user wants to start a team of their own for friends, family or colleagues. Not for medical questions, emergencies or a crisis. Not for general chat about meditation.
| Argument | Type | Description |
|---|---|---|
| tap | string | The token from keep_progress for this conversation; leave empty if there is none. |
| name* | string | The team name. |
{
"type": "object",
"required": [
"name"
],
"properties": {
"tap": {
"type": "string",
"default": "",
"examples": [
""
],
"description": "The token from keep_progress for this conversation; leave empty if there is none."
},
"name": {
"type": "string",
"examples": [
"Morning Hive"
],
"description": "The team name."
}
},
"additionalProperties": false
}Use this when the user asks to delete their 2hives progress or data. Ask once, in the chat, before calling it. Not for medical questions, emergencies or a crisis. Not without the user's clear yes.
| Argument | Type | Description |
|---|---|---|
| tap | string | The token from keep_progress for this conversation; leave empty if there is none. |
| confirm | boolean | True only after the user said yes to deleting. |
{
"type": "object",
"required": [],
"properties": {
"tap": {
"type": "string",
"default": "",
"examples": [
""
],
"description": "The token from keep_progress for this conversation; leave empty if there is none."
},
"confirm": {
"type": "boolean",
"default": false,
"examples": [
true
],
"description": "True only after the user said yes to deleting."
}
},
"additionalProperties": false
}Use this when the user wants a guided breathing exercise: a breathing break, box breathing, slow breathing, or a few minutes of breath before a meeting. Plays a short calm session. Not for medical questions, emergencies or a crisis. Not for general chat about meditation. Not for sleep audio (use find_sleep_sessions) or for focus (use find_focus).
| Argument | Type | Description |
|---|---|---|
| voice | string | Voice preference. Default any. |
| language | string | Audio language as a BCP-47 code (en, es, pt-BR, fr, it, ja, hi, ko, hu, or any other such as pl). Always pass the language the user writes in. If the language is not available the answer says so and gives the closest live one. hi, ko and hu are beta. |
| length_min | integer | Length in minutes, 3 to 60. Default 10 when the user gives none. |
{
"type": "object",
"required": [],
"properties": {
"voice": {
"enum": [
"any",
"female",
"male"
],
"type": "string",
"default": "any",
"examples": [
"any"
],
"description": "Voice preference. Default any."
},
"language": {
"type": "string",
"examples": [
"hu",
"pl"
],
"description": "Audio language as a BCP-47 code (en, es, pt-BR, fr, it, ja, hi, ko, hu, or any other such as pl). Always pass the language the user writes in. If the language is not available the answer says so and gives the closest live one. hi, ko and hu are beta."
},
"length_min": {
"type": "integer",
"default": 10,
"maximum": 60,
"minimum": 3,
"examples": [
5,
10,
20
],
"description": "Length in minutes, 3 to 60. Default 10 when the user gives none."
}
},
"additionalProperties": false
}Use this when the user wants to concentrate or get into work: a focus session before studying, a study break, deep work, before an exam, a short reset between tasks, or help to stop procrastinating and start. Not for medical questions, emergencies or a crisis. Not for general chat about meditation. Not for sleep audio (use find_sleep_sessions) or for breathing exercises (use find_breathing).
| Argument | Type | Description |
|---|---|---|
| voice | string | Voice preference. Default any. |
| language | string | Audio language as a BCP-47 code (en, es, pt-BR, fr, it, ja, hi, ko, hu, or any other such as pl). Always pass the language the user writes in. If the language is not available the answer says so and gives the closest live one. hi, ko and hu are beta. |
| length_min | integer | Length in minutes, 3 to 60. Default 10 when the user gives none. |
{
"type": "object",
"required": [],
"properties": {
"voice": {
"enum": [
"any",
"female",
"male"
],
"type": "string",
"default": "any",
"examples": [
"any"
],
"description": "Voice preference. Default any."
},
"language": {
"type": "string",
"examples": [
"hu",
"pl"
],
"description": "Audio language as a BCP-47 code (en, es, pt-BR, fr, it, ja, hi, ko, hu, or any other such as pl). Always pass the language the user writes in. If the language is not available the answer says so and gives the closest live one. hi, ko and hu are beta."
},
"length_min": {
"type": "integer",
"default": 10,
"maximum": 60,
"minimum": 3,
"examples": [
5,
10,
20
],
"description": "Length in minutes, 3 to 60. Default 10 when the user gives none."
}
},
"additionalProperties": false
}Use this when the user wants to meditate with other people: a live group session or venue near them, or asks to start a group in their area. Not for medical questions, emergencies or a crisis. Not for general chat about meditation. Not for exact addresses: a suburb, postcode or city is enough.
| Argument | Type | Description |
|---|---|---|
| place | string | Suburb, postcode or city. Coarse on purpose; never an exact address. |
| language | string | Audio language as a BCP-47 code (en, es, pt-BR, fr, it, ja, hi, ko, hu, or any other such as pl). Always pass the language the user writes in. If the language is not available the answer says so and gives the closest live one. hi, ko and hu are beta. |
| radius_km | integer | Search radius in kilometres. Default 10. |
{
"type": "object",
"required": [],
"properties": {
"place": {
"type": "string",
"examples": [
"Brunswick",
"3056"
],
"description": "Suburb, postcode or city. Coarse on purpose; never an exact address."
},
"language": {
"type": "string",
"examples": [
"hu",
"pl"
],
"description": "Audio language as a BCP-47 code (en, es, pt-BR, fr, it, ja, hi, ko, hu, or any other such as pl). Always pass the language the user writes in. If the language is not available the answer says so and gives the closest live one. hi, ko and hu are beta."
},
"radius_km": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1,
"examples": [
10
],
"description": "Search radius in kilometres. Default 10."
}
},
"additionalProperties": false
}Use this when the user asks for a prayer, a rosary, an evening prayer or a Bible reading. 2hives has no prayer sessions yet: the answer says so honestly and offers a quiet session without words. Not for medical questions, emergencies or a crisis. Not for general chat about meditation. Not for sleep audio (use find_sleep_sessions) or for breathing exercises (use find_breathing).
| Argument | Type | Description |
|---|---|---|
| voice | string | Voice preference. Default any. |
| language | string | Audio language as a BCP-47 code (en, es, pt-BR, fr, it, ja, hi, ko, hu, or any other such as pl). Always pass the language the user writes in. If the language is not available the answer says so and gives the closest live one. hi, ko and hu are beta. |
| length_min | integer | Length in minutes, 3 to 60. Default 10 when the user gives none. |
{
"type": "object",
"required": [],
"properties": {
"voice": {
"enum": [
"any",
"female",
"male"
],
"type": "string",
"default": "any",
"examples": [
"any"
],
"description": "Voice preference. Default any."
},
"language": {
"type": "string",
"examples": [
"hu",
"pl"
],
"description": "Audio language as a BCP-47 code (en, es, pt-BR, fr, it, ja, hi, ko, hu, or any other such as pl). Always pass the language the user writes in. If the language is not available the answer says so and gives the closest live one. hi, ko and hu are beta."
},
"length_min": {
"type": "integer",
"default": 10,
"maximum": 60,
"minimum": 3,
"examples": [
5,
10,
20
],
"description": "Length in minutes, 3 to 60. Default 10 when the user gives none."
}
},
"additionalProperties": false
}Use this when the user wants something to listen to for sleep, relaxing, breathing or focus and has not named a session: an evening wind-down, sleep audio, a nap, a breathing break, focus, a study break, a reset before a meeting or exam, a body scan, gratitude, or nature sounds with a gentle voice. Not for medical questions, emergencies or a crisis. Not for general chat about meditation.
| Argument | Type | Description |
|---|---|---|
| kind | string | What the session is for. Pick from the user's words: sleep (sleep audio, a nap), calm (wind down, before a meeting), breath (breathing), focus (study, work), body (body scan), nature (nature sounds with a voice). Default: calm. |
| music | boolean | Background music on or off. Default true. |
| voice | string | Voice preference. Default any. |
| language | string | Audio language as a BCP-47 code (en, es, pt-BR, fr, it, ja, hi, ko, hu, or any other such as pl). Always pass the language the user writes in. If the language is not available the answer says so and gives the closest live one. hi, ko and hu are beta. |
| length_min | integer | Length in minutes, 3 to 60. Default 10 when the user gives none. |
{
"type": "object",
"required": [],
"properties": {
"kind": {
"enum": [
"sleep",
"calm",
"breath",
"focus",
"body",
"nature"
],
"type": "string",
"default": "calm",
"examples": [
"sleep",
"calm"
],
"description": "What the session is for. Pick from the user's words: sleep (sleep audio, a nap), calm (wind down, before a meeting), breath (breathing), focus (study, work), body (body scan), nature (nature sounds with a voice). Default: calm."
},
"music": {
"type": "boolean",
"default": true,
"examples": [
true
],
"description": "Background music on or off. Default true."
},
"voice": {
"enum": [
"any",
"female",
"male"
],
"type": "string",
"default": "any",
"examples": [
"any"
],
"description": "Voice preference. Default any."
},
"language": {
"type": "string",
"examples": [
"hu",
"pl"
],
"description": "Audio language as a BCP-47 code (en, es, pt-BR, fr, it, ja, hi, ko, hu, or any other such as pl). Always pass the language the user writes in. If the language is not available the answer says so and gives the closest live one. hi, ko and hu are beta."
},
"length_min": {
"type": "integer",
"default": 10,
"maximum": 60,
"minimum": 3,
"examples": [
5,
10,
20
],
"description": "Length in minutes, 3 to 60. Default 10 when the user gives none."
}
},
"additionalProperties": false
}Use this when the user wants sleep audio: a bedtime wind-down, a quiet evening session, or a short nap. Plays a guided sleep session. Not for medical questions, emergencies or a crisis. Not for general chat about meditation. Not for a daytime break, focus or breathing exercises: use find_focus or find_breathing for those.
| Argument | Type | Description |
|---|---|---|
| voice | string | Voice preference. Default any. |
| language | string | Audio language as a BCP-47 code (en, es, pt-BR, fr, it, ja, hi, ko, hu, or any other such as pl). Always pass the language the user writes in. If the language is not available the answer says so and gives the closest live one. hi, ko and hu are beta. |
| length_min | integer | Length in minutes, 3 to 60. Default 10 when the user gives none. |
{
"type": "object",
"required": [],
"properties": {
"voice": {
"enum": [
"any",
"female",
"male"
],
"type": "string",
"default": "any",
"examples": [
"any"
],
"description": "Voice preference. Default any."
},
"language": {
"type": "string",
"examples": [
"hu",
"pl"
],
"description": "Audio language as a BCP-47 code (en, es, pt-BR, fr, it, ja, hi, ko, hu, or any other such as pl). Always pass the language the user writes in. If the language is not available the answer says so and gives the closest live one. hi, ko and hu are beta."
},
"length_min": {
"type": "integer",
"default": 10,
"maximum": 60,
"minimum": 3,
"examples": [
5,
10,
20
],
"description": "Length in minutes, 3 to 60. Default 10 when the user gives none."
}
},
"additionalProperties": false
}Use this when the user wants something this assistant does not do itself, such as their library, a team, challenges or live events, and a 2hives.com link will help. Not for medical questions, emergencies or a crisis. Not for general chat about meditation.
| Argument | Type | Description |
|---|---|---|
| feature | string | Which part of 2hives: app, library, progress, team, challenges, schedule, groups, live, personal, account, business (a business owner: free listing and sponsoring) or plans (team and company plans, handed off to 2hives.com). Anything else opens the home page. |
{
"type": "object",
"required": [],
"properties": {
"feature": {
"type": "string",
"examples": [
"library",
"business"
],
"description": "Which part of 2hives: app, library, progress, team, challenges, schedule, groups, live, personal, account, business (a business owner: free listing and sponsoring) or plans (team and company plans, handed off to 2hives.com). Anything else opens the home page."
}
},
"additionalProperties": false
}Use this when the user asks what 2hives keeps about them, or wants a copy of their 2hives data. Not for medical questions, emergencies or a crisis. Not for anything about the assistant's own records.
| Argument | Type | Description |
|---|---|---|
| tap | string | The token from keep_progress for this conversation; leave empty if there is none. |
{
"type": "object",
"required": [],
"properties": {
"tap": {
"type": "string",
"default": "",
"examples": [
""
],
"description": "The token from keep_progress for this conversation; leave empty if there is none."
}
},
"additionalProperties": false
}Use this when the user asks whether their personal session is ready, with the job id from create_personal_session. Not for medical questions, emergencies or a crisis. Not for general chat about meditation.
| Argument | Type | Description |
|---|---|---|
| job_id* | string | The job id from create_personal_session. |
{
"type": "object",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"examples": [
"7f3a9c"
],
"description": "The job id from create_personal_session."
}
},
"additionalProperties": false
}Use this when an adult asks how a local business or community group can appear on 2hives, or what the sponsor packages are. Not for medical questions, emergencies or a crisis. Not for general chat about meditation. Not for personal listening.
| Argument | Type | Description |
|---|---|---|
| country | string | Optional ISO country code of the business. |
{
"type": "object",
"required": [],
"properties": {
"country": {
"type": "string",
"examples": [
"AU"
],
"description": "Optional ISO country code of the business."
}
},
"additionalProperties": false
}Use this when an adult wants to buy or upgrade something, such as a team plan or a business package. Not for medical questions, emergencies or a crisis. Not for general chat about meditation. Never takes payment: it only returns a link.
| Argument | Type | Description |
|---|---|---|
| tap | string | The 18+ tap token returned by keep_progress for this conversation; leave empty if there is none. |
| plan | string | Which option. |
{
"type": "object",
"required": [],
"properties": {
"tap": {
"type": "string",
"default": "",
"examples": [
""
],
"description": "The 18+ tap token returned by keep_progress for this conversation; leave empty if there is none."
},
"plan": {
"enum": [
"starter",
"company",
"sponsor",
"ongoing",
"business_package"
],
"type": "string",
"examples": [
"starter"
],
"description": "Which option."
}
},
"additionalProperties": false
}Use this when the user wants to join the listening challenge. Not for medical questions, emergencies or a crisis. Not for general chat about meditation.
| Argument | Type | Description |
|---|---|---|
| tap | string | The token from keep_progress for this conversation; leave empty if there is none. |
| edition | string | The challenge edition. Leave out to join the one that is open. |
| timezone | string | The user's IANA time zone, if known. Default UTC. |
{
"type": "object",
"required": [],
"properties": {
"tap": {
"type": "string",
"default": "",
"examples": [
""
],
"description": "The token from keep_progress for this conversation; leave empty if there is none."
},
"edition": {
"type": "string",
"examples": [
"2026-12-large"
],
"description": "The challenge edition. Leave out to join the one that is open."
},
"timezone": {
"type": "string",
"examples": [
"Australia/Melbourne"
],
"description": "The user's IANA time zone, if known. Default UTC."
}
},
"additionalProperties": false
}Use this when the user wants to join a live group session by name or id, for example one found with find_group_nearby. Not for medical questions, emergencies or a crisis. Not for general chat about meditation.
| Argument | Type | Description |
|---|---|---|
| tap | string | The token from keep_progress for this conversation; leave empty if there is none. |
| event_id* | string | The group's id from find_group_nearby. |
{
"type": "object",
"required": [
"event_id"
],
"properties": {
"tap": {
"type": "string",
"default": "",
"examples": [
""
],
"description": "The token from keep_progress for this conversation; leave empty if there is none."
},
"event_id": {
"type": "string",
"examples": [
"together-weekly"
],
"description": "The group's id from find_group_nearby."
}
},
"additionalProperties": false
}Use this when the user has an invite code or link for a 2hives team and wants to join it. Not for medical questions, emergencies or a crisis. Not for general chat about meditation.
| Argument | Type | Description |
|---|---|---|
| tap | string | The token from keep_progress for this conversation; leave empty if there is none. |
| code* | string | The invite code, or the whole invite link. |
{
"type": "object",
"required": [
"code"
],
"properties": {
"tap": {
"type": "string",
"default": "",
"examples": [
""
],
"description": "The token from keep_progress for this conversation; leave empty if there is none."
},
"code": {
"type": "string",
"examples": [
"https://2hives.com/t/AbC123"
],
"description": "The invite code, or the whole invite link."
}
},
"additionalProperties": false
}Use this when the person says they are 18 or over and wants to keep their progress, or when another tool says it needs the adult tap. No 2hives sign-in is needed. It returns a tap token to pass to the tools that take one; never call it on your own. Not for medical questions, emergencies or a crisis. Not before the user has tapped; listening never needs it.
| Argument | Type | Description |
|---|---|---|
| confirm | boolean | True when the person said yes, keep my progress. |
| adult_confirmed | boolean | True when the person confirmed they are 18 or over. Required on this host. |
{
"type": "object",
"required": [],
"properties": {
"confirm": {
"type": "boolean",
"default": false,
"examples": [
true
],
"description": "True when the person said yes, keep my progress."
},
"adult_confirmed": {
"type": "boolean",
"default": false,
"examples": [
true
],
"description": "True when the person confirmed they are 18 or over. Required on this host."
}
},
"additionalProperties": false
}Use this when the user clearly asks to leave their team. Not for medical questions, emergencies or a crisis. Not for general chat about meditation.
| Argument | Type | Description |
|---|---|---|
| tap | string | The token from keep_progress for this conversation; leave empty if there is none. |
| confirm | boolean | true only after the user agreed to leave. |
{
"type": "object",
"required": [],
"properties": {
"tap": {
"type": "string",
"default": "",
"examples": [
""
],
"description": "The token from keep_progress for this conversation; leave empty if there is none."
},
"confirm": {
"type": "boolean",
"examples": [
true
],
"description": "true only after the user agreed to leave."
}
},
"additionalProperties": false
}Use this when the user says how the session they just finished was: they liked it, or it was not for them. Not for medical questions, emergencies or a crisis. Not for general chat about meditation.
| Argument | Type | Description |
|---|---|---|
| tap | string | The token from keep_progress for this conversation; leave empty if there is none. |
| value | string | like or dislike. Default like. |
{
"type": "object",
"required": [],
"properties": {
"tap": {
"type": "string",
"default": "",
"examples": [
""
],
"description": "The token from keep_progress for this conversation; leave empty if there is none."
},
"value": {
"enum": [
"like",
"dislike"
],
"type": "string",
"examples": [
"like"
],
"description": "like or dislike. Default like."
}
},
"additionalProperties": false
}Use this when the user asks about the listening challenge or any challenge they could join. Not for medical questions, emergencies or a crisis. Not for general chat about meditation.
| Argument | Type | Description |
|---|---|---|
| tap | string | The token from keep_progress for this conversation; leave empty if there is none. |
| timezone | string | The user's IANA time zone, if known. Default UTC. |
{
"type": "object",
"required": [],
"properties": {
"tap": {
"type": "string",
"default": "",
"examples": [
""
],
"description": "The token from keep_progress for this conversation; leave empty if there is none."
},
"timezone": {
"type": "string",
"examples": [
"Australia/Melbourne"
],
"description": "The user's IANA time zone, if known. Default UTC."
}
},
"additionalProperties": false
}Use this when the user asks about their badges, how many days they listened this month or what they have earned. Not for medical questions, emergencies or a crisis. Not for general chat about meditation.
| Argument | Type | Description |
|---|---|---|
| tap | string | The token from keep_progress for this conversation; leave empty if there is none. |
| timezone | string | The user's IANA time zone, if known. Default UTC. |
{
"type": "object",
"required": [],
"properties": {
"tap": {
"type": "string",
"default": "",
"examples": [
""
],
"description": "The token from keep_progress for this conversation; leave empty if there is none."
},
"timezone": {
"type": "string",
"examples": [
"Australia/Melbourne"
],
"description": "The user's IANA time zone, if known. Default UTC."
}
},
"additionalProperties": false
}Use this when the user asks what they listened to recently or how much time they have listened. Not for medical questions, emergencies or a crisis. Not for general chat about meditation.
| Argument | Type | Description |
|---|---|---|
| tap | string | The token from keep_progress for this conversation; leave empty if there is none. |
| limit | integer | How many sessions to return. Default 10. |
{
"type": "object",
"required": [],
"properties": {
"tap": {
"type": "string",
"default": "",
"examples": [
""
],
"description": "The token from keep_progress for this conversation; leave empty if there is none."
},
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"examples": [
5
],
"description": "How many sessions to return. Default 10."
}
},
"additionalProperties": false
}Use this when the user asks for the sessions they saved, their favourites or their own list. Not for medical questions, emergencies or a crisis. Not for general chat about meditation.
| Argument | Type | Description |
|---|---|---|
| tap | string | The token from keep_progress for this conversation; leave empty if there is none. |
{
"type": "object",
"required": [],
"properties": {
"tap": {
"type": "string",
"default": "",
"examples": [
""
],
"description": "The token from keep_progress for this conversation; leave empty if there is none."
}
},
"additionalProperties": false
}Use this when the user asks how many days they listened this month, how many sessions they have played or what their badges are, after they chose to keep their progress. Not for medical questions, emergencies or a crisis. Not for people who did not choose to keep their progress.
| Argument | Type | Description |
|---|---|---|
| tap | string | The token from keep_progress for this conversation; leave empty if there is none. |
{
"type": "object",
"required": [],
"properties": {
"tap": {
"type": "string",
"default": "",
"examples": [
""
],
"description": "The token from keep_progress for this conversation; leave empty if there is none."
}
},
"additionalProperties": false
}Use this when the user chooses one of the sessions found with find_sessions, or asks to play a named 2hives session by its id. Not for medical questions, emergencies or a crisis. Not for general chat about meditation.
| Argument | Type | Description |
|---|---|---|
| tap | string | The token from keep_progress for this conversation; leave empty if there is none. |
| session_id* | string | The session id returned by find_sessions or create_personal_session. |
{
"type": "object",
"required": [
"session_id"
],
"properties": {
"tap": {
"type": "string",
"default": "",
"examples": [
""
],
"description": "The token from keep_progress for this conversation; leave empty if there is none."
},
"session_id": {
"type": "string",
"examples": [
"2h-sleep-10-en"
],
"description": "The session id returned by find_sessions or create_personal_session."
}
},
"additionalProperties": false
}Use this when the user gives stars for a session they just heard, with an optional fixed reason. Not for medical questions, emergencies or a crisis. Not for free-text comments.
| Argument | Type | Description |
|---|---|---|
| chip | string | An optional fixed reason: voice, length, music or pace. Default none. |
| stars* | integer | Stars from 1 to 5. |
| session_id* | string | The session id that was played. |
{
"type": "object",
"required": [
"session_id",
"stars"
],
"properties": {
"chip": {
"enum": [
"none",
"voice",
"length",
"music",
"pace"
],
"type": "string",
"default": "none",
"examples": [
"none"
],
"description": "An optional fixed reason: voice, length, music or pace. Default none."
},
"stars": {
"type": "integer",
"maximum": 5,
"minimum": 1,
"examples": [
5
],
"description": "Stars from 1 to 5."
},
"session_id": {
"type": "string",
"examples": [
"breath-10-en"
],
"description": "The session id that was played."
}
},
"additionalProperties": false
}Use this when the user wants to carry on with the session they stopped part-way, or asks where they left off. Not for medical questions, emergencies or a crisis. Not for general chat about meditation.
| Argument | Type | Description |
|---|---|---|
| tap | string | The token from keep_progress for this conversation; leave empty if there is none. |
{
"type": "object",
"required": [],
"properties": {
"tap": {
"type": "string",
"default": "",
"examples": [
""
],
"description": "The token from keep_progress for this conversation; leave empty if there is none."
}
},
"additionalProperties": false
}Use this when the user wants to keep a session to come back to: save this, add it to my list, favourite it. Not for medical questions, emergencies or a crisis. Not for general chat about meditation.
| Argument | Type | Description |
|---|---|---|
| tap | string | The token from keep_progress for this conversation; leave empty if there is none. |
| language | string | Audio language as a BCP-47 code (en, es, pt-BR, fr, it, ja, hi, ko, hu, or any other such as pl). Always pass the language the user writes in. If the language is not available the answer says so and gives the closest live one. hi, ko and hu are beta. |
| session_id* | string | The session id from find_sessions or play_session. |
{
"type": "object",
"required": [
"session_id"
],
"properties": {
"tap": {
"type": "string",
"default": "",
"examples": [
""
],
"description": "The token from keep_progress for this conversation; leave empty if there is none."
},
"language": {
"type": "string",
"examples": [
"hu",
"pl"
],
"description": "Audio language as a BCP-47 code (en, es, pt-BR, fr, it, ja, hi, ko, hu, or any other such as pl). Always pass the language the user writes in. If the language is not available the answer says so and gives the closest live one. hi, ko and hu are beta."
},
"session_id": {
"type": "string",
"examples": [
"course-breath-1-notice-the-breath"
],
"description": "The session id from find_sessions or play_session."
}
},
"additionalProperties": false
}Use this when the user wants a reminder or a calendar entry for a session at a time of day: tonight at 9:30, every evening. Not for medical questions, emergencies or a crisis. Not for general chat about meditation.
| Argument | Type | Description |
|---|---|---|
| day | string | Date as YYYY-MM-DD, today or tomorrow. Default the next time it is that time. |
| tap | string | The token from keep_progress for this conversation; leave empty if there is none. |
| boolean | Also send one reminder mail. Only works with a linked 2hives account. | |
| time | string | Time of day, 24-hour HH:MM. Default 21:00. |
| repeat | string | once or daily. Default once. |
| timezone | string | The user's IANA time zone, if known. Default UTC. |
{
"type": "object",
"required": [],
"properties": {
"day": {
"type": "string",
"examples": [
"2026-12-22"
],
"description": "Date as YYYY-MM-DD, today or tomorrow. Default the next time it is that time."
},
"tap": {
"type": "string",
"default": "",
"examples": [
""
],
"description": "The token from keep_progress for this conversation; leave empty if there is none."
},
"mail": {
"type": "boolean",
"examples": [
false
],
"description": "Also send one reminder mail. Only works with a linked 2hives account."
},
"time": {
"type": "string",
"examples": [
"21:30"
],
"description": "Time of day, 24-hour HH:MM. Default 21:00."
},
"repeat": {
"enum": [
"once",
"daily"
],
"type": "string",
"examples": [
"daily"
],
"description": "once or daily. Default once."
},
"timezone": {
"type": "string",
"examples": [
"Australia/Melbourne"
],
"description": "The user's IANA time zone, if known. Default UTC."
}
},
"additionalProperties": false
}Use this when the user wants to change how their sessions sound or are chosen: a voice, a language, a length, the music layer on or off, or Quiet mode. Not for medical questions, emergencies or a crisis. Not for general chat about meditation.
| Argument | Type | Description |
|---|---|---|
| tap | string | The token from keep_progress for this conversation; leave empty if there is none. |
| music | string | The music layer on or off. |
| language | string | Audio language as a BCP-47 code (en, es, pt-BR, fr, it, ja, hi, ko, hu, or any other such as pl). Always pass the language the user writes in. If the language is not available the answer says so and gives the closest live one. hi, ko and hu are beta. |
| voice_id | string | A voice id as returned by find_sessions. |
| length_min | integer | Preferred session length in minutes. |
| quiet_mode | boolean | Quiet mode hides badges and progress. |
{
"type": "object",
"required": [],
"properties": {
"tap": {
"type": "string",
"default": "",
"examples": [
""
],
"description": "The token from keep_progress for this conversation; leave empty if there is none."
},
"music": {
"enum": [
"on",
"off"
],
"type": "string",
"examples": [
"off"
],
"description": "The music layer on or off."
},
"language": {
"type": "string",
"examples": [
"hu",
"pl"
],
"description": "Audio language as a BCP-47 code (en, es, pt-BR, fr, it, ja, hi, ko, hu, or any other such as pl). Always pass the language the user writes in. If the language is not available the answer says so and gives the closest live one. hi, ko and hu are beta."
},
"voice_id": {
"type": "string",
"examples": [
"nova"
],
"description": "A voice id as returned by find_sessions."
},
"length_min": {
"type": "integer",
"maximum": 180,
"minimum": 5,
"examples": [
20
],
"description": "Preferred session length in minutes."
},
"quiet_mode": {
"type": "boolean",
"examples": [
true
],
"description": "Quiet mode hides badges and progress."
}
},
"additionalProperties": false
}Use this when an adult asks to talk to the guide live, one to one, by voice, instead of playing a recorded session. Not for medical questions, emergencies or a crisis. Not for general chat about meditation. Not for choosing a recorded session (use find_sessions).
| Argument | Type | Description |
|---|---|---|
| tap | string | The 18+ tap token returned by keep_progress for this conversation; leave empty if there is none. |
| mood | string | What the conversation is for. |
| topic | string | Optional, in the user''s own words, up to 200 characters. |
{
"type": "object",
"required": [],
"properties": {
"tap": {
"type": "string",
"default": "",
"examples": [
""
],
"description": "The 18+ tap token returned by keep_progress for this conversation; leave empty if there is none."
},
"mood": {
"enum": [
"calm",
"sleep",
"focus",
"break"
],
"type": "string",
"examples": [
"calm"
],
"description": "What the conversation is for."
},
"topic": {
"type": "string",
"examples": [
"letting go of a hard day"
],
"description": "Optional, in the user''s own words, up to 200 characters."
}
},
"additionalProperties": false
}Use this when the user wants a gentle seven-night wind-down routine and gives, or can give, a usual bedtime and how many minutes they would like each evening (5, 10, 20 or 30). Not for medical questions, emergencies or a crisis. Not for general chat about meditation.
| Argument | Type | Description |
|---|---|---|
| tap | string | The 18+ tap token returned by keep_progress for this conversation; leave empty if there is none. |
| today | string | The listener's local date, YYYY-MM-DD. |
| bedtime* | string | The usual bedtime, 24-hour HH:MM, for example 22:00. |
| language | string | Audio language as a BCP-47 code. |
| length_min* | integer | Minutes for each evening, 5, 10, 20 or 30. |
{
"type": "object",
"required": [
"bedtime",
"length_min"
],
"properties": {
"tap": {
"type": "string",
"default": "",
"examples": [
""
],
"description": "The 18+ tap token returned by keep_progress for this conversation; leave empty if there is none."
},
"today": {
"type": "string",
"examples": [
"2026-11-11"
],
"description": "The listener's local date, YYYY-MM-DD."
},
"bedtime": {
"type": "string",
"examples": [
"22:00"
],
"description": "The usual bedtime, 24-hour HH:MM, for example 22:00."
},
"language": {
"type": "string",
"examples": [
"en"
],
"description": "Audio language as a BCP-47 code."
},
"length_min": {
"enum": [
5,
10,
20,
30
],
"type": "integer",
"examples": [
10
],
"description": "Minutes for each evening, 5, 10, 20 or 30."
}
},
"additionalProperties": false
}Use this when the user wants to try 2hives with a work team or company and gives, or can give, a company name and work email. Not for medical questions, emergencies or a crisis. Not for general chat about meditation. Not for personal listening.
| Argument | Type | Description |
|---|---|---|
| tap | string | The 18+ tap token returned by keep_progress for this conversation; leave empty if there is none. |
| company* | string | Company name. |
| country | string | Country name or ISO code. |
| team_size | integer | Number of people. |
| work_email* | string | Work email address. |
{
"type": "object",
"required": [
"company",
"work_email"
],
"properties": {
"tap": {
"type": "string",
"default": "",
"examples": [
""
],
"description": "The 18+ tap token returned by keep_progress for this conversation; leave empty if there is none."
},
"company": {
"type": "string",
"examples": [
"Acme Pty Ltd"
],
"description": "Company name."
},
"country": {
"type": "string",
"examples": [
"AU"
],
"description": "Country name or ISO code."
},
"team_size": {
"type": "integer",
"minimum": 1,
"examples": [
40
],
"description": "Number of people."
},
"work_email": {
"type": "string",
"examples": [
"[email protected]"
],
"description": "Work email address."
}
},
"additionalProperties": false
}Use this when the user asks how their team is doing. Not for medical questions, emergencies or a crisis. Not for general chat about meditation.
| Argument | Type | Description |
|---|---|---|
| tap | string | The token from keep_progress for this conversation; leave empty if there is none. |
{
"type": "object",
"required": [],
"properties": {
"tap": {
"type": "string",
"default": "",
"examples": [
""
],
"description": "The token from keep_progress for this conversation; leave empty if there is none."
}
},
"additionalProperties": false
}Use this when the user has started 7 calm nights and asks for tonight's session, or to continue their sleep plan. Not for medical questions, emergencies or a crisis. Not for general chat about meditation.
| Argument | Type | Description |
|---|---|---|
| tap | string | The 18+ tap token returned by keep_progress for this conversation; leave empty if there is none. |
| today | string | The listener's local date, YYYY-MM-DD. |
| language | string | Audio language as a BCP-47 code. |
{
"type": "object",
"required": [],
"properties": {
"tap": {
"type": "string",
"default": "",
"examples": [
""
],
"description": "The 18+ tap token returned by keep_progress for this conversation; leave empty if there is none."
},
"today": {
"type": "string",
"examples": [
"2026-11-11"
],
"description": "The listener's local date, YYYY-MM-DD."
},
"language": {
"type": "string",
"examples": [
"en"
],
"description": "Audio language as a BCP-47 code."
}
},
"additionalProperties": false
}Use this when the user wants a session taken off their saved list. Not for medical questions, emergencies or a crisis. Not for general chat about meditation.
| Argument | Type | Description |
|---|---|---|
| tap | string | The token from keep_progress for this conversation; leave empty if there is none. |
| session_id* | string | The session id from find_sessions or play_session. |
{
"type": "object",
"required": [
"session_id"
],
"properties": {
"tap": {
"type": "string",
"default": "",
"examples": [
""
],
"description": "The token from keep_progress for this conversation; leave empty if there is none."
},
"session_id": {
"type": "string",
"examples": [
"course-breath-1-notice-the-breath"
],
"description": "The session id from find_sessions or play_session."
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 13, 2026.